Rešitev LAV 23
Abschlussbedingungen
1. naloga
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void izpis(int *t,int n)
{
int i;
for (i=0;i<n;i++)
printf("%d ",t[i]);
printf("\n");
}
void sestej(int *t,int *t2,int *t3,int n)
{
int i,d=0;
int r=0;
for (i=n-1;i>=0;i--)
{
r = t[i]+t2[i]+d;
if (r >= 10)
{
t3[i] = r - 10;
d = 1;
}
else
{
t3[i]= r;
d = 0;
}
}
}
int main(void)
{
char p[20];
int t1[20];
int t2[20];
int t3[20];
int i,j;
printf("Vnesi stevilo: ");
fgets(p,20,stdin);
p[strlen(p)-1]='\0';
for (i=0;i<20;i++)
{
t1[i]=0;t2[i]=0;
}
for (i=strlen(p)-1,j=19;i>=0;i--,j--)
t1[j]=p[i]-48;
printf("Vnesi stevilo: ");
fgets(p,20,stdin);
p[strlen(p)-1]='\0';
for (i=strlen(p)-1,j=19;i>=0;i--,j--)
t2[j]=p[i]-48;
izpis(t1,20);
izpis(t2,20);
sestej(t1,t2,t3,20);
izpis(t3,20);
return 0;
}
2. naloga
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <dos.h>
void generiraj_nakljucna(char t[20000])
{
int i;
for (i=0;i<20000;i++)
if (rand()%2 == 0)
t[i] = rand()%26+65;
else
t[i] = rand()%26+97;
}
void generiraj_narascajoce(char t[20000])
{
int i;
char p='a';
for (i=0;i<20000;i++)
{
t[i] = p;
if (i%100==0)
p++;
}
}
void generiraj_padajoce(char t[20000])
{
int i;
char p='z';
for (i=0;i<20000;i++)
{
t[i] = p;
if (i%100==0)
p--;
}
}
void uredi_z_izbiranjem(char *a, int n)
{
int i,j;
int p;
char max;
for (i = 0;i < n-1; i++)
{
max = a[i];
p = i;
for (j=i+1; j<n; j++)
{
if (a[j] < max)
{
p = j;
max = a[j];
}
}
a[p] = a[i];
a[i] = max;
}
}
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 urejanje_premene(char *x, int n)
{
int i,j;
char 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 t[20000];
char c;
struct dostime_t cas1,cas2;
long cas_m1,cas_m2;
srand(time(NULL));
do
{
printf("*******MENI*******\n");
printf("1. generiranje nakljucnih crk\n");
printf("2. generiranje narascajocih crk\n");
printf("3. generiranje padajocih crk\n");
printf("4. urejanje po metodi z izbiranjem\n");
printf("5. urejanje po metodi z vstavljanjem\n");
printf("6. urejanje po metodi s premenami\n");
printf("0. izhod\n\nIzbira> ");
scanf("%c",&c);
fflush(stdin);
switch (c)
{
case '1':
generiraj_nakljucna(t);
break;
case '2':
generiraj_narascajoce(t);
break;
case '3':
generiraj_padajoce(t);
break;
case '4':
_dos_gettime(&cas1);
uredi_z_izbiranjem(t, 20000);
_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 '5':
_dos_gettime(&cas1);
urejanje_vstavljanje(t, 20000);
_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 '6':
_dos_gettime(&cas1);
urejanje_premene(t, 20000);
_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;
}
3. naloga
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void vnos(int t[5][9])
{
int i,j;
for (i=0; i<5;i++)
for (j=0;j<9;j++)
t[i][j] = rand()%41+25;
}
void izpis(int t[5][9])
{
int i,j;
for (i=0; i<5;i++)
{
for (j=0;j<9;j++)
printf("%d ",t[i][j]);
printf("\n");
}
}
int vsota_vrstica(int t[5][9],int v)
{
int i,j;
j=0;
for (i=0;i<9;i++)
j+=t[v][i];
return j;
}
int vsota_stolpec(int t[5][9],int s)
{
int i,j;
j=0;
for (i=0;i<5;i++)
j+=t[i][s];
return j;
}
int main(void)
{
char c;
int t[5][9];
int v;
srand(time(NULL));
do
{
printf("******MENI*******\n");
printf("1. generiraj\n");
printf("2. izpis\n");
printf("3. izpis vsote v vrstici\n");
printf("4. izpis vsote v posameznem stolpcu\n");
printf("0. izhod\n\nIzbira> ");
scanf("%c",&c);
fflush(stdin);
switch (c)
{
case '1':
vnos(t);
break;
case '2':
izpis(t);
break;
case '3':
printf("Vnesi vrstico: ");
scanf("%d",&v);
printf("Vsota elementov v vrstici %d je %d\n",v,vsota_vrstica(t,v));
fflush(stdin);
break;
case '4':
printf("Vnesi stolpec: ");
scanf("%d",&v);
fflush(stdin);
printf("Vsota elementov v stolpcu %d je %d\n",v,vsota_stolpec(t,v));
break;
}
} while (c!='0');
return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void izpis(int *t,int n)
{
int i;
for (i=0;i<n;i++)
printf("%d ",t[i]);
printf("\n");
}
void sestej(int *t,int *t2,int *t3,int n)
{
int i,d=0;
int r=0;
for (i=n-1;i>=0;i--)
{
r = t[i]+t2[i]+d;
if (r >= 10)
{
t3[i] = r - 10;
d = 1;
}
else
{
t3[i]= r;
d = 0;
}
}
}
int main(void)
{
char p[20];
int t1[20];
int t2[20];
int t3[20];
int i,j;
printf("Vnesi stevilo: ");
fgets(p,20,stdin);
p[strlen(p)-1]='\0';
for (i=0;i<20;i++)
{
t1[i]=0;t2[i]=0;
}
for (i=strlen(p)-1,j=19;i>=0;i--,j--)
t1[j]=p[i]-48;
printf("Vnesi stevilo: ");
fgets(p,20,stdin);
p[strlen(p)-1]='\0';
for (i=strlen(p)-1,j=19;i>=0;i--,j--)
t2[j]=p[i]-48;
izpis(t1,20);
izpis(t2,20);
sestej(t1,t2,t3,20);
izpis(t3,20);
return 0;
}
2. naloga
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <dos.h>
void generiraj_nakljucna(char t[20000])
{
int i;
for (i=0;i<20000;i++)
if (rand()%2 == 0)
t[i] = rand()%26+65;
else
t[i] = rand()%26+97;
}
void generiraj_narascajoce(char t[20000])
{
int i;
char p='a';
for (i=0;i<20000;i++)
{
t[i] = p;
if (i%100==0)
p++;
}
}
void generiraj_padajoce(char t[20000])
{
int i;
char p='z';
for (i=0;i<20000;i++)
{
t[i] = p;
if (i%100==0)
p--;
}
}
void uredi_z_izbiranjem(char *a, int n)
{
int i,j;
int p;
char max;
for (i = 0;i < n-1; i++)
{
max = a[i];
p = i;
for (j=i+1; j<n; j++)
{
if (a[j] < max)
{
p = j;
max = a[j];
}
}
a[p] = a[i];
a[i] = max;
}
}
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 urejanje_premene(char *x, int n)
{
int i,j;
char 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 t[20000];
char c;
struct dostime_t cas1,cas2;
long cas_m1,cas_m2;
srand(time(NULL));
do
{
printf("*******MENI*******\n");
printf("1. generiranje nakljucnih crk\n");
printf("2. generiranje narascajocih crk\n");
printf("3. generiranje padajocih crk\n");
printf("4. urejanje po metodi z izbiranjem\n");
printf("5. urejanje po metodi z vstavljanjem\n");
printf("6. urejanje po metodi s premenami\n");
printf("0. izhod\n\nIzbira> ");
scanf("%c",&c);
fflush(stdin);
switch (c)
{
case '1':
generiraj_nakljucna(t);
break;
case '2':
generiraj_narascajoce(t);
break;
case '3':
generiraj_padajoce(t);
break;
case '4':
_dos_gettime(&cas1);
uredi_z_izbiranjem(t, 20000);
_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 '5':
_dos_gettime(&cas1);
urejanje_vstavljanje(t, 20000);
_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 '6':
_dos_gettime(&cas1);
urejanje_premene(t, 20000);
_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;
}
3. naloga
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void vnos(int t[5][9])
{
int i,j;
for (i=0; i<5;i++)
for (j=0;j<9;j++)
t[i][j] = rand()%41+25;
}
void izpis(int t[5][9])
{
int i,j;
for (i=0; i<5;i++)
{
for (j=0;j<9;j++)
printf("%d ",t[i][j]);
printf("\n");
}
}
int vsota_vrstica(int t[5][9],int v)
{
int i,j;
j=0;
for (i=0;i<9;i++)
j+=t[v][i];
return j;
}
int vsota_stolpec(int t[5][9],int s)
{
int i,j;
j=0;
for (i=0;i<5;i++)
j+=t[i][s];
return j;
}
int main(void)
{
char c;
int t[5][9];
int v;
srand(time(NULL));
do
{
printf("******MENI*******\n");
printf("1. generiraj\n");
printf("2. izpis\n");
printf("3. izpis vsote v vrstici\n");
printf("4. izpis vsote v posameznem stolpcu\n");
printf("0. izhod\n\nIzbira> ");
scanf("%c",&c);
fflush(stdin);
switch (c)
{
case '1':
vnos(t);
break;
case '2':
izpis(t);
break;
case '3':
printf("Vnesi vrstico: ");
scanf("%d",&v);
printf("Vsota elementov v vrstici %d je %d\n",v,vsota_vrstica(t,v));
fflush(stdin);
break;
case '4':
printf("Vnesi stolpec: ");
scanf("%d",&v);
fflush(stdin);
printf("Vsota elementov v stolpcu %d je %d\n",v,vsota_stolpec(t,v));
break;
}
} while (c!='0');
return 0;
}
Zuletzt geändert: Mittwoch, 26. Februar 2014, 03:47