» »

Zakaj mi program ne dela?

Zakaj mi program ne dela?

gik1999 ::

Zakaj mi program ne dela: http://ideone.com/vKCCGu .Naloga se glasi tako:http:Napiši algoritem,ki izmed treh vnešenih celih števil vrne največjega. Rabim za šolo.Lp

stapler rump ::

Premisli, kaj pomeni ta izraz? Poglej, kaj pomeni "and" operator.

(st1 and st2)<st3


Ali res lahko pričakuješ, da bo program izpisal največjo vrednost izmed treh vpisanih, če v kakršnemkoli primeru tvoj program lahko izpiše le zadnjo vpisano vrednost (cout<<st3;)?

gik1999 ::

Prosim za rešitev

Mesar ::

st1 in st2 mores vsako posebaj primerjat z st3 vmes pa das && (in) ali || (ali) odvisno od tega kaj zelis doseči...
Your turn to burn!

FTad ::

Slabo si si zastavil logiko. Prav tako se mi zdi, da ne ločiš med logičnimi operatorji, ter operatorji za primerjat količine (večji, manjši)

Pri spremenljivkah sem dodal še en parameter max, v katerega se shranjuje največja vrednost.

int st1, st2, st3, max;
	
	st1 = 4;
	st2 = 3;
	st3 = 5;

	if (st1 > st2) {
		if (st1 > st3)
	    	   max = st1;
	   	else 
	      	   max = st3;
	}
	else if (st1 < st2) {
	   	if (st2 > st3)
	      	   max = st2;
	   	else
	      	   max = st3;
	}
	printf("%d\n", max);
	return 0;



pri večih parametrih, kjer moraš iskat največje število, ti pa svetujem, da shraniš cifre v tabelo, potem pa v for zanki poiščeš max.

lebdim ::

+gik1999,
vsako tako nalogo poskusi rešiti sam. Gre za osnovno programersko nalogo - ISKANJE NAJVEČJEGA ŠTEVILA med podanimi. Kakšen je postopek pri matematiki, ko moraš poiskati največje število izmed podanih?

Osnovna ideja je ta (ki ti jo je napisal FTad):
1. določil je vrednosti 4, 3 in 5 za tri števila (st1, st2, st3) - torej
st1:=4; st2:=3; st3:=5;
, čeprav načeloma se številke vpisujejo s standardnega vhoda (s pomočjo tipkovnice).

2. primerja, če je število 1 večje od števila 2, kar označuje pogoj
if (st1 > st2) { 


3. če je ta pogoj ovrednoten s true (če velja ta pogoj), potem še število 1 primerja s številom 3
3.1 če je tudi ta pogoj izpolnjen (torej da je število 1 večje od števila 3), potem je maksimalno število število 1, ker je večji tako od števila 2 kot od števila 3

4. če pa prvi pogoj (st1 > st2) ni izpolnjen, torej je število 2 večje od števila 1, se potem izvede ta del else
4.1 preveri se, če je število 2 večje še od števila 3, in če je, je potem maksimalno število 2
4.2 če pa ta pogoj ni izpolnjen, potem pa velja, da je število 3 večje, pa število max postane število 3

5. na koncu zgolj izpišemo največje število in vrnemo 0, ker gre za glavni program
int main() {}


sem napisal dovolj razumljivo / dovolj jasno?

Zgodovina sprememb…

  • spremenil: lebdim ()

FTad ::

ja tiste cifre sem mu dal za primer. On si naj modificira nazaj kodo, da bo vnašal številke iz konzole oz. kakorkoli pač želi.

lebdim ::

hehe, sej je kul, to sem sam napisal razlago, da bo OP-ju bolj jasno ... ;)

gik1999 ::

FTad ::

Ja če si stestiral z različnimi vhodnimi parametri in dobiš pravilen rezultat, potem bo vredu. Rešitev je možnih več, važno je, da dela pravilno.

lebdim ::

+gik1999

ne vem, če tvoj program zares dela. kaj pomenijo stavki
if((st1, st2)< st3)), if ((st1, st3) < st2)) in if ((st2, st3) < st1))
?
if stavek uporabimo takrat, kadar želimo preveriti nek pogoj. če pa imamo nek sestavljen pogoj, pa lahko uporabimo ostale veznike AND, NOT, OR, XOR, etc..., vendar tako, da je nedvoumna vrednost true ali false. tukaj v tvojem primeru pa ne vem, če je res tako.
TVOJ PROGRAM:
using namespace std;
 
int main() {
	int st1;
	int st2;
	int st3;
 
	cin>>st1;
	cin>>st2;
	cin>>st3;
 
	if((st1,st2)<st3) {
		cout<<"največje število je ";
		cout<<st3;
	}
	if((st1,st3)<st2) {
		cout<<"največje število je ";
		cout<<st2;
	}
	if((st3,st2)<st1) {
		cout<<"največje število je ";
		cout<<st1;
	}
	return 0;
}

Zgodovina sprememb…

  • spremenil: lebdim ()

ragezor ::

(st1, st2) je isto kot ce bi napisal samo st2

torej

if((st1,st2)<st3) je enakovredno if (st2 < st3)

M.B. ::

Že dolgo nisem delal v C++ mi lahko kdo razloži kako je lahko (st1, st2) tuple legalna koda?
Everyone started out as a newbie.
Sadly only a handful ever progress past that point.

ragezor ::

, je operator, ki locuje expressione. ni to tuple. oklepaji so zato, da vezejo vejico, ker je sama po sebi zelo low priority operator

M.B. ::

Aha. Hvala.
Everyone started out as a newbie.
Sadly only a handful ever progress past that point.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Sode ter Lihe(C Sharp)

Oddelek: Programiranje
161677 (1475) detroit

[C#]naloga iz metod!

Oddelek: Programiranje
81674 (1507) Ziga Dolhar
»

Funkcije in prenos po referenci

Oddelek: Programiranje
141867 (1573) xordie
»

Pomoč pri nalogi v C++

Oddelek: Programiranje
51368 (1368) bozjak
»

[c++] Izpis večjega števila, if ali abs?

Oddelek: Programiranje
311355 (1070) djtey

Več podobnih tem