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

Wyświetla mi się dodatkowa linijka podczas kompilacji programu

Object Storage Arubacloud
0 głosów
268 wizyt
pytanie zadane 24 kwietnia 2022 w C i C++ przez Mati323 Nowicjusz (210 p.)

Cześć.  Od jakiegoś czasu borykam się z zadaniem i nie wiem gdzie leży błąd. Proszę o wskazanie i ewentualne wytłumaczenie czemu akurat tak. Cały czas pojawia mi się pierwsza linijka podczas niektórych kompilacji. Gdzie jest błąd oraz czy ten kod jest dobrze napisany, czy można go napisać lepiej. Dzięki za odpowiedź.

#include <iostream>
#include<string>
using namespace std;
string wiek1;
string wiek2;


int main()

{
 {
    
        cout<<"A teraz zrobisz zadanie gdzie program polazuje ktora osoba jest starsza,jesli obie maja wiecej jak 100 lat program sie zachowa w odpowiedni sposob  "<<endl<<"\n";
        cout<<"Podaj wiek pierwszej osoby"<<endl;
        getline (cin,wiek1,'\n');
        cout<<"Podaj wiek drugiej osoby"<<endl;
        getline(cin,wiek2,'\n');
   
        if (wiek1 > "100" && wiek2 > "100" )
 
        {
            cout<<"osoba pierwsza i osoba druga maja wiecej jak 100 lat - gratulacje!"<<endl;
        }
else if (wiek1 == "100" && wiek2 == "100" )
         {
           cout<<"Osoba pierwsza i osoba druga maja po 100 lat! doczekac takiego wieku to wielkie szczescie :)"<<endl;
         }
        if (wiek1 == wiek2)
         {
             cout<<"obie osoby sa w tym samym wieku "<<endl;
         }
   else if (wiek1>wiek2)
     {
         cout<<"Osoba pierwsza jest starsza od osoby drugiej "<<endl;
     }
     else
     {
         cout<<"osoba pierwsza jest mlodsza od osoby drugiej "<<endl;
     }
   }  
     
return 0;
}

 

komentarz 24 kwietnia 2022 przez VBService Ekspert (253,340 p.)
edycja 24 kwietnia 2022 przez VBService

Jeżeli nie ma wyraźnej potrzeby to staraj się deklarować zmienne w main()

Scope of Variables in C++

 

#include <iostream>

using namespace std; 
 
int main()
{
    // "Musisz porównywać liczby" -  @adrian17
    int wiek1=0, wiek2=0;

    // ... reszta kodu
      
    return 0;
}

lub (ponieważ wiek nie jest liczbą ujemną)

#include <iostream>

using namespace std; 
 
int main()
{
    // "Musisz porównywać liczby" - @adrian17
    unsigned int wiek1=0, wiek2=0;

    // ... reszta kodu
      
    return 0;
}

 

długi tekst dla lepszej "czytelności" możesz zapisać np. tak

#include <iostream>

using namespace std; 
 
int main()
{
    // "Musisz porównywać liczby" - @adrian17
    unsigned int wiek1=0, wiek2=0;
    
    cout << "A teraz zrobisz zadanie gdzie program polazuje ktora osoba jest starsza,\n"
            "jesli obie maja wiecej jak 100 lat program sie zachowa w odpowiedni sposob."
            "\n\n";
         
    cout << "Podaj wiek pierwszej osoby\n";
     cin >> wiek1;
     
    cout << "Podaj wiek drugiej osoby\n";
     cin >> wiek2;
     
    if (wiek1 > 100 && wiek2 > 100)
    {
        cout << "osoba pierwsza i osoba druga maja wiecej jak 100 lat - gratulacje!" << endl;
    }
    else if (wiek1 == 100 && wiek2 == 100)
    {

    // ... reszta kodu
      
    return 0;
}

 

komentarz 25 kwietnia 2022 przez maciko84 Nowicjusz (100 p.)
main jest otwarty dwoma klamrami
komentarz 25 kwietnia 2022 przez VBService Ekspert (253,340 p.)
edycja 25 kwietnia 2022 przez VBService

@maciko84; to oznacza (komentarz:  // reszta kodu)  smiley

    else if (wiek1 == 100 && wiek2 == 100)
    {
 
    // ... reszta kodu
       
    return 0;

że tu trzeba dopisać kod zaprezentowany przez OP-a, czyli

        cout << "Osoba pierwsza i osoba druga maja po 100 lat! doczekac takiego wieku to wielkie szczescie :)" << endl;
    } 
    else if (wiek1 == wiek2)
    {
        cout << "obie osoby sa w tym samym wieku" << endl;
    }
    else if (wiek1 > wiek2)
    {
        cout << "Osoba pierwsza jest starsza od osoby drugiej" << endl;
    }
    else
    {
        cout << "osoba pierwsza jest mlodsza od osoby drugiej" << endl;
    }

 

całość  [ on-line ]

#include <iostream>
 
using namespace std; 
  
int main()
{
    // "Musisz porównywać liczby" - @adrian17
    unsigned int wiek1=0, wiek2=0;
     
    cout << "A teraz zrobisz zadanie gdzie program polazuje ktora osoba jest starsza,\n"
            "jesli obie maja wiecej jak 100 lat program sie zachowa w odpowiedni sposob."
            "\n\n";
          
    cout << "Podaj wiek pierwszej osoby\n";
     cin >> wiek1;
      
    cout << "Podaj wiek drugiej osoby\n";
     cin >> wiek2;
      
    if (wiek1 > 100 && wiek2 > 100)
    {
        cout << "osoba pierwsza i osoba druga maja wiecej jak 100 lat - gratulacje!" << endl;
    }
    else if (wiek1 == 100 && wiek2 == 100)
    {
        cout << "Osoba pierwsza i osoba druga maja po 100 lat! doczekac takiego wieku to wielkie szczescie :)" << endl;
    } 
    else if (wiek1 == wiek2)
    {
        cout << "obie osoby sa w tym samym wieku" << endl;
    }
    else if (wiek1 > wiek2)
    {
        cout << "Osoba pierwsza jest starsza od osoby drugiej" << endl;
    }
    else
    {
        cout << "osoba pierwsza jest mlodsza od osoby drugiej" << endl;
    }

       
    return 0;
}

 

1 odpowiedź

+2 głosów
odpowiedź 24 kwietnia 2022 przez adrian17 Ekspert (344,860 p.)
edycja 25 kwietnia 2022 przez adrian17

podczas niektórych kompilacji

kompilacja to proces tworzenia programu z kodu .cpp. Odpalanie programu to już... odpalanie, wykonywanie :)

W każdym razie...

if (wiek1 > "100" && wiek2 > "100" )

Porównujesz tutaj tekst, nie liczby. W sortowaniu tekstu (jak np w książce telefonicznej lub indeksie na końcu słownika), tekst "50" byłby po tekście "100", więc "50">"100". Musisz porównywać liczby, nie tekst.

komentarz 25 kwietnia 2022 przez Mati323 Nowicjusz (210 p.)
Faktycznie zadziałało teraz poprawnie wystarczyło przenieść zmienna do sekcji Maine i usunąć liczbę z znaków niealfabetyczmych . Dodatkowo zapytam w jakich sytuacjach mogę deklarować nie w sekcji w Maine tylko jak zrobiłem ja to ?
komentarz 25 kwietnia 2022 przez adrian17 Ekspert (344,860 p.)

Dodatkowo zapytam w jakich sytuacjach mogę deklarować nie w sekcji w Maine tylko jak zrobiłem ja to 

Chyba nie zrozumiałem. Nie ma "sekcji Main", jest funkcja o nazwie main().

Zmienne powinno się praktycznie zawsze definiować w funkcji, a nie globalnie (tak jak to zrobiłeś w oryginalnym pytaniu).

komentarz 25 kwietnia 2022 przez Mati323 Nowicjusz (210 p.)
Ok, rozumiem dzięki !!

Podobne pytania

0 głosów
0 odpowiedzi 260 wizyt
pytanie zadane 26 października 2016 w C i C++ przez neos Początkujący (320 p.)
0 głosów
0 odpowiedzi 277 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

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

...