webForumDet fria alternativet

Fler än 2 tal i programmet?

C/C++

1 svar · 306 visningar · startad av spiken

Medlem sedan apr. 20037 inlägg
Frågan#1

Vet inte hur jag ska bära mig åt när jag har fler tal än två i programmet. Använder mig av switch-satsen. Man ska kunna välja på menyn vad det ska göra. Och jag vet inte hur man skriver vilkoren i paranteserna.

#include<iostream.h>
#include<stdlib.h>
void main ()
{
//Deklarationer
int val;
double tal1, tal2, tal3;
cout<< "Mata in tre tal: ";
cin>> tal1>> tal2>> tal3;
system("cls");
cout<< "1. Minsta" <<endl;
cout<< "2. St\x84rsta" <<endl;
cout<< "3. Summa" <<endl;
cout<< endl << "V\x84lj: ";
cin>> val;
switch (val)
{
case 1:
if (tal1<tal2&&tal3)
cout<< tal1;
else if (tal1<tal2>tal3)
cout<< tal2;
else (tal1&&tal2<tal3)
cout<< tal3;
break;
case 2:
}
}

Medlem sedan juni 200010 432 inlägg
#2

Hrmf... har du sett wF´s forumkod? Om du placerar din kod mellan taggar som [kod ] & [/kod ] (utan mellanslaget mellad d och ]) blir koden mer trevlig att titta på och sannolikheten att få svar ökar, speciellt om man kommer med lång kod :)

Det du skulle behöva göra är att skissa lite på ett papper om vad du egentligen vill. Du skriver att du vill ha en meny, men inte får till parametrarna när det är mer än två tal. Kan inte riktigt förstå vad du menar, men om man tänker sig att dela upp programmet i flera delar (delproblem) så får vi att problemen kan delas upp så här:

1. En meny (vad den ska innehålla beror på syftet med programmet)
2. Ett resultat om minsta talet
3. Ett resultat om största talet
4. Ett resultat om summan av alla tal
5. Nånting som väljer rätt resultat
6. Nånting som knyter samman ovan

Nu blir det lite lättare... (då man kan bryta ned problem i mindre problem blir det oftast så). Vissa av problemen som ovan räknades upp är som klippt och skurna för funktioner. Vilket kan göras med följande uppdelning:

1. Funktion som returnerar menyval
2. Funktion som returnerar minsta talet
3. Funktion som returernar största talet

Övriga "problem" är så triviala att de löses på plats:

1. Summan är bara att räkna ihop
2. Vägvalet kan göras i form av en switch-sats
3. Eftersom det finns en meny, är nog tanken att man ska kunna göra samma sak om och om igen, så en loop är ju bra för att knyta samman säcken.

Så det skulle kunna se ut så här:

#include<iostream>  //inget '.h' på slutet

using namespace std;  //måste ange namnrymd

//meny görs enkelt i en separat funktion:
int menu(){
	int val;
	val = 0;
	cout << "Vad vill du gora?" << endl
		 << "# Avsluta    0"    << endl
	         << "# minsta     1"    << endl
		 << "# hogsta     2"    << endl
		 << "# summan     3"    << endl
		 << "# medel      4"    << endl;
	cin >> val;
	return val;
}

//funktion som returernar högsta värdet
double highest(const double &tal1,const double &tal2,const double &tal3){
	double highest;
	highest = 0;
	if(tal1 > tal2)
		highest = tal1;
	else 
		highest = tal2;

	if(highest < tal3)
		highest = tal3;

	return highest;
}

//funktion som returnerar det lägsta värdet
double lowest(const double &tal1,const double &tal2,const double &tal3){
	double least;
	least = 0;
	if(tal1 < tal2)
		least = tal1;
	else 
		least = tal2;

	if(least > tal3)
		least = tal3;

	return least;
}

int main () //standard att main returnerar till os:et
{ 
//Deklarationer 
int val;
double tal1, tal2, tal3;
val = 0;
do {
   cout << "Mata in 3 tal" << endl;
   cin >> tal1 >> tal2 >> tal3;
   
   switch(val = menu()){
     case 1 : cout << lowest(tal1,tal2,tal3) << endl;		  
        break;
     case 2 : cout << highest(tal1,tal2,tal3) << endl;
        break;
     case 3 : cout << tal1 + tal2 + tal3 << endl;
        break;
     case 4 : cout << (tal1 + tal2 + tal3)/3 << endl;
        break;
   }
}while(val);

return 0;  //main ska alltid returnera något enligt standard
}
253 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)