Projekt - pomoc z kodem, wywołania funkcji, argumenty

0

Witam, mam do napisania projekt na piątek. Praktycznie mam w kodzie wszystko co niezbędne, lecz mam problem z wywołaniem funkcji. Szukam chętnego do pomocy (wytłumaczenia co jest nie tak), kod prześlę na PW.

0

ile płacisz czy to też na PW?

(problem z wywołaniem funkcji, uważaj bo uwierzę, a jak tak rzeczywiście jest to wklej kod tutaj ktoś Ci pomoże na pewno)

0
fasadin napisał(a):

ile płacisz czy to też na PW?

(problem z wywołaniem funkcji, uważaj bo uwierzę, a jak tak rzeczywiście jest to wklej kod tutaj ktoś Ci pomoże na pewno)

Kod mam, mogę przesłać Ci na PW jak nie wierzysz, jeżeli będziesz skłonny mi pomóc. ;)

void sortuj(wezel *start)
{
    wezel *nowystart=NULL;
    wezel *max, *poprzmax, *pom;
    while(start)
    {
        max=start;
        poprzmax=NULL;
        pom=start;
        while(pom->next)
        {
            if (pom->next->dane1.pracownicy>max->dane1.pracownicy)
            {
                poprzmax=pom->next;
                max=pom->next;
            }
            pom=pom->next;
        }
        if (poprzmax)
        {
            poprzmax->next=max->next;

        }
        else
        {
            start=max->next;
            max->next=nowystart;
            nowystart=max;
        }
        start=nowystart;
    }
}
 

To przykładowa funkcja sortująca. Gdy chcę ją wywołać wyskakuje, że za mało mam argumentów.

case 4: sortuj(); break;
 
0

no to pokaż jak ją wywołujesz.

0

Tam skąd ściągnąłeś kod nie ma przykłady jak wywołać? Sam napisałeś, że dostajesz informację że przy wywołaniu przekazujesz za mało argumentów. Twoja funkcja oczekuje jednego argumentu a Ty nie przekazujesz żadnego.

0

Dobra, macie cały kod.

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

typedef struct firma {
        char nazwa_firmy;
        int data_powstania;
        float fundusze;
        int pracownicy;
        char branza;
        char miejscowosc;
        char email;
}info_firma;

typedef struct wlasciciel {
    char imie;
    char nazwisko;
    int wiek;
    info_firma dane_firma;
}info_wlasciciel;

typedef struct wezel{
    info_wlasciciel dane;
    info_firma dane1;
    struct wezel *next;
}wezel;

wezel *start=NULL;
wezel *koniec=NULL;


info_wlasciciel czytaj()
{
    info_wlasciciel a;
    printf("Podaj imie: ");
    scanf("%s", a.imie);
    printf("Podaj nazwisko: ");
    scanf("%s", a.nazwisko);
    printf("Podaj wiek: ");
    scanf("%d", a.wiek);
    printf("Podaj dane firmy\n");
    printf("\t Nazwa firmy: ");
    scanf("%s", a.dane_firma.nazwa_firmy);
    printf("\t Data powstania: ");
    scanf("%d", a.dane_firma.data_powstania);
    printf("\t Branza: ");
    scanf("%s", a.dane_firma.branza);
    printf("\t Liczba pracowników: ");
    scanf("%d", a.dane_firma.pracownicy);
    printf("\t Miejscowosc firmy: ");
    scanf("%s", a.dane_firma.miejscowosc);
    printf("\t E-mail: ");
    scanf("%s", a.dane_firma.email);
    printf("\t Fundusze firmy: ");
    scanf("%f", a.dane_firma.fundusze);
    printf("\n\n");
    return a;
}

void dodaj(info_wlasciciel a)
{
    wezel *pom;
    start=(wezel*)malloc(sizeof(wezel));
    if (pom=NULL)
    {
        printf("Brak pamięci");
    }
    pom->dane=a;
    pom->next=start;
    start=pom;
}

void wypisz(wezel *start)
{
    wezel *pom;
    for(pom=start; pom!=NULL; pom=pom->next)
    {
        printf("%s %s %d, ", pom->dane.imie, pom->dane.nazwisko, pom->dane.wiek);
        printf("%s %d %s %d %s %s %f\n", pom->dane1.nazwa_firmy, pom->dane1.data_powstania, pom->dane1.branza, pom->dane1.pracownicy, pom->dane1.miejscowosc, pom->dane1.email, pom->dane1.fundusze);
        pom=pom->next;
    }
}

int szukaj(info_firma a)
{
wezel *pom=start;
while(pom)
{
if ((strcmp(pom->dane1.nazwa_firmy, a.nazwa_firmy)==0))
{
  return 1;
}
else
{
   pom=pom->next;
}
return 0;
}

void sortuj(wezel *start)
{
    wezel *nowystart=NULL;
    wezel *max, *poprzmax, *pom;
    while(start)
    {
        max=start;
        poprzmax=NULL;
        pom=start;
        while(pom->next)
        {
            if (pom->next->dane1.pracownicy>max->dane1.pracownicy)
            {
                poprzmax=pom->next;
                max=pom->next;
            }
            pom=pom->next;
        }
        if (poprzmax)
        {
            poprzmax->next=max->next;

        }
        else
        {
            start=max->next;
            max->next=nowystart;
            nowystart=max;
        }
        start=nowystart;
    }
}

void usun_firme(wezel *start)
{
    wezel *pom;
    pom=start;
    start=pom->next;
    free(pom);
}

void zdp()
{
  int i;
  FILE * plik;
  wezel *pom=start;
  plik=fopen("firmy.txt", "w");
  while(pom!=NULL)
  {
        fprintf("%s %s %d, ", pom->dane.imie, pom->dane.nazwisko, pom->dane.wiek);
        fprintf("%s %d %s %d %s %s %f\n", pom->dane1.nazwa_firmy, pom->dane1.data_powstania, pom->dane1.branza, pom->dane1.pracownicy, pom->dane1.miejscowosc, pom->dane1.email, pom->dane1.fundusze);
    pom=pom->next;
  }

  fclose(plik)  ;
}

void czytaj_z_pliku()
{
   wezel a;
   FILE *plik;
   plik=fopen(plik,"rt");

          fscanf(plik, "%s" , &a.dane.imie);
          fscanf(plik, "%s" , &a.dane.nazwisko);
          fscanf(plik, "%d" , &a.dane.wiek);
          fscanf(plik, "%s" , &a.dane1.branza);
          fscanf(plik, "%d" , &a.dane1.data_powstania);
          fscanf(plik, "%s" , &a.dane1.email);
          fscanf(plik, "%f" , &a.dane1.fundusze);
          fscanf(plik, "%s" , &a.dane1.miejscowosc);
          fscanf(plik, "%s" , &a.dane1.nazwa_firmy);
          fscanf(plik, "%d" , &a.dane1.pracownicy);

   fclose(plik);
}
int main()
{
    int z;
    printf("\n--------------------------------- BAZA DANYCH ----------------------------------\n");
    printf("1. Dodaj nowa firme i wlasciciela\n");
    printf("2. Usun istniejaca firme\n");
    printf("3. Wyszukaj podana firme\n");
    printf("4. Posortuj dane\n");
    printf("5. Wypisz dane");
    printf("6. Zapisz dane do pliku\n");
    printf("7. Wczytaj dane z pliku\n");
    printf("8. Wyjscie\n\n");
    printf("Wybierz interesujaca Cie opcje: ");
    scanf("%d",z);
    switch (z)
    {
        case 1: dodaj(info_wlasciciel czytaj); break;
        case 2: usun(); break;
        case 3: szukaj(info_wlasciciel czytaj); break;
        case 4: sortuj(info_wlasciciel czytaj); break;
        case 5: wypisz(info_wlasciciel czytaj); break;
        case 6: zdp(); break;
        case 7: wdzp(); break;
        case 8: (); break;
    }

}

0

no tak niby wywołujesz sortuj tylko co ma sortować? widzisz, że ta funkcja pobiera jakiś argument? Podejrzewam, że początek jakiejś listy - pewnie jakiegoś gotowca dostałeś i nie wiesz jak z niego skorzystać o ile to i tak działa (nie zagłębiałem się).

0

Dobra, pytanie jedno zasadnicze. Czy dużo trzeba zmieniać w kodzie, by działał on poprawnie?

0

Zdefiniuj „poprawnie”, bo nie wiemy co tak naprawdę ma on robić. Ale forumowe doświadczenie podpowiada mi, że zmienić trzeba wszystko. :P

0

No program ma robić to co widać w menu (dodawać, usuwać, szukać, sortować, zapisywać do pliku etc). Jeżeli byłbym leniem, to poprosiłbym o zrobienie i zapłatę, a ja chcę pomocy, wskazówek. Pytanie: w kodzie widać funkcję proszącą o wpisanie przez użytkownika danych. Mam problem z usunięciem, nie wiem jakiej zmiennej użyć, by funkcja to załapała.
Poza tym jest sam błąd w funkcji, oto jego treść: "expected' struct wezel*' but argument is of type 'struct info_wlasciciel (*)()' ". Podejmie się ktoś pomocy dla mnie?

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