Avatar billede menace_ Nybegynder
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();
}
}
Avatar billede soepro Nybegynder
06. juni 2002 - 12:27 #1
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;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester