[C] Wypisanie kobiet o liczbie dzieci większej od średniej

ania1002
Użytkownik
Użytkownik
Posty: 81
Rejestracja: 6 sty 2011, o 13:11
Płeć: Kobieta
Lokalizacja: Krakow
Pomógł: 1 raz

[C] Wypisanie kobiet o liczbie dzieci większej od średniej

Post autor: ania1002 » 7 wrz 2011, o 21:23

Kod: Zaznacz cały

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

float dzieci (int w, int l, int d){
float y;
y=2*w+1*l+0.000001*d;
return y;
}
int main()
{
    int n,i;
    printf("Podaj ilosc kobiet:
");
    scanf("%d",&n);
    float w[n], l[n], d[n];
    printf("Podaj wiek kazdej kobiety w przedziale 20-40:
");
    for(i=0;i<n;i++){
    scanf("%f",&w[i]);
    if(l[i]<20 && l[i]>40){
    printf("Podaj wiek kobiety w przedziale: 20-40
");
    i--;
    }}
    printf("Podaj wyksztalcenie w latach dla kazdej kobiety:
");
    for(i=0;i<n;i++){
    scanf("%f",&l[i]);
    }
    printf("Podaj dochod kazdej kobiety:
");
    for(i=0;i<n;i++){
    scanf("%f",&d[i]);
    }
    printf("Nr kobiety      wiek      wyksztalcenie    dochod     ilosc dzieci
");
    for(i=0;i<n;i++){
    printf("%d             %f      %f     %f      %f
",i+1,w[i],l[i],d[i], dzieci(w[i],l[i],d[i]));
    }
    int imax=0;
    float max=dzieci(w[0],l[0],d[0]);
    for(i=0;i<n;i++){
    if(max<dzieci(w[i],l[i],d[i])){
        imax=i;
        max=dzieci(w[i],l[i],d[i]);
    }}
    printf("Maksymalna ilosc dzieci ma kobieta nr:%d, wynosi ona:%f
",imax+1, max);
    int imin=0;
    float min=dzieci(w[0],l[0],d[0]);
    for(i=0;i<n;i++){
    if(min>dzieci(w[i],l[i],d[i])){
        imin=i;
        min=dzieci(w[i],l[i],d[i]);
    }}
    printf("Minimalna ilosc dzieci ma kobieta nr:%d, wynosi ona:%f
",imin+1, min);
    float srednia,s=0;
    for(i=0;i<n;i++){
    s=s+dzieci(w[i],l[i],d[i]);
    }
    srednia=s/n;
    printf("Srednia ilosc dzieci to:%f
",srednia);

    int licznik=0;
    for(i=0;i<n;i++){
    if(dzieci(w[i],l[i],d[i])>srednia){
        licznik++;
    }}
    printf("Liczba kobiet o ilosci dzieci wiekszej od sredniej:%d
",licznik);

 system("PAUSE");

    return 0;
}

Jak napisać program (chodzi o koncowke) aby wyswietlal numery wszystkich kobiet o ilosci dzieci wiekszej od sredniej ?
Ostatnio zmieniony 7 wrz 2011, o 21:35 przez Afish, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości - kod programu zamieszczaj w tagach [code].Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.

wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C] Wypisanie kobiet o liczbie dzieci większej od średniej

Post autor: wawek91 » 7 wrz 2011, o 21:40

Nie chce mi się nawet czytać tak sformatowanego kodu, ale słyszałaś o instrukcji warunkowej lub pętli?

Pseudokod:

Kod: Zaznacz cały

dla wszystkich kobiet wykonuj:
if ilość_dzieci > średnia
   wypisz: kobieta[i];

ania1002
Użytkownik
Użytkownik
Posty: 81
Rejestracja: 6 sty 2011, o 13:11
Płeć: Kobieta
Lokalizacja: Krakow
Pomógł: 1 raz

[C] Wypisanie kobiet o liczbie dzieci większej od średniej

Post autor: ania1002 » 7 wrz 2011, o 21:49

Tak mnie nauczono na studiach pisać programy, wiec sama sobie tego po swojemu nie wymyślam.

wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C] Wypisanie kobiet o liczbie dzieci większej od średniej

Post autor: wawek91 » 7 wrz 2011, o 22:23

Nie rozumiesz o co mi chodzi, nie masz w ogóle wcięć w kodzie, wszystko jest linijka pod linijką i kod sie zlewa przez co zniechęca do analizy. Po za tym gotowego fragmentu kodu nie dostaniesz (a napewno nie ode mnie) więc jeśli czegoś nie rozumiesz to po prostu pytaj, a pomogę.

ania1002
Użytkownik
Użytkownik
Posty: 81
Rejestracja: 6 sty 2011, o 13:11
Płeć: Kobieta
Lokalizacja: Krakow
Pomógł: 1 raz

[C] Wypisanie kobiet o liczbie dzieci większej od średniej

Post autor: ania1002 » 13 wrz 2011, o 20:32

Kod: Zaznacz cały

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

float dzieci (int w, int l, int d){
float y;
y=2*w+1*l+0.000001*d;
return y;
}
int main()
{
    int n,i;
    printf("Podaj ilosc kobiet:
");
    scanf("%d",&n);
    float w[n], l[n], d[n];
    printf("Podaj wiek kazdej kobiety w przedziale 20-40:
");
    for(i=0;i<n;i++){

        scanf("%f",&w[i]);

        if(w[i]<20 || w[i]>40){
    printf("Podaj liczbe z przedzialu: 20-40
");
    i--;
        }
    }

    printf("Podaj wyksztalcenie w latach dla kazdej kobiety:
");
    for(i=0;i<n;i++){
    scanf("%f",&l[i]);
    }
    printf("Podaj dochod kazdej kobiety:
");
    for(i=0;i<n;i++){
    scanf("%f",&d[i]);
    }
    printf("Nr kobiety      wiek      wyksztalcenie    dochod     ilosc dzieci
");
    for(i=0;i<n;i++){
    printf("%d             %f      %f     %f      %f
",i+1,w[i],l[i],d[i], dzieci(w[i],l[i],d[i]));
    }
    int imax=0;
    float max=dzieci(w[0],l[0],d[0]);
    for(i=0;i<n;i++){
    if(max<dzieci(w[i],l[i],d[i])){
        imax=i;
        max=dzieci(w[i],l[i],d[i]);
    }}
    printf("Maksymalna ilosc dzieci ma kobieta nr:%d, wynosi ona:%f
",imax+1, max);
    int imin=0;
    float min=dzieci(w[0],l[0],d[0]);
    for(i=0;i<n;i++){
    if(min>dzieci(w[i],l[i],d[i])){
        imin=i;
        min=dzieci(w[i],l[i],d[i]);
    }}
    printf("Minimalna ilosc dzieci ma kobieta nr:%d, wynosi ona:%f
",imin+1, min);
    float srednia,s=0;
    for(i=0;i<n;i++){
    s=s+dzieci(w[i],l[i],d[i]);
    }
    srednia=s/n;
    printf("Srednia ilosc dzieci to:%f
",srednia);

    int numer=0;
    for(i=0;i<n;i++){
    if(dzieci(w[i],l[i],d[i])>srednia){
        numer=i;

    }}
    printf("Numer kobiety o ilosci dzieci wiekszej od sredniej:%d
",numer);

 system("PAUSE");

    return 0;
}

Chce, żeby mi wyświetlało numery kobiet o ilości dzieci większej od średniej. Jak to napisać? Prosze o pomoc.

Afish
Moderator
Moderator
Posty: 2823
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 354 razy

[C] Wypisanie kobiet o liczbie dzieci większej od średniej

Post autor: Afish » 15 wrz 2011, o 15:35

Po obliczeniu średniej liczby dzieci każdej kobiety przeleć pętlą wszystkie kobiety i zlicz te, które mają tych dzieci więcej. W którym momencie masz problem?

3squad
Użytkownik
Użytkownik
Posty: 63
Rejestracja: 5 lut 2010, o 08:30
Płeć: Kobieta
Lokalizacja: C:\\windows
Podziękował: 24 razy

[C] Wypisanie kobiet o liczbie dzieci większej od średniej

Post autor: 3squad » 15 wrz 2011, o 20:31

Po pierwsze polecam nauczyc sie kozystac z funkcji!!
I nie pisz, że tego ie było bo było bo już w pierwszej linijce masz zastosowaną funkcję

Po drugie: stosując się do pierwszego bardzo łatwo wykryjesz bład

poniżej zamieszczę przerobiony kod z podziałem na funkcje. Przeanalizuj go dokładnie!

A samego rozwiązania oczywiście nie podam, dopóki sama na nie nie wpadniesz. Ewentualnie zadawaj pytania.

Ps. Nie rozumiem twojej funkcji DZIECI ;/

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>
int ilosc()
{
    int n;
    printf("Podaj ilosc kobiet:
");
    scanf("%d",&n);
    return n;
}

void wiek(int *w, int n)
{
    int i;
    printf("Podaj wiek kazdej kobiety w przedziale 20-40:
");
    for(i=0;i<n;i++)
    {
        scanf("%d",&w[i]);
        if(w[i]<20 || w[i]>40)
        {
           printf("Podaj liczbe z przedzialu: 20-40
");
           i--;
        }
    }
}


void wyksztalcenie(int *l, int n)
{
    int i;
    printf("Podaj wyksztalcenie w latach dla kazdej kobiety:
");
    for(i=0;i<n;i++)
    scanf("%d",&l[i]);
}

int dochod(int *d, int n)
{
    int i;
    printf("Podaj dochod kazdej kobiety:
");
    for(i=0;i<n;i++)
    scanf("%d",&d[i]);
}


//funkcja dzieci nie wiem za bardzo co ma liczyc ale musisz ja na pewno poprawic
int dzieci (int *w, int *l, int *d)
{
      int y;
      y=2*w[0]+1*l[0]+0.000001*d[0];
      return y;
}

void wypisz(int n, int *l, int *w, int *d)
{
    int i;
    printf("Nr kobiety   wiek      wyksztalcenie    dochod     ilosc dzieci
");
    for(i=0;i<n;i++)
    printf("%d      %d           %d           %d      %d
",i+1,w[i],l[i],d[i], dzieci(w+i,l+i,d+i));
}

void MAX(int *w, int *l, int *d, int n)
{
    int i,imax=0;
    int max=dzieci(w,l,d);
    for(i=0;i<n;i++)
    {
       if(max<dzieci(w+i,l+i,d+i))
       {
          imax=i;
          max=dzieci(w+i,l+i,d+i);
       }
    }
    
    printf("Maksymalna ilosc dzieci ma kobieta nr:%d, wynosi ona:%d
",imax+1, max);
}

void MIN(int *w, int *l, int *d, int n)
{
    int i,imin=0;
    int min=dzieci(w,l,d);
    for(i=0;i<n;i++)
    {
        if(min>dzieci(w+i,l+i,d+i))
        {
            imin=i;
            min=dzieci(w+i,l+i,d+i);
        }
    }
    printf("Minimalna ilosc dzieci ma kobieta nr:%d, wynosi ona:%d
",imin+1, min);
}

void srednia(int *w, int *l, int *d, int n)
{
    int srednia,s=0;
    int i;
    for(i=0;i<n;i++)
    s=s+dzieci(w+i,l+i,d+i);  
    srednia=s/n;
    printf("Srednia ilosc dzieci to:%d
",srednia);
}

/* void tu_bedzie_TWOJA_funkcja()
{
        int numer=0;
    for(i=0;i<n;i++)
    {
       if(dzieci(w+i,l+i,d+i)>srednia)
       {
          numer=i;
       }
    }
    
    printf("Numer kobiety o ilosci dzieci wiekszej od sredniej:%d
",numer);
}*/

int main()
{
    int i,n;
    n=ilosc();
    int w[n], l[n], d[n];
    wiek(w,n);
    wyksztalcenie(l,n);
    dochod(d,n);
    wypisz(n,l,w,d);
    MAX(w,l,d,n);
    MIN(w,l,d,n);
    srednia(w,l,d,n);
    system("PAUSE");
    return 0;
}


ODPOWIEDZ