Funkcja minimum.

0

Witam.
Mam problem z napisaniem pewnego programu a dokładnie 1 funkcji. O to treść:

Zadeklaruj globalnie szablon struktury o następujący polach : nazwa[30], ilość i cena typu całkowitego.
Napisz funkcje:
-wczytaj(wczytuje ilość towarów i towary z klawiatury oraz zapisuje struktury do pliku "magazyn ( funkcja nie posiada parametrów i nic nie zwraca. Otwarcie i zamknięcie pliku dokonuje się wewnątrz funkcji).
-minimum ( wybiera strukturę o najmniejszej wartości i zwraca ją bezpośrednio ( funkcja nie posiada parametrów. Otwarcie i zamknięcie pliku dokonuje się wewnątrz funkcji).
-drukuj ( drukuje pojedynczą strukturę( funkcja jako parametr pobiera strukturę do wydruku, nie zwraca żadnej wartości)).

Napisałem na razie funkcję wczytaj i mam problem bo nie wiem jak się zabrać za funkcję minimum.(wartość=cena*ilość)

O to co na razie napisałem:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct szablon
{
    char nazwa[30];
    int ilosc;
    int cena;
};
void wczytaj(void);
void minimum(void);

int main()
{
wczytaj();
}


void wczytaj(void)
{
    FILE *plik;
    int i,n;
	struct szablon lista;
	 plik=fopen("towary.txt","wt");
    printf("Ile towarow zamierzasz wpisac\n");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("Podaj Nazwe towaru\n");
        scanf("%s",lista.nazwa);
        printf("Podaj ilosc tego towaru\n");
        scanf("%d",&lista.ilosc);
        printf("Podaj cene tego towaru\n");
        scanf("%d",&lista.cena);
        fprintf(plik,"%s    %d      %d\n",lista.nazwa,lista.ilosc,lista.cena);
       // fwrite(&lista,sizeof(lista),n,plik);
    }

    fclose(plik);
}

void minimum(void)
{
    FILE *plik;
    int i,n,wartosc;;
    plik=fopen("towary.txt","rt");
    printf("Ile towarow chcesz sprawdzic\n");
    scanf("%d",&n);
    wartosc=lista.ilosc*lista.cena;
    for(i=0;i<n;i++)
    {
        
        
    }
}
0

może mam takie dziwne wrażenie, ale funkcja miminum jak sama nazwa wskazuje wyszukuje minimum w jakimś kontenerze i zwraca te minimum, może lepiej byłoby zacząć ją pisać tak:

int minimum(int* tab, int rozmiar)
{
  int i;
  int ret=tab[0]; // jak rozmiar bedzie zerowy to i tak funkcja powinna sie wykrzaczyc, bo nie da sie znalezc minimum z pustego zbioru
  for (i=1; i<rozmiar; i++)
    if (tab[i]<ret)
      ret = tab[i];
  return ret;
}

w takim kodzie łatwiej się błędów szuka

0

Witam.
W poleceniu jest napisane funkcja nie posiada parametrów.

0

to zrób sobie tak:

void minimum()
{
  int n;
  int* tab;
  ... // pobierz tablice i ilosc elementow
  return minimum(tab,n);
}

będzie bez parametrów

0

Ale dalej nie rozumiem jak szukać w strukturze.

0

Po prostu wybierasz element struktury według którego będzie się dokonywać porównanie, np. cena i przeciążasz operator mniejszości dla tej struktury. voilà!

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