• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

struktury wskaznik

Object Storage Arubacloud
0 głosów
87 wizyt
pytanie zadane 31 stycznia 2020 w C i C++ przez rysiek5555 Początkujący (300 p.)

Mam strukturę uczen która ma (imie,nazwisko, rok studiow i date urodzenia), Mam napisac funkcje ktora zwraca indeks ucznia, ktory jest najstarszy na wskazanym roku(jesli jest takich uczniów kilku to zwraca indeks pierwszego z nich).

int najstarszy(G , ilość, rok)

struct uczen *G; int ilość; int rok 

G jest wskaznikiem do struktury, ilosc podajemy dla ilu uczniow przeprowadzic analize.

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

struct uczen
{
    char imie[10];
    char nazwisko[30];
    int  rok;
    char data[15];
};

int najstarszy(G,ilosc,rok)
struct uczen*G;int ilosc;int rok;
{





}

Mógłby ktoś pomoc nakierować jak to zrobić już godzinę szukam pomysłu. Wystarczy napisać tylko tą funkcję bez funkcji main. Dopiero uczę się struktur. 

komentarz 31 stycznia 2020 przez adrian17 Ekspert (344,860 p.)
int najstarszy(G,ilosc,rok)
struct uczen*G;int ilosc;int rok;

Popraw tą deklarację funkcji, to nie lata osiemdziesiąte, od kilkudziesięciu lat mamy standard C :P

1 odpowiedź

0 głosów
odpowiedź 31 stycznia 2020 przez Bondrusiek Maniak (61,370 p.)

Po kolei. Możesz to zrobić tak:

Najpierw tworzysz strukturę, która posiada pewne pol w tym przypadku(imie, nazwisko, rok, data). W kolejnym kroku tworzysz tablice statyczną bądź dynamiczną. Następnie wypełniasz stworzoną strukturę danymi a na końcu dane do funkcji, która zwraca indeks osoby najstarszej.

#include <cstdio>
#include <cstdlib>

using namespace std;

struct uczen
{
    char imie[10];
    char nazwisko[30];
    int  rok;
    char data[15];
};
int najstarszy(uczen uczniowie[], int  ilosc);
int main()
{
    uczen* uczniowie = (uczen*) malloc(4);
    uczniowie[0].rok = 1999;
    uczniowie[1].rok = 2000;
    uczniowie[2].rok = 1994;
    uczniowie[3].rok = 2001;
    printf("Najstarszy uczen ma index %d\n", najstarszy(uczniowie, 4));
    free(uczniowie);
    return 0;
}

int najstarszy(uczen uczniowie[], int  ilosc)
{
    int index = 0;
    int najstarszy = uczniowie[0].rok;
    for( int i = 1; i < ilosc; ++i)
    {
        if( uczniowie[i].rok < najstarszy)
        {
            najstarszy = uczniowie[i].rok;
            index = i;
        }
    }
    return index;
}

 

komentarz 31 stycznia 2020 przez adrian17 Ekspert (344,860 p.)
uczen* uczniowie = (uczen*) malloc(4);

Ten malloc() jest błędny (on nie działa jak `new`, tutaj podajesz liczbę bajtów).

komentarz 31 stycznia 2020 przez adrian17 Ekspert (344,860 p.)
I to miało liczyć "na zadanym roku"; a w tym kodzie ani nie filtrujesz po roku, ani nie patrzysz na datę.

Ale ogólnie idea OK.
komentarz 31 stycznia 2020 przez Bondrusiek Maniak (61,370 p.)
Ok, dzięki za ocenę. To rozwiązanie tak na szybko. Na pewno da się to zrobić dużo lepiej.

Podobne pytania

0 głosów
1 odpowiedź 95 wizyt
pytanie zadane 7 marca 2021 w Sprzęt komputerowy przez Cixo Gaduła (4,070 p.)
0 głosów
0 odpowiedzi 450 wizyt
pytanie zadane 17 stycznia 2019 w Visual Basic przez Szymonwest Nowicjusz (120 p.)
0 głosów
1 odpowiedź 145 wizyt
pytanie zadane 14 października 2017 w HTML i CSS przez niezalogowany

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...