Pokaż wyniki 1 do 2 z 2

Temat: Blagam pomocy...

  1. #1

    Domyślnie Blagam pomocy...

    Zapewne dla wprawionych to nie jest zaden problem, wiec bardzo prosze, a nawet blagam o pomoc w zadaniu. Czytam i ucze sie z Praty "programowanie w C" i jeszcze nie jestem w stanie napisac tego programiku, a musze go na dniach oddac.

    Kazdy wiersz danych zawiera nazwisko, imie oraz:
    -wiek(liczba calk z przedzialu 1..100)
    lub
    -rok i miesiac urodzenia.
    Wprowadzanie danych konczy pusta linia (zawierajaca jedna lub wiecej spacji) Wyswietlic dane w postaci uporzadkowanej w/g wieku, przy zalozeniu, ze wiek liczony w/g roku i miesiaca urodzenia jest zaokraglany do pelnych lat, a aktualnym rokie jest 1996. Moze byc co najwyzej 40 lini danych. Zastosowac sortowanie przez proste wstawianie.

    Wolno uzywac jedynie statycznych typow danych(tablice, struktury, itd)

    Jesli dobrze kombinuje to wlasnie zaczynam od struktury w ktorej beda tablice. Tylko wlasnie nie wiem czy maja byc 3 tablice:
    imie, nazwiko i wiek Czy moze moge to jakos zamknac w jedna

  2. #2

    Domyślnie

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

    #define LICZBA_WIERSZY 40

    // Definicja struktury:

    typedef struct
    {
    char nazwisko[30];
    char imie[30];
    unsigned int wiek[2];

    } Osoba;

    int compare(Osoba a, Osoba b)

    {
    int i;

    for(i = 0; i < 2; i++)
    {
    if(a.wiek[i] > b.wiek[i])
    {
    return 1;
    }
    else if(a.wiek[i] < b.wiek[i])
    {
    return -1;
    }
    }

    return 0;
    }



    void sortowanie(Osoba *os, int granica)
    {
    int gora, szuk;/ /do interacji

    Osoba temp;/ /zmienna pomocnicza

    for(gora = 0; gora < granica - 1; gora++)
    {
    for(szuk += gora + 1; szuk < granica; szuk++)
    {
    if(compare(os[szuk], os[gora]) == -1)
    {
    temp = os[gora];
    os[gora] = os[szuk];
    os[szuk] = temp;
    }
    }
    }
    }

    int main(void)
    {
    Osoba grupa_osob[LICZBA_WIERSZ Y];


    int i, i_temp;

    char * temp;


    FILE * F_plik;


    F_plik = fopen("dane.read", "r");

    if(F_plik == NULL)
    {
    printf("Blad otwarcia programu ... \n");
    return 1;
    }
    for(i = 0; i < 40; i++)
    if(fscanf(F_plik, "%s %s %s", grupa_osob[i].nazwisko, grupa_osob[i].imie, grupa_osob[i].wiek) == EOF)
    break;

    sortowanie(grupa_osob, i);
    for(i_temp = 0; i_temp < i; i_temp++)
    printf("%s \n", grupa_osob[i_temp].imie);

    getchar();
    getchar();
    return 0;
    }


    Tylko nie wychodzi mi sortowanie(zakladajac ze reszta jest OK.
    Nie moge dojsc co robie zle.
    Pomozecie?

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj