5 svar
304 visningar
Samjanah 10 – Fd. Medlem
Postad: 21 dec 2020 16:44

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");
}

farfarMats 1187
Postad: 21 dec 2020 16:57

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.

Samjanah 10 – Fd. Medlem
Postad: 21 dec 2020 23:12

om jag förstått det du skriver rätt så funkar det inte.

Samjanah 10 – Fd. Medlem
Postad: 21 dec 2020 23:14
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;
}
Samjanah 10 – Fd. Medlem
Postad: 21 dec 2020 23:26
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;
}
Samjanah 10 – Fd. Medlem
Postad: 22 dec 2020 09:25

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;
}
Svara
Close