Rešitev LAV 22
Умови завершення
naloga 1
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <time.h>
void generiraj(float *t,int n)
{
int i;
for (i=0;i<n;i++)
t[i] = rand()/100;
}
float iskanje_min(float *t,int n)
{
int i;
float p=t[0];
for (i=1;i<n;i++)
if (t[i]<p)
p = t[i];
return p;
}
int pozicija_min(float *t,int n)
{
int i,j=0;
float p=t[0];
for (i=1;i<n;i++)
if (t[i]<p) {
p = t[i]; j=i;}
return j;
}
float vsota(float *t,int n)
{
int i;
float v=0;
for (i=0;i<n;i++)
v += t[i];
return v;
}
float povprecje(float *t,int n)
{
return vsota(t,n)/n;
}
void urejanje_premene(float *x, int n)
{
int i,j;
float pom;
for (i=0;i<n-1;i++)
for (j=n-1;j>0;j--)
{
if (x[j-1]>x[j])
{
pom=x[j-1];
x[j-1]=x[j];
x[j]=pom;
}
}
}
int main(void)
{
char c;
float t[10000];
struct dostime_t cas1,cas2;
long cas_m1,cas_m2;
short d=0;
srand(time(NULL));
do
{
printf("*************MENI*************\n");
printf("1. generiranje nakljucnih stevil\n");
printf("2. najmanjsi element\n");
printf("3. lokacija najmanjsega elementa\n");
printf("4. vsota vseh elementov\n");
printf("5. povprecna vrednost\n");
printf("6. urejanje s premenami\n");
printf("0. izhod\n");
printf("Izbira> ");
scanf("%c",&c);
fflush(stdin);
switch (c)
{
case '1':
d = 1;
generiraj(t,10000);
break;
case '2':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
printf("Najmanjsa vrednost v tabeli je %f\n",iskanje_min(t,10000));
break;
case '3':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
printf("Najmanjsa vrednost v tabeli se nahaja na poziciji %d\n",pozicija_min(t,10000));
break;
case '4':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
printf("Vsota vseh elementov v tabeli je %f\n",vsota(t,10000));
break;
case '5':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
printf("Povprecje elementov v tabeli je %f\n",povprecje(t,10000));
break;
case '6':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
_dos_gettime(&cas1);
urejanje_premene(t,10000);
_dos_gettime(&cas2);
cas_m1 = cas1.hsecond+cas1.second*100+cas1.minute*6000+cas1.hour*360000;
cas_m2 = cas2.hsecond+cas2.second*100+cas2.minute*6000+cas2.hour*360000;
printf("Urejanje je trajalo %ld milisekund\n",cas_m2-cas_m1);
break;
}
} while (c != '0');
return 0;
}
naloga 2
#include <stdio.h>
#include <stdlib.h>
void generiraj(int *t,int n)
{
int i,j,a,p;
for (i=0;i<n;i++)
{
do
{
p = 0;
a = rand() %30;
for (j=0;j<=i;j++)
{
if (a == t[j])
{
p=1;
break;
}
}
} while (p!=0);
t[i] = a;
}
}
void urejanje_premene(int *x, int n)
{
int i,j,pom;
for (i=0;i<n-1;i++)
for (j=n-1;j>0;j--)
{
if (x[j-1]>x[j])
{
pom=x[j-1];
x[j-1]=x[j];
x[j]=pom;
}
}
}
int binarno_iskanje(int *t, int n, int pod)
{
int levo, desno, sredina;
levo = 0;
desno = n - 1;
while (levo <= desno)
{
sredina = (levo + desno) / 2;
if (pod == t[sredina])
{
return sredina;
}
else if (pod > t[sredina])
levo = sredina + 1;
else
desno = sredina - 1;
}
return -1;
}
void izpis(int *t,int n)
{
int i;
for (i=0;i<n;i++)
printf("%d ",t[i]);
printf("\n");
}
int main(void)
{
int t[20];
int p;
char c;
do
{
printf("*****************MENI**************\n");
printf("1. generiranje podatkov\n");
printf("2. izpis podatkov\n");
printf("3. urejanje s premenami\n");
printf("4. iskanje lokacije podatka\n");
printf("0. izhod\n");
printf("Izbira> ");
scanf("%c",&c);
fflush(stdin);
switch(c)
{
case '1': generiraj(t,20); break;
case '2': izpis(t,20); break;
case '3': urejanje_premene(t,20); break;
case '4': printf("Vnesi stevilo za iskanje: ");
scanf("%d",&p);
printf("Stevilo se nahaja na poziciji %d", binarno_iskanje(t,20,p));
break;
}
} while (c!='0');
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <time.h>
void generiraj(float *t,int n)
{
int i;
for (i=0;i<n;i++)
t[i] = rand()/100;
}
float iskanje_min(float *t,int n)
{
int i;
float p=t[0];
for (i=1;i<n;i++)
if (t[i]<p)
p = t[i];
return p;
}
int pozicija_min(float *t,int n)
{
int i,j=0;
float p=t[0];
for (i=1;i<n;i++)
if (t[i]<p) {
p = t[i]; j=i;}
return j;
}
float vsota(float *t,int n)
{
int i;
float v=0;
for (i=0;i<n;i++)
v += t[i];
return v;
}
float povprecje(float *t,int n)
{
return vsota(t,n)/n;
}
void urejanje_premene(float *x, int n)
{
int i,j;
float pom;
for (i=0;i<n-1;i++)
for (j=n-1;j>0;j--)
{
if (x[j-1]>x[j])
{
pom=x[j-1];
x[j-1]=x[j];
x[j]=pom;
}
}
}
int main(void)
{
char c;
float t[10000];
struct dostime_t cas1,cas2;
long cas_m1,cas_m2;
short d=0;
srand(time(NULL));
do
{
printf("*************MENI*************\n");
printf("1. generiranje nakljucnih stevil\n");
printf("2. najmanjsi element\n");
printf("3. lokacija najmanjsega elementa\n");
printf("4. vsota vseh elementov\n");
printf("5. povprecna vrednost\n");
printf("6. urejanje s premenami\n");
printf("0. izhod\n");
printf("Izbira> ");
scanf("%c",&c);
fflush(stdin);
switch (c)
{
case '1':
d = 1;
generiraj(t,10000);
break;
case '2':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
printf("Najmanjsa vrednost v tabeli je %f\n",iskanje_min(t,10000));
break;
case '3':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
printf("Najmanjsa vrednost v tabeli se nahaja na poziciji %d\n",pozicija_min(t,10000));
break;
case '4':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
printf("Vsota vseh elementov v tabeli je %f\n",vsota(t,10000));
break;
case '5':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
printf("Povprecje elementov v tabeli je %f\n",povprecje(t,10000));
break;
case '6':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
_dos_gettime(&cas1);
urejanje_premene(t,10000);
_dos_gettime(&cas2);
cas_m1 = cas1.hsecond+cas1.second*100+cas1.minute*6000+cas1.hour*360000;
cas_m2 = cas2.hsecond+cas2.second*100+cas2.minute*6000+cas2.hour*360000;
printf("Urejanje je trajalo %ld milisekund\n",cas_m2-cas_m1);
break;
}
} while (c != '0');
return 0;
}
naloga 2
#include <stdio.h>
#include <stdlib.h>
void generiraj(int *t,int n)
{
int i,j,a,p;
for (i=0;i<n;i++)
{
do
{
p = 0;
a = rand() %30;
for (j=0;j<=i;j++)
{
if (a == t[j])
{
p=1;
break;
}
}
} while (p!=0);
t[i] = a;
}
}
void urejanje_premene(int *x, int n)
{
int i,j,pom;
for (i=0;i<n-1;i++)
for (j=n-1;j>0;j--)
{
if (x[j-1]>x[j])
{
pom=x[j-1];
x[j-1]=x[j];
x[j]=pom;
}
}
}
int binarno_iskanje(int *t, int n, int pod)
{
int levo, desno, sredina;
levo = 0;
desno = n - 1;
while (levo <= desno)
{
sredina = (levo + desno) / 2;
if (pod == t[sredina])
{
return sredina;
}
else if (pod > t[sredina])
levo = sredina + 1;
else
desno = sredina - 1;
}
return -1;
}
void izpis(int *t,int n)
{
int i;
for (i=0;i<n;i++)
printf("%d ",t[i]);
printf("\n");
}
int main(void)
{
int t[20];
int p;
char c;
do
{
printf("*****************MENI**************\n");
printf("1. generiranje podatkov\n");
printf("2. izpis podatkov\n");
printf("3. urejanje s premenami\n");
printf("4. iskanje lokacije podatka\n");
printf("0. izhod\n");
printf("Izbira> ");
scanf("%c",&c);
fflush(stdin);
switch(c)
{
case '1': generiraj(t,20); break;
case '2': izpis(t,20); break;
case '3': urejanje_premene(t,20); break;
case '4': printf("Vnesi stevilo za iskanje: ");
scanf("%d",&p);
printf("Stevilo se nahaja na poziciji %d", binarno_iskanje(t,20,p));
break;
}
} while (c!='0');
return 0;
}
Остання зміна: середу 26 лютого 2014 03:47 AM