Meny och menyval med villkor.
jag har skapat en meny till olika funktioner. man ska inte kunna välja 2 innan 1,3 innan 1 och 2, och 4 innan 1 och 2.
jag vet inte hur jag ska lösa dettaswitch(choice) {
case '1':
gjort=1;
limit(vektor),skriv(vektor);
break;
case '2':
if(!gjort)
printf("felmeddelande\n");
else
bubbel(vektor);
break;
case '3':
olikavarde(vektor,&medel,&min,&max,&median);
printf("medel: %0.1f\n", medel);
printf("%d %d\n",min,max);
printf("median: %f\n",median);
break;
case '4':
if(gjort && !gjort2)
{
printf("felmeddelande\n");
}
else
binarsok(vektor,tal);
break;
default:
printf("invalid menu choice\n");
}
Det är väl en bra lösning men du har slarvat lite:
Sätt gjort2 i case2; testa på gjort och gjort2 i case3; testet i case4 är fel skall vara "icke(gjort och gjort2) " fast i c-syntax inte
"(gjort och icke gjort2)" som du skrivit.
om jag förstått det du skriver rätt så funkar det inte.
char choice;
printf("\nMenyval\n");
printf("\n1. slump\n");
printf("2. bubbel\n");
printf("3. olikavarde\n");
printf("4. binarsok\n");
choice=get_choice();
switch(choice) {
case '1':
gjort=1;
limit(vektor),skriv(vektor);
break;
case '2':
gjort2=2;
if(!gjort)
printf("felmeddelande\n");
else
bubbel(vektor);
break;
case '3':
if(gjort && gjort2)
olikavarde(vektor,&medel,&min,&max,&median);
printf("medel: %0.1f\n", medel);
printf("%d %d\n",min,max);
printf("median: %f\n",median);
break;
case '4':
if(!gjort && !gjort2)
{
printf("felmeddelande\n");
}
else
binarsok(vektor,tal);
break;
default:
printf("invalid menu choice\n");
}
}
return 0;
}
int main()
{
int vektor[talfoljd];
int low,mid,high;
int min,max;
float median=0;
float medel;
int tal;
int gjort=0;
int gjort2=0;
int gjort3=0;
int gjort4=0;
srand(time(NULL));
while (1) {
char choice;
printf("\nMenyval\n");
printf("\n1. slump\n");
printf("2. bubbel\n");
printf("3. olikavarde\n");
printf("4. binarsok\n");
choice=get_choice();
switch(choice) {
case '1':
gjort=1;
limit(vektor),skriv(vektor);
break;
case '2':
gjort2=2;
if(!gjort)
printf("felmeddelande\n");
else
bubbel(vektor);
break;
case '3':
if(!gjort && !gjort2){
printf("felmeddelande\n");
}
else if(gjort && gjort2){
olikavarde(vektor,&medel,&min,&max,&median); {
printf("medel: %0.1f\n", medel);
printf("%d %d\n",min,max);
printf("median: %f\n",median);
}
}
break;
case '4':
if(!gjort && !gjort2)
{
printf("felmeddelande\n");
}
else if
(gjort && gjort2)
binarsok(vektor,tal);
break;
default:
printf("invalid menu choice\n");
}
}
return 0;
}
Nu har jag gjort så här ( se nedan)
allt funkar förutom att när jag väljer 1 och sen 3 så kommer inget alls upp. och samma när jag väljer 1 och 4. men om jag bara väljer 1 eller 4 så kommer texten "felmeddelande" upp.
int vektor[talfoljd];
int low,mid,high;
int min,max;
float median=0;
float medel;
int tal;
int gjort=0;
int gjort2=0;
int gjort3=0;
srand(time(NULL));
while (1) {
char choice;
printf("\nMenyval\n");
printf("\n1. slumpa 100 st tal\n");
printf("2. sortera slumpad lista\n");
printf("3. ange max,min,median och medelvärde\n");
printf("4. sök efter valfritt tal\n");
choice=get_choice();
switch(choice) {
case '1':
gjort=1;
printf("vektor slumpad\n");
limit(vektor),skriv(vektor);
break;
case '2':
gjort2=2;
if(!gjort)
printf("felmeddelande\n");
else
bubbel(vektor);
break;
case '3':
gjort3=3;
if(!gjort && !gjort2){
printf("felmeddelande\n");
}
else if(gjort && gjort2){
olikavarde(vektor,&medel,&min,&max,&median); {
printf("min:%d max:%d\n",min,max);
printf("medelvärde: %0.1f\n", medel);
printf("median: %f\n",median);
}
}
break;
case '4':
if(!gjort && !gjort2)
{
printf("felmeddelande\n");
}
else if
(gjort && gjort2)
binarsok(vektor,tal);
break;
default:
printf("invalid menu choice\n");
}
}
return 0;
}