Mam takie zadanie:
Oto moje rozwiązanie:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct data
{
char imie[50];
int nr_telefonu[9];
int wygrywa;
};
int losuj(int tab_losuj[2])
{
tab_losuj[0]=rand()%10;
tab_losuj[1]=rand()%10;
return tab_losuj[2];
}
void wprowadz_dane(struct data *tab, int n)
{
int i,j;
int numer=0;
char nazwa[50];
for(i=0;i<n;i++)
{
printf("Wprowadz imie:");
scanf("%49s",tab[i].imie);
printf("Wprowadz nr_telefonu:\n");
for(j=0;j<9;j++)
{
scanf("%d",&numer);
tab[i].nr_telefonu[j] = numer;
}
}
}
int wygrywajace(struct data *tab, int n,int tab_losowe[2])
{
int ilosc,i,j;
for(i=0;i<n;i++)
{
if(tab[i].nr_telefonu[7]==tab_losowe[0]&&tab[i].nr_telefonu[8]==tab_losowe[1])
{
ilosc++;
tab[i].wygrywa=1;
}
}
return ilosc;
}
void wyswietl_wygranych(struct data *tab,int liczba_wygranych,int n)
{
int i;
printf("Wygrala/y %d osoba/osob \n",liczba_wygranych);
printf("Oto zwyciezcy:\n");
for(i=0;i<n;i++)
{
if(tab[i].wygrywa==1)
{
printf("Pan/i:%s\n",tab[i].imie);
}
}
}
int main(int argc, char *argv[]) {
srand(time(NULL));
struct data tab[100];
int n;
int liczba_wygranych=0;
int tab_losowe[2];
int temp=0;
printf("Wprowadz ilosc osob telefonujacych:");
scanf("%d",&n);
wprowadz_dane(tab,n);
do
{
losuj(tab_losowe);
liczba_wygranych=wygrywajace(tab,n,tab_losowe);
temp++;
}while(liczba_wygranych==0);
//printf("%d",temp);
wyswietl_wygranych(tab,liczba_wygranych,n);
return 0;
}
Tutaj screen z konsoli:
Wszystko mi działa, tylko mam wątpliwości co do poprawności tego programu. Mógłby ktoś stestować/przeanalizować, czy jest wszystko ok? Ewentualnie jakieś sugestie etc.
Z góry dzięki!