06. juni 2002 - 10:12
Der er
1 løsning
menu i C
jeg kan ikke rigtigt få menu1 til at virke, jeg kan få valg til at gå ned i menu 1, og i menu1 skal der være en menu mere hvor man kan vælge mellem 2 ting....jeg kan bare ikke få det til at virke...nogle som har lidt hint ?
//-------Include-Filer -----
#include <time.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <bios.h>
#include <dos.h>
// ------Globale Variable-------
const unsigned char ae=145, oe=155, aa=134, AE=146, OE=157, AA=143;
int valg, manuel, p, j;
//----funktionernes prototyper---------
void Menu(void);
void Valg(int j);
void ValgOm(void);
void menu1();
void hent();
//------HOVED-PROGRAM----------
/*void main()
{
velcome();
int j;
do
{
clrscr();
Menu();
scanf("%i",&j);
Valg(j);
getch();
}
while (j!=4);
clrscr();
afslut();
}
*/
//----Funktionernes Definitioner-------
void Menu(void)
{
clrscr();
textcolor(9);
gotoxy(9,5); cprintf(" menu til noget ");
gotoxy(9,6); cprintf(" _________________________ ");
gotoxy(9,7); cprintf(" 1. blah (dur) ");
gotoxy(9,8); cprintf(" __________________________");
gotoxy(9,9); cprintf(" Skriv dit valg 1-1-> ");
}
//----------valg----------
void Valg(int j)
{
gotoxy(40,4+j);
switch(j)
{
case 1:
system("cls");
textcolor(9);
gotoxy(1,1); cprintf("\nUnder dette menupunkt har du mulighed blah blah blah");
gotoxy(1,2); cprintf("\ntryk p† 'Q' for at komme ud af status");
getch();
clrscr();
menu1();
break;
default: ValgOm();
}
gotoxy(39,14);
}
//-----om valg-----------
void ValgOm(void)
{
int j;
gotoxy(57,13);
printf("<-- Duer ikke v%clg igen.",145);
for(j=1;j<5;j++)
{
gotoxy(51,6+j);
delay(400);
printf("<---%i",j);
}
}
//-------Menu 1--------
void menu1()
{
clrscr();
textcolor(9);
gotoxy(9,5); cprintf(" ___________________________ ");
gotoxy(9,6); cprintf(" 1. mere blah ");
gotoxy(9,7); cprintf(" ____________________________");
gotoxy(9,8); cprintf(" Skriv dit valg blandt 1-1-> ");
{
gotoxy(40,3+j);
switch(j)
{
case 1:
system("cls");
textcolor(9);
gotoxy(1,1); cprintf("\nUnder dette menupunkt har du mulighed blah blah blah");
gotoxy(1,2); cprintf("\ntryk på 'Q' for at komme ud af status");
getch();
clrscr();
hent();
break;
default: menu1();
}
}
Du har lavet en del fejl omkring dine while loops, ligesom du bruge lokale og globale variabler med samme navn (f.eks. i ValgOm). Det giver lidt rod i hvad der egentlig checkes på, og hvornår j har den ønskede værdi.
Generelt bør du læse og behandle menu-valg samme sted, som du viser menuen. Nedenstpående program virker - jeg har dog ændret "Slut"/"Tilbage" til option 9:
//-------Include-Filer -----
#include <time.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <dos.h>
// ------Globale Variable-------
const unsigned char ae=145, oe=155, aa=134, AE=146, OE=157, AA=143;
int valg, manuel, p, j;
//----funktionernes prototyper---------
int Menu(void);
int Menu1(void);
void ValgOm(void);
void hent() { return; };
void welcome() { return; };
void afslut() { return; };
//------HOVED-PROGRAM----------
int main()
{
welcome();
int j;
do
{
j = Menu();
}
while (j != 9);
clrscr();
afslut();
return 0;
}
//----Funktionernes Definitioner-------
int Menu(void)
{
int x;
do
{
clrscr();
textcolor(9);
gotoxy(9,5); cprintf(" menu til noget ");
gotoxy(9,6); cprintf(" _________________________ ");
gotoxy(9,7); cprintf(" 1. blah (dur) ");
gotoxy(9,8); cprintf(" 9. Afslut ");
gotoxy(9,9); cprintf(" __________________________");
gotoxy(9,10); cprintf(" Skriv dit valg 1-9-> ");
gotoxy(40,10);
scanf("%i",&x);
switch(x)
{
case 1:
system("cls");
textcolor(9);
gotoxy(1,1); cprintf("\r\nUnder dette menupunkt har du mulighed blah blah blah");
gotoxy(1,2); cprintf("\r\ntryk p† 'Q' for at komme ud af status");
if (getch() != 'q')
{
clrscr();
Menu1();
};
case 9: break;
break;
default: ValgOm();
}
gotoxy(39,14);
} while (x != 9);
return x;
}
//-----om valg-----------
void ValgOm(void)
{
int i;
gotoxy(45,10);
printf("<-- Duer ikke v%clg igen.",145);
for(i=1;i<5;i++)
{
gotoxy(45, 10);
sleep(400);
printf("<---%i",i);
}
}
//-------Menu 1--------
int Menu1()
{
int x;
do
{
clrscr();
textcolor(9);
gotoxy(9,5); cprintf(" Undermenu til noget ");
gotoxy(9,6); cprintf(" ___________________________ ");
gotoxy(9,7); cprintf(" 1. mere blah ");
gotoxy(9,8); cprintf(" 9. Tilbage ");
gotoxy(9,9); cprintf(" ____________________________");
gotoxy(9,10); cprintf(" Skriv dit valg blandt 1-9-> ");
gotoxy(40,10);
scanf("%i",&x);
switch(x)
{
case 1:
system("cls");
textcolor(9);
gotoxy(1,1); cprintf("\r\nUnder dette menupunkt har du mulighed blah blah blah");
gotoxy(1,2); cprintf("\r\ntryk på 'Q' for at komme ud af status");
if (getch() != 'q')
{
clrscr();
hent();
};
break;
case 9 : break;
default: break;
}
} while (x != 9);
return x;
}