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

Program kompiluje sie poprawnie jednak podaje zly wynik

0 głosów
933 wizyt
pytanie zadane 30 marca 2016 w C i C++ przez Chajol Początkujący (290 p.)

Witam, jak w tytule, program sie kompiluje bez problemu jednak podaje zly wynik, nigdzie nie moge znalezc bledu :(

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

typedef struct {
int dzieci;
int mezczyzni;
int kobiety;
}LUDZIE;

int liczba_dzieci(LUDZIE osoby);
int liczba_kobiet(LUDZIE osoby);
int liczba_mezczyzn(LUDZIE osoby);

void main(void)
{
    LUDZIE osoby;

    osoby.dzieci;
    osoby.mezczyzni;
    osoby.kobiety;
    liczba_dzieci(osoby);
    liczba_mezczyzn(osoby);
    liczba_kobiet(osoby);
    printf("Liczba osob to: %d\n",osoby.dzieci+osoby.mezczyzni+osoby.kobiety);
}
int liczba_dzieci(LUDZIE osoby)
{
    printf("Prosze podac liczbe dzieci:");
    scanf("%d",&osoby.dzieci);
    return osoby.dzieci;
}
int liczba_mezczyzn(LUDZIE osoby)
{
    printf("Prosze podac liczbe mezczyzn:");
    scanf("%d",&osoby.mezczyzni);
    return osoby.mezczyzni;
}
int liczba_kobiet(LUDZIE osoby)
{
    printf("Prosze podac liczbe kobiet:");
    scanf("%d",&osoby.kobiety);
    return osoby.kobiety;
}

 

1 odpowiedź

0 głosów
odpowiedź 30 marca 2016 przez draghan VIP (106,230 p.)
Żeby przy pomocy funkcji modyfikować zewnętrzny obiekt, musisz jako parametr podać ten obiekt przez wskaźnik. Poza tym linie 18-20 nic pożytecznego nie robią.
komentarz 30 marca 2016 przez Chajol Początkujący (290 p.)

Btw dzieki wielkie za pomoc, sam bym to ogarnal chyba za rok :p 

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

typedef struct {
int dzieci;
int mezczyzni;
int kobiety;
}LUDZIE;

int liczba_dzieci(LUDZIE *osoby);
int liczba_kobiet(LUDZIE *osoby);
int liczba_mezczyzn(LUDZIE *osoby);

void main(void)
{
    LUDZIE osoby;
    liczba_dzieci(&osoby);
    liczba_mezczyzn(&osoby);
    liczba_kobiet(&osoby);
    printf("Liczba osob to: %d\n",osoby.dzieci+osoby.mezczyzni+osoby.kobiety);
}
int liczba_dzieci(LUDZIE *osoby)
{
    printf("Prosze podac liczbe dzieci:");
    scanf("%d",&osoby -> dzieci);
    return osoby.dzieci;
}
int liczba_mezczyzn(LUDZIE *osoby)
{
    printf("Prosze podac liczbe mezczyzn:");
    scanf("%d",&osoby -> mezczyzni);
    return osoby.mezczyzni;
}
int liczba_kobiet(LUDZIE *osoby)
{
    printf("Prosze podac liczbe kobiet:");
    scanf("%d",&osoby -> kobiety);
    return osoby.kobiety;
}

 

komentarz 30 marca 2016 przez draghan VIP (106,230 p.)

To powinno wyglądać jakoś tak:

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

typedef struct {
int dzieci;
int mezczyzni;
int kobiety;
}LUDZIE;

int liczba_dzieci(LUDZIE *osoby);
int liczba_kobiet(LUDZIE *osoby);
int liczba_mezczyzn(LUDZIE *osoby);

int main(void)
{
    LUDZIE osoby;
    liczba_dzieci(&osoby);
    liczba_mezczyzn(&osoby);
    liczba_kobiet(&osoby);
    printf("Liczba osob to: %d\n",osoby.dzieci+osoby.mezczyzni+osoby.kobiety);
    return 0;
}
int liczba_dzieci(LUDZIE *osoby)
{
    printf("Prosze podac liczbe dzieci:");
    scanf("%d",&osoby -> dzieci);
    return osoby -> dzieci;
}
int liczba_mezczyzn(LUDZIE *osoby)
{
    printf("Prosze podac liczbe mezczyzn:");
    scanf("%d",&osoby -> mezczyzni);
    return osoby -> mezczyzni;
}
int liczba_kobiet(LUDZIE *osoby)
{
    printf("Prosze podac liczbe kobiet:");
    scanf("%d",&osoby -> kobiety);
    return osoby -> kobiety;
}

Ja spadam teraz na zajęcia, ewentualne poprawki dopiero po 18.00. :P

komentarz 30 marca 2016 przez Chajol Początkujący (290 p.)
Ok i tak dzieki wielkie!
komentarz 30 marca 2016 przez Chajol Początkujący (290 p.)
Wszystko smiga :D
komentarz 30 marca 2016 przez draghan VIP (106,230 p.)
Cieszy mnie to. Różnica między moją a Twoją wersją to zmiana operator wyłuskania, czyli kropki, na operator dereferencji-wyłuskania (czy jak ludzie to jeszcze zechcą nazwać), czyli "strzałkę". Od strony programisty - używa się ich tak samo, tylko wersja strzałkowa służy do pracy ze wskaźnikami na obiekty.

Podobne pytania

+1 głos
2 odpowiedzi 528 wizyt
0 głosów
2 odpowiedzi 468 wizyt
0 głosów
1 odpowiedź 933 wizyt

93,733 zapytań

142,669 odpowiedzi

323,287 komentarzy

63,293 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...