Projekt nie jest skompilowany! - wxDev-C++-

0

Mam problem ze skompilowaniem takiego projektu:

main.cpp

#include <conio.h>
#include <iostream>
using namespace std;
#include "nagl.h"

int main()
{
	cout << "Jestes w main()";
	
	   int a, b;
  	cout << "\nWpisz dwie zmienne int. \n\tPierwsza: ";
  	cin >> a;
  	cout << "\n\tDruga: ";
  	   cin >> b;

          cout << endl;
  	cout << wieksza(a, b) << " to najwieksza wartosc jaka wpisales" 
       	 << endl;
       	 
    druga();   	 
    
} 

druga.cpp

#include <iostream>
#include <conio.h>
using namespace std;
#include "nagl.h"

void druga()
{
  	cout << "\nJestes w druga().";
  	
        int a, b;
  	cout << "\nWpisz dwie zmienne int. \n\tPierwsza: ";
  	cin >> a;
  	cout << "\n\tDruga: ";
        cin >> b;
  	
  	cout << endl << wieksza(a, b) << " to najwieksza wartosc jaka wpisales" 
       	 << endl;
  
  
  getch(); 
} 

nagl.h

void druga();

inline int wieksza(int a, int b)
{
	if(a > b) return a;
	if(b > a) return b;
	else
	{
 		cout << "Blad! Koncze."; 
 		getch();
	}
}
 

Kompilator nie pokazuje żadnych błędów, pasek postępu sobie biegnie aż tu nagle wyskakuje mi komunikat:
Projekt nie jest skompilowany!

Mógłby mi ktoś wytłumaczyć o co w tym chodzi?
Nie znalazłem żadnego błędu w kodzie. Ślepy jestem?

Z góry dzięki za odpowiedź.

0

brakuje Ci return 0 w funkcji wieksza

0

Funkcja wieksza() jest zaopatrzona w return a; lub return b;.
W innym razie wykonuje się instrukcja getch(); która kończy pracę programu.
Po co funkcja ma coś zwracać jeżeli program się kończy?
Poza tym nawet jeśli dopiszę to trzecie *return to ten komunikat i tak się pojawia.

1
gmarcinn napisał(a)

W innym razie wykonuje się instrukcja getch(); która kończy pracę programu.

Weź nie opowiadaj bajek bo jeszcze ktoś to na serio weźmie. getch niczego nie kończy, zwraca tylko naciśnięty klawisz.

0

Tak ale w wyniku naciśnięcia klawisza program się kończy. Nie mam racji?

0

Dodałem po tym nieszczęsnym getch(); jeszcze return EXIT_SUCCESS;. Nie pomogło.

0

bo return kończy funkcję, a nie program, jeśli użyte w funkcji main to kończy program:
if (a!=b)
cout << endl << wieksza(a, b) << " to najwieksza wartosc jaka wpisales" << endl;
else
cout << "asdadas@##&@#&@#&^!!!!" << endl;

0
void druga();
 
inline int wieksza(int a, int b)
{
        if(a > b) return a;
        if(b > a) return b;
        else
        {
                 cout << "Blad! Koncze."; 
                 getch();
        }
       return 0;
}
0

dodaj nagłówek cstdlib i użyj funkcji exit(0); do zakończenia programu. EXIT_SUCCESS to w rzeczywistości wartość 0. Nie jest to żadna specjalna wartość.

Może masz coś źle ustawione w projekcie, albo otworzone dwa. Nie wiem jak to w wxDev wygląda. Daj może Build&Run jak jest coś takiego.

Jeszcze jedno: zapis

        if(a > b) return a;
        if(b > a) return b;
        else
        {
                 cout << "Blad! Koncze."; 
                 getch();
        }

jest jak z dowcipu:

Żona informatyka wysyła go po zakupy.

  • Kup parówki, a jak będą jajka, to kup dziesięć.
    Chłopina po wejściu do sklepu pyta:
  • Czy są jajka?
  • Tak - odpowiada sprzedawca.
  • To poproszę dziesięć parówek.

W praktyce twój kod wygląda tak:
Są 3 możliwe przypadki: a większe, b większe, obie równe. Sprawdzasz jeden przypadek, potem drugi. Dobrze. A potem niepotrzebnie else, jakby się odnosił tylko do tego drugiego przypadku. Innych możliwości nie ma, kod tam nie dojdzie, bo jest return, więc ten else jest zbędny.
Gdyby nie było returnów, to kod powodowałby błędy: jeśli pierwszy warunek byłby spełniony, wykonałoby się to co w tym warunku, drugi warunek byłby niespełniony, więc wykonałoby się else.
Powinno to być tak:

        if(a > b) return a;
        else if(b > a) return b;
        else
        {
                 cout << "Blad! Koncze."; 
                 getch();
        }

Wtedy masz pewność, że tylko jeden blok/instrukcja będzie wykonany. Oczywiście jak wspomniałem: w tym [u]konkretnym[/u] przypadku nie ma to większego znaczenia, bo funkcja jest kończona poprzez return, ale bez niego przy takiej konstrukcji mógłbyś długo błędu szukać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1