Rešitev LAV 29
Conditions d’achèvement
1. naloga
#include <stdio.h>
#include <string.h>
#include <conio.h>
struct datum {
int dan, mesec, leto;
};
struct avtor {
char ime[30];
char priimek[30];
struct datum dat_roj;
};
struct zalozba {
char ime[40];
char naslov[50];
int posta;
};
struct knjiga {
struct avtor avtor;
char naslov[50];
struct zalozba zalozba;
struct datum letnica;
};
void vnos_niza(char *niz,int d)
{
fflush(stdin);
fgets(niz,d,stdin);
if (niz[strlen(niz)-1] == '\n')
niz[strlen(niz)-1] = '\0';
}
void vnos_datum(struct datum *d)
{
printf("Vnesi dan: "); scanf("%d",&d->dan);
printf("Vnesi mesec: "); scanf("%d",&d->mesec);
printf("Vnesi leto: "); scanf("%d",&d->leto);
}
void izpis_datum(struct datum d)
{
printf("%d.%d.%d ",d.dan,d.mesec,d.leto);
}
void vnos_avtor(struct avtor *a)
{
printf("Vnesi ime: "); vnos_niza(a->ime,30);
printf("Vnesi priimek: "); vnos_niza(a->priimek,30);
printf("Vnesi datum rojstva\n");
vnos_datum(&a->dat_roj);
}
void izpis_avtor(struct avtor a)
{
printf("%s %s ",a.ime, a.priimek);
izpis_datum(a.dat_roj);
}
void vnos_zalozba(struct zalozba *z)
{
printf("Vnesi ime: "); vnos_niza(z->ime,40);
printf("Vnesi naslov: "); vnos_niza(z->naslov,50);
printf("Vnesi stevilko poste: "); scanf("%d",&z->posta);
}
void izpis_zalozba(struct zalozba z)
{
printf("%s %s %d ",z.ime,z.naslov, z.posta);
}
void vnos_knjiga(struct knjiga *k)
{
printf("Vnesi avtorja\n");
vnos_avtor(&k->avtor);
printf("Vnesi naslov knjige: "); vnos_niza(k->naslov,50);
printf("Vnesi zalozbo\n"); vnos_zalozba(&k->zalozba);
printf("Vnesi datum izdaje knjige\n");
vnos_datum(&k->letnica);
}
void izpis_knjiga(struct knjiga k)
{
izpis_avtor(k.avtor);
printf("%s ",k.naslov);
izpis_zalozba(k.zalozba);
izpis_datum(k.letnica);
printf("\n");
}
void urejanje_premene_priimek(struct knjiga *k, int n)
{
int i,j;
struct knjiga pom;
for (i=0;i<n-1;i++)
for (j=n-1;j>0;j--)
{
if (strcmp(k[j-1].avtor.priimek,k[j].avtor.priimek)>0)
{
pom=k[j-1];
k[j-1]=k[j];
k[j]=pom;
}
}
}
void urejanje_premene_naslov_knjige(struct knjiga *k, int n)
{
int i,j;
struct knjiga pom;
for (i=0;i<n-1;i++)
for (j=n-1;j>0;j--)
{
if (strcmp(k[j-1].naslov,k[j].naslov)>0)
{
pom=k[j-1];
k[j-1]=k[j];
k[j]=pom;
}
}
}
int main(void)
{
int i;
char c;
const int n = 15;
struct knjiga knjige[15];
for (i=0;i<n;i++)
vnos_knjiga(&knjige[i]);
for (i=0;i<n;i++)
izpis_knjiga(knjige[i]);
printf("Zelis urediti seznam?\n1. po priimku avtorja\n2. po naslovu knjige\n");
c = getch();
if (c == '1')
{
urejanje_premene_priimek(knjige,n);
for (i=0;i<n;i++)
izpis_knjiga(knjige[i]);
}
else if (c == '2')
{
urejanje_premene_naslov_knjige(knjige,n);
for (i=0;i<n;i++)
izpis_knjiga(knjige[i]);
}
return 0;
}
2. naloga
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <math.h>
struct znak {
char ASCII_koda;
int x_pozicija,y_pozicija;
int barva;
};
void init(struct znak *znaki, int n) {
int i;
for (i=0;i<n;i++) {
znaki[i].ASCII_koda = rand()%26+65;
znaki[i].x_pozicija = rand()%80+1;
znaki[i].y_pozicija = rand()%25+1;
znaki[i].barva = rand()%5+10;
}
}
void izpis_znaka(struct znak zn) {
gotoxy(zn.x_pozicija,zn.y_pozicija);
textcolor(zn.barva);
cprintf("%c",zn.ASCII_koda);
}
void prikazi(struct znak *znaki, int n) {
int i;
clrscr();
for (i=0;i<n;i++)
izpis_znaka(znaki[i]);
}
void uredi(struct znak *zn, int n) {
int i,j;
struct znak pom;
for (i=0;i<n-1;i++) {
for (j=n-1;j>0;j--)
if (zn[j].ASCII_koda < zn[j-1].ASCII_koda) {
pom = zn[j];
zn[j] = zn[j-1];
zn[j-1]=pom;
}
}
}
float razdalja(struct znak zn)
{
float x,y;
x = 80-zn.x_pozicija; // potrebujemo dolzino in ne velikost
y = 25-zn.y_pozicija;
return sqrt(pow(x,2)+pow(y,2)); // po pitagorovem izreku izracunamo dolzino
}
void isci(struct znak *zn, int n) {
int i;
int pos;
float max,t;
max = razdalja(zn[0]);
pos = 0;
for (i=1;i<n;i++) {
t = razdalja(zn[i]);
if (t<max) {
max = t;
pos = i;
} }
gotoxy(1,23);
printf("Najblize je znak %c na poziciji %dx%d",
zn[pos].ASCII_koda, zn[pos].x_pozicija, zn[pos].y_pozicija);
}
int main(void)
{
struct znak znaki[10]; int i;
srand(time(NULL));
init(znaki,10); prikazi(znaki,10);
gotoxy(1,24);
for (i=0;i<10;i++)
printf("%c ",znaki[i].ASCII_koda);
uredi(znaki,10);
gotoxy(1,25);
for (i=0;i<10;i++)
printf("%c ",znaki[i].ASCII_koda);
isci(znaki,10);
getch();
return 0;
}
#include <stdio.h>
#include <string.h>
#include <conio.h>
struct datum {
int dan, mesec, leto;
};
struct avtor {
char ime[30];
char priimek[30];
struct datum dat_roj;
};
struct zalozba {
char ime[40];
char naslov[50];
int posta;
};
struct knjiga {
struct avtor avtor;
char naslov[50];
struct zalozba zalozba;
struct datum letnica;
};
void vnos_niza(char *niz,int d)
{
fflush(stdin);
fgets(niz,d,stdin);
if (niz[strlen(niz)-1] == '\n')
niz[strlen(niz)-1] = '\0';
}
void vnos_datum(struct datum *d)
{
printf("Vnesi dan: "); scanf("%d",&d->dan);
printf("Vnesi mesec: "); scanf("%d",&d->mesec);
printf("Vnesi leto: "); scanf("%d",&d->leto);
}
void izpis_datum(struct datum d)
{
printf("%d.%d.%d ",d.dan,d.mesec,d.leto);
}
void vnos_avtor(struct avtor *a)
{
printf("Vnesi ime: "); vnos_niza(a->ime,30);
printf("Vnesi priimek: "); vnos_niza(a->priimek,30);
printf("Vnesi datum rojstva\n");
vnos_datum(&a->dat_roj);
}
void izpis_avtor(struct avtor a)
{
printf("%s %s ",a.ime, a.priimek);
izpis_datum(a.dat_roj);
}
void vnos_zalozba(struct zalozba *z)
{
printf("Vnesi ime: "); vnos_niza(z->ime,40);
printf("Vnesi naslov: "); vnos_niza(z->naslov,50);
printf("Vnesi stevilko poste: "); scanf("%d",&z->posta);
}
void izpis_zalozba(struct zalozba z)
{
printf("%s %s %d ",z.ime,z.naslov, z.posta);
}
void vnos_knjiga(struct knjiga *k)
{
printf("Vnesi avtorja\n");
vnos_avtor(&k->avtor);
printf("Vnesi naslov knjige: "); vnos_niza(k->naslov,50);
printf("Vnesi zalozbo\n"); vnos_zalozba(&k->zalozba);
printf("Vnesi datum izdaje knjige\n");
vnos_datum(&k->letnica);
}
void izpis_knjiga(struct knjiga k)
{
izpis_avtor(k.avtor);
printf("%s ",k.naslov);
izpis_zalozba(k.zalozba);
izpis_datum(k.letnica);
printf("\n");
}
void urejanje_premene_priimek(struct knjiga *k, int n)
{
int i,j;
struct knjiga pom;
for (i=0;i<n-1;i++)
for (j=n-1;j>0;j--)
{
if (strcmp(k[j-1].avtor.priimek,k[j].avtor.priimek)>0)
{
pom=k[j-1];
k[j-1]=k[j];
k[j]=pom;
}
}
}
void urejanje_premene_naslov_knjige(struct knjiga *k, int n)
{
int i,j;
struct knjiga pom;
for (i=0;i<n-1;i++)
for (j=n-1;j>0;j--)
{
if (strcmp(k[j-1].naslov,k[j].naslov)>0)
{
pom=k[j-1];
k[j-1]=k[j];
k[j]=pom;
}
}
}
int main(void)
{
int i;
char c;
const int n = 15;
struct knjiga knjige[15];
for (i=0;i<n;i++)
vnos_knjiga(&knjige[i]);
for (i=0;i<n;i++)
izpis_knjiga(knjige[i]);
printf("Zelis urediti seznam?\n1. po priimku avtorja\n2. po naslovu knjige\n");
c = getch();
if (c == '1')
{
urejanje_premene_priimek(knjige,n);
for (i=0;i<n;i++)
izpis_knjiga(knjige[i]);
}
else if (c == '2')
{
urejanje_premene_naslov_knjige(knjige,n);
for (i=0;i<n;i++)
izpis_knjiga(knjige[i]);
}
return 0;
}
2. naloga
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <math.h>
struct znak {
char ASCII_koda;
int x_pozicija,y_pozicija;
int barva;
};
void init(struct znak *znaki, int n) {
int i;
for (i=0;i<n;i++) {
znaki[i].ASCII_koda = rand()%26+65;
znaki[i].x_pozicija = rand()%80+1;
znaki[i].y_pozicija = rand()%25+1;
znaki[i].barva = rand()%5+10;
}
}
void izpis_znaka(struct znak zn) {
gotoxy(zn.x_pozicija,zn.y_pozicija);
textcolor(zn.barva);
cprintf("%c",zn.ASCII_koda);
}
void prikazi(struct znak *znaki, int n) {
int i;
clrscr();
for (i=0;i<n;i++)
izpis_znaka(znaki[i]);
}
void uredi(struct znak *zn, int n) {
int i,j;
struct znak pom;
for (i=0;i<n-1;i++) {
for (j=n-1;j>0;j--)
if (zn[j].ASCII_koda < zn[j-1].ASCII_koda) {
pom = zn[j];
zn[j] = zn[j-1];
zn[j-1]=pom;
}
}
}
float razdalja(struct znak zn)
{
float x,y;
x = 80-zn.x_pozicija; // potrebujemo dolzino in ne velikost
y = 25-zn.y_pozicija;
return sqrt(pow(x,2)+pow(y,2)); // po pitagorovem izreku izracunamo dolzino
}
void isci(struct znak *zn, int n) {
int i;
int pos;
float max,t;
max = razdalja(zn[0]);
pos = 0;
for (i=1;i<n;i++) {
t = razdalja(zn[i]);
if (t<max) {
max = t;
pos = i;
} }
gotoxy(1,23);
printf("Najblize je znak %c na poziciji %dx%d",
zn[pos].ASCII_koda, zn[pos].x_pozicija, zn[pos].y_pozicija);
}
int main(void)
{
struct znak znaki[10]; int i;
srand(time(NULL));
init(znaki,10); prikazi(znaki,10);
gotoxy(1,24);
for (i=0;i<10;i++)
printf("%c ",znaki[i].ASCII_koda);
uredi(znaki,10);
gotoxy(1,25);
for (i=0;i<10;i++)
printf("%c ",znaki[i].ASCII_koda);
isci(znaki,10);
getch();
return 0;
}
Modifié le: mercredi 26 février 2014, 03:47