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

Wskazniki! Czyli co ja tu źle robię?

Object Storage Arubacloud
0 głosów
458 wizyt
pytanie zadane 3 maja 2015 w C i C++ przez andrzejugdziejestes Początkujący (390 p.)

Witam,

Ostatnio dodałem posta z moim zadaniem do Challangu z forum. Spróbowałem przekształcić go żeby używał wskazników. Program kompiluje sie ale kompletnie nie działa. Gdzie jest błąd?

 

#include <iostream>

using namespace std;

int main()
{
    int l_ucz,m,n;
    cin>>l_ucz;
    string *imie;
    imie= new string[l_ucz];
    float *srednia;
    srednia= new float[l_ucz];
    float ocena=0,suma=0,maxi,mini,suma_cala;
    for(int i=0; i<l_ucz; i++)
    {
        cin>>imie[i];
        for (int j=0; j<5; j++)
        {
            cin>>ocena;
            suma+=ocena;
            ocena=0;


        }
        srednia[i]+=(suma/5);


                if (i>0)
                {if (srednia[i]>srednia[i-1]) {maxi=srednia[i]; m=i;}}
                   else {maxi=srednia[0]; m=0;}



                    if (i>0)
                {if (srednia[i]<srednia[i-1]) {mini=srednia[i];n=i;}}
                   else {mini=srednia[0]; n=0;}

        suma_cala+=suma;
        suma=0;
    }
    delete [] imie , srednia;
    cout<<endl<<imie[m]<<endl<<maxi;
    cout<<endl<<imie[n]<<endl<<mini;
    cout<<endl<<(suma_cala/(5*l_ucz));

    return 0;
}

 

5 odpowiedzi

+2 głosów
odpowiedź 3 maja 2015 przez andrzejugdziejestes Początkujący (390 p.)
Znalazłem swój błąd... nie dość że wymazałem te tablice przed ich wypisaniem to jeszcze w niewłaściwy sposób -..-
0 głosów
odpowiedź 3 maja 2015 przez Boshi VIP (100,240 p.)
A co ten program miał robić w ogóle? oprócz tego, że liczy średnią?
komentarz 3 maja 2015 przez andrzejugdziejestes Początkujący (390 p.)
0 głosów
odpowiedź 3 maja 2015 przez jegor377 Stary wyjadacz (13,230 p.)

tu są błędy - for(int i=0; i<l_ucz; i++) :>

zrób - for(int i=0; i<l_ucz-1; i++)

Pamiętaj, że liczymy po amerykańsku. 

 

Pozdro! ;D

komentarz 3 maja 2015 przez jegor377 Stary wyjadacz (13,230 p.)
a nie, tu jest dobrze jednak xD
komentarz 3 maja 2015 przez andrzejugdziejestes Początkujący (390 p.)
No ale u mnie jest mniejsze a nie mniejsze bądź równe. No i znowu doświadczyłem sytuacji ze ten program zadziałał na ideone a u mnie w Code Blocks nie...
komentarz 3 maja 2015 przez andrzejugdziejestes Początkujący (390 p.)
No własnie xd
komentarz 3 maja 2015 przez jegor377 Stary wyjadacz (13,230 p.)
no właśnie zauważyłem to w pewnej chwili... xD Może to nie wina Code::Blocksa, tylko kompilatora? ;> Może masz inny niż gcc ustawiony i masz inną skadnię troszkę :> Albo masz to przez przypadek jako projekt C? Spróbuj z tymi operatorami z C do operacji na pamięci... :> Wydaje mi się, że masz wszystko dobrze... :/

 

Pozdro! :D
0 głosów
odpowiedź 3 maja 2015 przez Dorion300 Szeryf (90,250 p.)
Nie ma to jak usunć tablicę i wyświetlić co jest w niej.

 

delete [] imie;

delete [] srednia;

Powinna być przed return 0;
komentarz 3 maja 2015 przez andrzejugdziejestes Początkujący (390 p.)
Wczoraj wieczorem już znalazłem swój błąd ;) Ale dzięki za odp :)
0 głosów
odpowiedź 3 maja 2015 przez andrzejugdziejestes Początkujący (390 p.)

Jeśli mógłbym mieć prośbę to czy ktoś z was mógłby wkleić ten kod u siebie z danymi z challenga i sprawdzić czy działa?

 

#include <iostream>


using namespace std;

int main()
{
    int l_ucz,m,n;
    cin>>l_ucz;
    string *imie;
    imie= new string[l_ucz];
    float *srednia;
    srednia= new float[l_ucz];
    float ocena=0,suma=0,maxi,mini,suma_cala;
    for(int i=0; i<l_ucz; i++)
    {
        cin>>imie[i];
        for (int j=0; j<5; j++)
        {
            cin>>ocena;
            suma+=ocena;
            ocena=0;


        }
        srednia[i]+=(suma/5);


                if (i>0)
                {if (srednia[i]>srednia[i-1]) {maxi=srednia[i]; m=i;}}
                   else {maxi=srednia[0]; m=0;}



                    if (i>0)
                {if (srednia[i]<srednia[i-1]) {mini=srednia[i];n=i;}}
                   else {mini=srednia[0]; n=0;}

        suma_cala+=suma;
        suma=0;
    }

    cout<<endl<<imie[m]<<endl<<maxi;
    cout<<endl<<imie[n]<<endl<<mini;
    cout<<endl<<(suma_cala/(5*l_ucz));
    delete [] imie;
    delete [] srednia;
   cin.sync();
   cin.get();


    return 0;
}

Strasznie mnie to denerwuje ze na Ideone wszystko zawsze działa xd

 

Podobne pytania

0 głosów
2 odpowiedzi 143 wizyt
pytanie zadane 28 marca 2020 w C i C++ przez POmusz Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 174 wizyt
pytanie zadane 1 kwietnia 2017 w Sieci komputerowe, internet przez PolskiMyster Użytkownik (660 p.)

92,581 zapytań

141,433 odpowiedzi

319,666 komentarzy

61,966 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!

...