Napisałem strukturę w C. Wszystko ładnie śmiga, a tera chciałbym się was poradzić. Może ktoś mi powiedzieć, jak zrobić funkcję do edytowania struktury: "sprzedane". Chciałbym, aby użytkownik mogl wporwadzić ilość sprzedanych elementów. Kompletnie nie mam pojęcia jak się za to zabrać.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
typedef struct
{
float cena;
char wino[10];
int ilosc ;
int sprzedane;
} kol;
void InicjalizujTablice(kol * tab2, int m)
{
srand(time(NULL));
int i;
for(i=0; i < m; i++)
{
float B = rand() %1000 ;
int A = rand() %100 ;
tab2[i].cena = B +0.99 ;
sprintf(tab2[i].wino,"wino_%c",i+'A') ;
tab2[i].ilosc = A+10 ;
tab2[i].sprzedane = 0 ;
}
}
void WyswietlTablice(kol * tab2, int m)
{
int i;
puts(" Karta produktow winnicy Maciek. ");
for(i=0; i < m; i++)
printf("%2.d. %6s %8.2f zl %3.d sztuk || ilosc sprzedanych sztuk%d \n",i+1, tab2[i].wino, tab2[i].cena, tab2[i].ilosc, tab2[i]. sprzedane);
}
void sortowanie(kol * tab2, int m)
{
int j;
int i ;
int min;
kol p;
for ( i=0; i<m-1; i++)
{
min=i;
for ( j=i+1; j<m; j++)
{
if (tab2[j].cena<tab2[min].cena)
min=j;
}
p=tab2[min];
tab2[min]=tab2[i];
tab2[i]=p;
}
}
void wyszukiwanie_el(kol * tab2, int m)
{
kol dana;
int i, a=0;
puts("\nPodaj nazwe wina:\n");
scanf("%s", &dana.wino);
for(i=0; i<m; i++)
{
if( (strcmp(dana.wino, tab2[i].wino) == 0) )
{
printf(" %10s znajduje sie w naszym magazynie \n", tab2[i].wino);
a++;
}
}
if(a==0)
puts("Nie ma takiego elementu");
}
int main()
{
srand(time(NULL));
int k = 0 ;
int m = rand() % 13 + 2;
kol *tab2;
tab2 = malloc(m*sizeof(kol));
if(tab2 == NULL)
exit(EXIT_FAILURE);
InicjalizujTablice(tab2, m);
int opcja;
puts("oto karta winnicy Maciek") ;
puts("\nMENU:\n1.POKAZ KARTE WIN\n2.WYSZUKAJ WINO W MAGAZYNIE\n3. SORTUJ WG CENY\n\nWYBIERZ 0 ABY ZAKONCZYC PROGRAM");
while(k==0)
{
wybor:
puts("\nwybierz numer dzialania, ktore chcesz wykonac:");
scanf("%d",&opcja);
switch (opcja)
{
case 1:
WyswietlTablice(tab2,m);
break;
case 2:
wyszukiwanie_el(tab2,m);
break;
case 3:
sortowanie(tab2,m);
case 0:
k=1;
break;
default:
printf("Nie rozpoznano\n");
goto wybor;
}
}
FILE *plik;
plik = fopen("dane.dat", "wb");
fwrite(&m, sizeof(m), 1, plik);
fwrite(tab2, sizeof(kol), m, plik);
fclose(plik);
free(tab2);
printf("Odczytujemy z pliku:\n");
plik = fopen("dane.dat", "rb");
if(plik == NULL)
exit(EXIT_FAILURE);
fread(&m, sizeof(m), 1, plik);
printf("W pliku jest zapisanych %d elementow.\n", m);
tab2 = malloc(m*sizeof(kol));
if(tab2 == NULL)
exit(EXIT_FAILURE);
fread(tab2, sizeof(kol), m,plik);
fclose(plik);
printf("oto one:\n");
WyswietlTablice(tab2,m);
free(tab2);
return EXIT_SUCCESS;
}
<code=c>kod</code>
- takie to trudne?