Wątek przeniesiony 2016-12-01 14:01 z C/C++ przez ŁF.

Co w tym programie jest nie tak?

0

Cześć! Jestem nowy na forum i na razie zielony w programowaniu, napisałem program który ma wskazywać największą wartość, ale kiedy go uruchamiam to tylko pobiera ode mnie dane, a nie wyświetla największej wartości, co zrobiłem nie tak i jak to powinienem napisać?

#include <iostream>
#include <conio.h>
using namespace std;
main ()
{
int pole[3];
cout<<"podaj liczbe pierwsza: ";
cin>>pole[0];
cout<<"podaj liczbe druga: ";
cin>>pole[1];
cout<<"podaj liczbe trzecia: ";
cin>>pole[2];
if(pole[0]<pole[1]>pole[2]) cout<<"najwieksza wartosc to liczba: "<<pole[1];
else
if(pole[1]<pole[0]>pole[2]) cout<<"najwieksza wartosc to liczba: "<<pole[0];
else
if(pole[0]<pole[2]>pole[1]) cout<<"najwieksza wartosc to liczba: "<<pole[2];
getch;
return (0);
}
2

Co to znaczy "kiedy go uruchamiam"? Przecież ten kod się nie skompiluje. (Już lepiej, ale ciągle nie jest "dobrze". ;) )

Zawsze int main.

if(pole[0]<pole[1]>pole[2])

Tak zrobić w C++ nie możesz... To znaczy możesz, ale to nie jest to czego chcesz. Użyj operatora logicznego AND && lub OR ||:

if (pole[0] < pole[1] && pole[1] > pole[2]) {

Ale nawet to podejście nie jest tutaj odpowiednie. Masz już dane w tablicy - poczytaj o pętlach i stwórz taką, która znajdzie maksymalną wartość w danej tablicy. (Swoją drogą, musisz zaczynać od tablic? Jeżeli nie - std::vector będzie bardziej przyjazny i mniej zawracał Ci głowę)

0

OK, wielkie dzięki, a jak to możliwe, że udało mi się go skompilować i czemu należy pisać int przed main?

0

Pytania na które może odpowiedzieć google nie powinny być zadawane...

http://stackoverflow.com/questions/449851/why-do-we-need-to-use-int-main-and-not-void-main-in-c

1

main to funkcja zwracająca int. Tak stanowi pismo święte standard ISO języka C++.

A dlaczego Ci się udało skompilować? A skąd mnie biednemu takie rzeczy wiedzieć? ;) Ja tam w OP widziałem " po else - ale może mi się przywidziało. Kawy dawno nie piłem, wszystko możliwe. (Patrząc na maila, rzeczywiście, przywidziało mi się.)
Pamiętaj, że "skompilowało się" to tylko taka poszlaka, że program jest dobrze napisany, a nie żadne zapewnienie. Łatwo jest napisać program niepoprawny, który się skompiluje bez błędów, a w czasie działania się wyłoży. Szczególnie, jeżeli nie masz włączonych warningów.

Jeżeli używasz Code::Blocks - wejdź w opcje projektu i opcje kompilatora, tam dodaj --pedantic -Wall -Wextra w "dodatkowych opcjach" czy jak to się tam zwało. Włączy Ci to sporo przydatnych ostrzeżeń. Dla wymuszenia nowszego standardu języka dodaj -std=c++11 (poprzedni standard), -std=c++14 (obecny), lub -std=c++17 (nadchodzący). Całkiem możliwe, że Twoja wersja kompilatora domyślnie kompiluje jako C++98/03 z rozszerzeniami (VLA, etc). -Wfatal-errors może się przydać, bo stopuje kompilację po pierwszym błędzie. Więcej flag poznasz w miarę nauki (miejmy nadzieję).

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