Rešitev LAV 21
Teljesítési követelmények
naloga 1
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <time.h>
void generiraj(int *t,int n)
{
int i;
for (i=0;i<n;i++)
t[i] = rand();
}
int iskanje_min(int *t,int n)
{
int i,p=t[0];
for (i=1;i<n;i++)
if (t[i]<p)
p = t[i];
return p;
}
int pozicija_min(int *t,int n)
{
int i,j=0,p=t[0];
for (i=1;i<n;i++)
if (t[i]<p) {
p = t[i]; j=i;}
return j;
}
long vsota(int *t,int n)
{
int i;
long v=0;
for (i=0;i<n;i++)
v += t[i];
return v;
}
int povprecje(int *t,int n)
{
return vsota(t,n)/n;
}
void uredi_z_izbiranjem(int *t, int n)
{
int i,j;
int p,min;
for (i = 0;i < n-1; i++)
{
min = t[i];
p = i;
for (j=i+1; j<n; j++)
{
if (t[j] < min) {
p = j;
min = t[j];
}
}
t[p] = t[i];
t[i] = min;
}
}
void urejanje_vstavljanje(int *x,int n)
{
int i,j,pom;
for (i=1; i<n; i++)
{
pom=x[i]; j=i-1;
while ((pom > x[j]) && (j>=0))
{
x[j+1] = x[j];
j--;
}
x[j+1] = pom;
}
}
int main(void)
{
char c;
int 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 z izbiranjem\n");
printf("7. urejanje z vstavljanjem\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 %d\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 %ld\n",vsota(t,10000));
break;
case '5':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
printf("Povprecje elementov v tabeli je %d\n",povprecje(t,10000));
break;
case '6':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
_dos_gettime(&cas1);
uredi_z_izbiranjem(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;
case '7':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
_dos_gettime(&cas1);
urejanje_vstavljanje(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>
#include <time.h>
void generiraj(char *t,int n)
{
int i;
for (i=0;i<n;i++)
t[i] = rand()%26+65;
}
void uredi_z_izbiranjem(char *t, int n)
{
int i,j,p;
int min;
for (i = 0;i < n-1; i++)
{
min = t[i];
p = i;
for (j=i+1; j<n; j++)
{
if (t[j] < min) {
p = j;
min = t[j];
}
}
t[p] = t[i];
t[i] = min;
}
}
void urejanje_vstavljanje(char *x,int n)
{
int i,j;
char pom;
for (i=1; i<n; i++)
{
pom=x[i]; j=i-1;
while ((pom > x[j]) && (j>=0))
{
x[j+1] = x[j];
j--;
}
x[j+1] = pom;
}
}
void izpis(char *t,int n)
{
int i;
for (i=0;i<n;i++)
printf("%3c",t[i]);
}
int main(void)
{
char t[1000];
srand(time(NULL));
generiraj(t,1000);
uredi_z_izbiranjem(t,1000);
urejanje_vstavljanje(t,1000);
izpis(t,1000);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <time.h>
void generiraj(int *t,int n)
{
int i;
for (i=0;i<n;i++)
t[i] = rand();
}
int iskanje_min(int *t,int n)
{
int i,p=t[0];
for (i=1;i<n;i++)
if (t[i]<p)
p = t[i];
return p;
}
int pozicija_min(int *t,int n)
{
int i,j=0,p=t[0];
for (i=1;i<n;i++)
if (t[i]<p) {
p = t[i]; j=i;}
return j;
}
long vsota(int *t,int n)
{
int i;
long v=0;
for (i=0;i<n;i++)
v += t[i];
return v;
}
int povprecje(int *t,int n)
{
return vsota(t,n)/n;
}
void uredi_z_izbiranjem(int *t, int n)
{
int i,j;
int p,min;
for (i = 0;i < n-1; i++)
{
min = t[i];
p = i;
for (j=i+1; j<n; j++)
{
if (t[j] < min) {
p = j;
min = t[j];
}
}
t[p] = t[i];
t[i] = min;
}
}
void urejanje_vstavljanje(int *x,int n)
{
int i,j,pom;
for (i=1; i<n; i++)
{
pom=x[i]; j=i-1;
while ((pom > x[j]) && (j>=0))
{
x[j+1] = x[j];
j--;
}
x[j+1] = pom;
}
}
int main(void)
{
char c;
int 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 z izbiranjem\n");
printf("7. urejanje z vstavljanjem\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 %d\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 %ld\n",vsota(t,10000));
break;
case '5':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
printf("Povprecje elementov v tabeli je %d\n",povprecje(t,10000));
break;
case '6':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
_dos_gettime(&cas1);
uredi_z_izbiranjem(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;
case '7':
if (d==0)
{ printf("Najprej generiraj\n");
break;
}
_dos_gettime(&cas1);
urejanje_vstavljanje(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>
#include <time.h>
void generiraj(char *t,int n)
{
int i;
for (i=0;i<n;i++)
t[i] = rand()%26+65;
}
void uredi_z_izbiranjem(char *t, int n)
{
int i,j,p;
int min;
for (i = 0;i < n-1; i++)
{
min = t[i];
p = i;
for (j=i+1; j<n; j++)
{
if (t[j] < min) {
p = j;
min = t[j];
}
}
t[p] = t[i];
t[i] = min;
}
}
void urejanje_vstavljanje(char *x,int n)
{
int i,j;
char pom;
for (i=1; i<n; i++)
{
pom=x[i]; j=i-1;
while ((pom > x[j]) && (j>=0))
{
x[j+1] = x[j];
j--;
}
x[j+1] = pom;
}
}
void izpis(char *t,int n)
{
int i;
for (i=0;i<n;i++)
printf("%3c",t[i]);
}
int main(void)
{
char t[1000];
srand(time(NULL));
generiraj(t,1000);
uredi_z_izbiranjem(t,1000);
urejanje_vstavljanje(t,1000);
izpis(t,1000);
return 0;
}
Utolsó módosítás: 2014. február 26., szerda, 03:47