Struktury w C

0

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;
}
0
void EditValue(const struct <nazwa struktury> *wsk, const int value){
    wsk->Data = value;
} 

bez tych < >

1 użytkowników online, w tym zalogowanych: 0, gości: 1