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

C++ błąd Id returned 1 exit status

Object Storage Arubacloud
0 głosów
540 wizyt
pytanie zadane 24 maja 2021 w C i C++ przez Łukasz Gosek Nowicjusz (120 p.)
edycja 26 maja 2021 przez ScriptyChris

Witajcie 

mam na informatyke zrobić program który bedzie liczyl objetosc prostopadloscianu  i sprawdzi czy jest szescianem. Program pokazuje błąd 

C:\Program Files (x86)\Embarcadero\Dev-Cpp\TDM-GCC-64\x86_64-w64-mingw32\bin\ld.exe    C:\Users\lukas\AppData\Local\Temp\ccaEg5FP.o:22.cpp:(.text+0x152): undefined reference to `Gosek()'

C:\Users\lukas\Desktop\collect2.exe    [Error] ld returned 1 exit status

ktoś mi pomoże?

Program wyglada tak:

#include <iostream> 
#include <cstdio>
#include <cstdlib>
using namespace std;
 
int a,b,H;
int main(){
 
    cout << "Pole prostopadloscianu: " << endl;
    cout << "Podaj dlugosc krawedzi a: "; cin >> a;
    cout << "Podaj dlugosc krawedzi b: "; cin >> b; 
    cout << "Podaj wysokosc H: "; cin >> H; 
 
    if(a==0||b==0||H==0) { 
        cout << "Bledna wartosc - zero" << endl;
        exit(0);
    }
    

    cout << "Objetosc prostopadloscianu wynosi = " << a*b*H << " cm^3" << endl;
    
    void Gosek ();
    {
    cout<<"Teraz program sprawdzi czy prostopadloscian jest szescianem";
    Gosek();
    system("pause");
    return 0;
    }
    // funkcja sprawdzajaca czy prostopadloscian jest szescianem
    using namespace std;
    for (int i=0;a=b=H;i++)
    cout<<"Twoj prostopadloscian jest szescianem";
    cout<<endl;
    
    getchar();
   
    return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 24 maja 2021 przez Whiskey_Taster Pasjonat (15,610 p.)
Funkcje zarówno deklarujemy jak i inicjujemy poza funkcją main. W dodatku funkcja jest nielogiczna. W pewnym momencie masz już w ogóle zapis "funkcja sprawdza czy prostopadłościan jest sześcianem", a zaraz po tym jest pętla for, która nijak ma się do sprawdzenia odpowiednich warunków.

Ogółem, to zerknij sobie na podstawy takie jak deklaracja funkcji, w jaki sposób się to robi, jak się przekazuje parametry do funkcji, jak wywołać funkcję. Jeszcze instrukcje warunkowe sobie do tego ogarnij i dasz radę.

A co do samego błędu, to oznacza on tyle, że kompilator nie może odnaleźć Twojej funkcji (z przyczyn już wymienionych u góry).
komentarz 24 maja 2021 przez Łukasz Gosek Nowicjusz (120 p.)
może jakiś artykuł lub filmik na yt polecisz?
komentarz 24 maja 2021 przez Whiskey_Taster Pasjonat (15,610 p.)
Generalnie z takich rzeczy nigdy nie korzystałem, zwykle jakaś książka, dokumentacja. Ewentualnie po prostu szukałem mnie interesującej frazy, jak "funkcje cpp".
komentarz 24 maja 2021 przez Whiskey_Taster Pasjonat (15,610 p.)

Ogółem mogę Ci jedynie przedstawić przykładowy szkielet, jak to mogłoby wyglądać: 
 

#include <iostream>

void czy_szescian(int a, int b, int h);

int main() {
    int a, b, h;
    .
    .
    .
    czy_szescian(a, b, h);

    return 0;
}

void czy_szescian(int a, int b, int h) {
    if (warunek) {
        .
        .
        .
    } else {
        .
        .
        .
    }
}

Oczywiście jest tu trochę do uzupełnienia, to jest warunki, wczytanie danych do zmiennych, sprawienie, by funkcja coś robiła (w naszym przypadku sprawdzała, czy z danego wymiaru da radę utworzyć sześcian). Grunt, że widać to, co jest najważniejsze, a co u Ciebie jest złe - deklaracja funkcji. Ja nazwałem swoją inaczej, nie zmieniałem jej typu zwracanego, to jest zostawiłem void, ale funkcje, które odpowiadają na zadane pytanie słowami "Prawda" lub "Fałsz" chyba najlepiej, by zwracały typ logiczny, skoro możemy. Dbaj o formatowanie kodu, żeby był czytelny. Czyli tabulacje, jakieś logiczne odstępy czy konwencje co do klamr. 

Uzupełnisz, to wrzuć to w bloczek kodu - taka opcja tutaj na forum, tuż nad polem tekstowym jest taki znaczek {...} i wtedy zobaczę, co i jak wymyśliłeś :)

0 głosów
odpowiedź 24 maja 2021 przez Antytalent Początkujący (470 p.)
1. jedna funkcja w drugiej nie może zadziałać

2. wystarczy jedno "using namespace std;", które jest domyślnie na początku programu

3.zamiast for powinno być if.

4. void nic nie zwraca, więc "return 0;" niepotrzebne
komentarz 25 maja 2021 przez Whiskey_Taster Pasjonat (15,610 p.)
Nie ze wszystkim się zgodzę.

1. Otóż funkcje działają w sobie, to jest nie jest niczym dziwnym wywołanie funkcji w funkcji. Co innego deklaracja funkcji w funkcji.

3. Nie tylko, bo taka pętla nic nie robiącą byłaby wykonana bez przerwy.

4. Oczywiście, void nie zwraca nic, ale również nic nie stoi na przeszkodzie, by do funkcji typu void dać return. Dzięki temu możemy wyjść z funkcji, jeśli faktycznie potrzebujemy.
komentarz 25 maja 2021 przez NewEraOfPeace Gaduła (4,790 p.)
Można zadeklarować funkcję w funkcji. Tak właśnie działa most vexxing parse. Nie można funkcji w funkcji zdefiniować.
komentarz 25 maja 2021 przez Antytalent Początkujący (470 p.)
A to sorki, sam jestem mało ogarnięty w temacie xD
komentarz 25 maja 2021 przez Whiskey_Taster Pasjonat (15,610 p.)

@NewEraOfPeace, co nieco doczytałem, trochę informacji będzie TUTAJ. Tak więc w formie lambd nawet i można zdefiniować funkcję w funkcji. Co do deklaracji, to okej, mój błąd :)
Nie wiem jednak, na ile często deklaruje się funkcje w funkcji, wydaje mi się to dosyć mało użyteczne, bo jednak zwykle piszemy funkcje właśnie po to, by oddzielić jakiś proces i sobie życie ułatwić. 

komentarz 25 maja 2021 przez Whiskey_Taster Pasjonat (15,610 p.)
Spokojnie, właśnie od tego jest forum :D There is always a bigger fish ;)
komentarz 25 maja 2021 przez NewEraOfPeace Gaduła (4,790 p.)
Nie ma use casea deklaracji funkcji w funkcji, ale możliwość ta powoduje problemy, jak napisałem wyżej - most vexxing parse. Jeśli chodzi o lamby, to nie nazwałbym tego funkcją.

Podobne pytania

0 głosów
2 odpowiedzi 687 wizyt
0 głosów
2 odpowiedzi 194 wizyt
pytanie zadane 17 listopada 2020 w C i C++ przez hihijsonel Obywatel (1,250 p.)
0 głosów
1 odpowiedź 270 wizyt
pytanie zadane 2 listopada 2020 w C i C++ przez hihijsonel Obywatel (1,250 p.)

92,565 zapytań

141,418 odpowiedzi

319,602 komentarzy

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

...