Avatar billede theguardian Nybegynder
22. oktober 2002 - 09:05 Der er 7 kommentarer og
2 løsninger

Genstarte programmet

Hej, jeg bruger følgende kode:

#include <iostream.h>
#include <stdlib.h>
#include <conio.c>

int oekonomi_procent_1()
{
    double nummer1;
    double nummer2;
    double udregning1;
    double udregning2;
    int udregn;
    char Restart;
    cout << "========== Selvvalgt opgave 2002 - Mads Madsen ==========" << endl;
    cout << "Du har valgt Oekonomi - Procent - Find xx % af xx kr.\n";
    cout << "\nIndtast xx %.\n" << endl;
    cin >> nummer1;
    cout << "\n" << nummer1 << "% af xx\n" << endl;
    cin >> nummer2;
    cout << "\n" << nummer1 << "% af " << nummer2 << "kr. = ";
    cout << nummer1/100*nummer2 << endl;   
    cout << "\n\n(N)Nyt Find xx% af xx kr. regnestykke, (A)afslut\n";
        cin >> Restart;
    switch (Restart)
    {
        case 'n':
            clrscr();
            return oekonomi_procent_1();
            break;
        case 'a':
            return 0;
            break;
    }
}

int oekonomi_procent_2()
{
    double nummer1;
    double nummer2;
    double udregning1;
    double udregning2;
    int udregn;
    char Restart;
    cout << "========== Selvvalgt opgave 2002 - Mads Madsen ==========" << endl;
    cout << "Du har valgt Oekonomi - Procent - xx % af xx kr. er xx\n";
    cout << "\nIndtast xx %.\n" << endl;
    cin >> nummer1;
    cout << "\n" << nummer1 << "% af xx er xx\n" << endl;
    cin >> nummer2;
    cout << "\n" << nummer1 << "% af xx er " << nummer2 << "kr., xx = ";
    cout << nummer2/nummer1*100 << endl;   
    cout << "\n\n(N)Nyt x x% af xx kr. er xx regnestykke, (A)afslut\n";
        cin >> Restart;
    switch (Restart)
    {
        case 'n':
            clrscr();
            return oekonomi_procent_2();
            break;
        case 'a':
            return 0;
            break;
    }
}

int oekonomi_procent_3()
{
    double nummer1;
    double nummer2;
    double udregning1;
    double udregning2;
    int udregn;
    char Restart;
    cout << "========== Selvvalgt opgave 2002 - Mads Madsen ==========" << endl;
    cout << "Du har valgt Oekonomi - Procent - Hvor mange procent er xx kr. af xx kr.\n";
    cout << "\nIndtast xx kr.\n" << endl;
    cin >> nummer1;
    cout << "\n" << nummer1 << " kr. af xx kr. er xx %\n" << endl;
    cin >> nummer2;
    cout << "\n" << nummer1 << " kr. af " << nummer2 << " kr. = ";
    cout << nummer1/nummer2*100 << " %" << endl;   
    cout << "\n\n(N)Nyt Hvor mange procent er xx kr. af xx kr. regnestykke, (A)afslut\n";
        cin >> Restart;
    switch (Restart)
    {
        case 'n':
            clrscr();
            return oekonomi_procent_2();
            break;
        case 'a':
            return 0;
            break;
    }
}

int oekonomi_procent_4()
{

}

int oekonomi_procent_5()
{

}

int oekonomi_procent()
{
    int oekonomi_type;
    cout << "========== Selvvalgt opgave 2002 - Mads Madsen ==========" << endl;
    cout << "Du har valgt Oekonomi - Procent, vaegle hvad du vil finde ud af:\n";
    cout << "\n 1) Find xx % af xx kr.\n 2) xx % af xx kr. er xx\n 3) Hvor mange procent er xx kr. af xx kr.\n 4) Procent større end\n 5) Procent mindre end" << endl;
    cin >> oekonomi_type;
   
    switch (oekonomi_type)
    {
        case 1:
            clrscr();
            return oekonomi_procent_1();
            break;
        case 2:
            clrscr();
            return oekonomi_procent_2();
            break;
        case 3:
            clrscr();
            return oekonomi_procent_3();
            break;
        case 4:
            clrscr();
            return oekonomi_procent_4();
            break;
        case 5:
            clrscr();
            return oekonomi_procent_5();
            break;
    }
}

int oekonomi_rente()
{

}

int oekonomi_vaekst()
{

}

int oekonomi_valuta()
{

}

int oekonomi()
{
    int oekonomi_type;
    cout << "========== Selvvalgt opgave 2002 - Mads Madsen ==========" << endl;
    cout << "Du har valgt Oekonomi, vaegle hvad du vil:\n";
    cout << "\n 1) Procent\n 2) Rente\n 3) Vaekst\n 4) Fremmed Valuta" << endl;
    cin >> oekonomi_type;
   
    switch (oekonomi_type)
    {
        case 1:
            clrscr();
            return oekonomi_procent();
            break;
        case 2:
            clrscr();
            return oekonomi_rente();
            break;
        case 3:
            clrscr();
            return oekonomi_vaekst();
            break;
        case 4:
            clrscr();
            return oekonomi_valuta();
            break;
    }
}

int algebra_plusminus()
{
    double nummer1;
    double nummer2;
    int udregn;
    char Restart;
    cout << "========== Selvvalgt opgave 2002 - Mads Madsen ==========" << endl;
    cout << "Du har valgt Tal og Algebra - Plus og Minus\n";
    cout << "\nIndtast det foerste nummer.\n" << endl;
    cin >> nummer1;
    cout << "\nIndtast det andet nummer.\n" << endl;
    cin >> nummer2;
    cout << "\nHvad vil du med de to tal?\n 1) Plus(+)\n 2) Minus(-)\n" << endl;
    cin >> udregn;
    cout << "\nDet bliver: " << endl;
    switch (udregn)
    {
        case 1:
            cout << nummer1+nummer2;
            break;
        case 2:
            cout << nummer1-nummer2;
            break;
    }

    cout << "\n\n(N)Nyt plus/minus regnestykke, (A)afslut\n";
        cin >> Restart;
    switch (Restart)
    {
        case 'n':
            clrscr();
            return algebra_plusminus();
            break;
        case 'a':
            return 0;
            break;
    }
}

int algebra_gangedivider()
{
    double nummer1;
    double nummer2;
    int udregn;
    char Restart;
    cout << "========== Selvvalgt opgave 2002 - Mads Madsen ==========" << endl;
    cout << "Du har valgt Tal og Algebra - Gange og Divider\n";
    cout << "\nIndtast det foerste nummer.\n" << endl;
    cin >> nummer1;
    cout << "\nIndtast det andet nummer.\n" << endl;
    cin >> nummer2;
    cout << "\nHvad vil du med de to tal?\n 1) Gange(*)\n 2) Divider(/)\n" << endl;
    cin >> udregn;
    cout << "\nDet bliver: " << endl;
    switch (udregn)
    {
        case 1:
            cout << nummer1*nummer2;
            break;
        case 2:
            cout << nummer1/nummer2;
            break;
    }

    cout << "\n\n(N)Nyt gange/divider regnestykke, (A)afslut\n";
        cin >> Restart;
    switch (Restart)
    {
        case 'n':
            clrscr();
            return algebra_gangedivider();
            break;
        case 'a':
            return 0;
            break;
    }
}

int algebra()
{
    int algebra_type;
    cout << "========== Selvvalgt opgave 2002 - Mads Madsen ==========" << endl;
    cout << "Du har valgt Tal og Algebra, vaegle hvad du vil:\n";
    cout << "\n 1) Plus og Minus\n 2) Gange og Divider \n" << endl;
    cin >> algebra_type;
   
    switch (algebra_type)
    {
        case 1:
            clrscr();
            return algebra_plusminus();
            break;
        case 2:
            clrscr();
            return algebra_gangedivider();
            break;
    }
}

double main()
{
    double firstNumber;
    double secondNumber;
    int math_type;
    char Restart;
    cout << "========== Selvvalgt opgave 2002 - Mads Madsen ==========" << endl;
    cout << "Vaelge hvad du vil udregne:\n";
    cout << "\n 1) Tal og Algebra\n 2) Oekonomi\n" << endl;
    cin >> math_type;
    switch (math_type)
    {
        case 1:
            clrscr();
            return algebra();
            break;
        case 2:
            clrscr();
            return oekonomi();
            break;
        case 3:
           
            break;
        case 4:
           
            break;
        case 5:
           
            break;
    }

    cout << "\n\n(R)restart, (E)exit\n";
        cin >> Restart;
    switch (Restart)
    {
        case 'r':
            clrscr();
            return main();
            break;
        case 'e':
            return 0;
            break;
    }
    return 0;
}

men hvis jeg f.eks er i algebra_plusminus(); så kan jeg ikke gå tilbage til main(); hvordan kan jeg gøre så jeg kan det ? eller bare gå en menu tilbage.


Skal lige siges jeg er total newbie i c++ derfor min kode nok et lidt rodet ^^
Avatar billede kamikaze Nybegynder
22. oktober 2002 - 09:18 #1
I din main:

case 1:
clrscr();
return algebra(); // denne linie lukker main
break;

Du kan skrive:
case 1:
clrscr();
algebra(); // samme linie UDEN return
break;

----------

Return bruges til at returnere en værdi dertil hvor en funktion er blevet kaldt fra. Som du bruger return lukker den programmet.

EKSEMPLER:

void MinFunktion()
{
  // gør noget
  return
}

void MinAndenFunktion()
{
  // gør noget andet
  return
}

void main()
{
  MinFunktion();
  MinAndenFunktion();
}

----------

int PlusFunktion(int a, int b)
{
  int c;
  c = a + b;
  return c;
}

void main()
{
  int tal_1 = 25;
  int tal_2 = 5;
  cout << PlusFunktion(tal_1, tal_2) << endl; // output: 30
}
Avatar billede theguardian Nybegynder
22. oktober 2002 - 09:31 #2
Kan du over sætte det til dansk ?
Får følgende fejl hvis jeg bare skriver main();
G:\054\Dev-Cpp\selvvalgt opgave\calc.cpp
[Warning] In function `void algebra()':

og

347 G:\054\Dev-Cpp\selvvalgt opgave\calc.cpp
implicit declaration of function `int main(...)'
Avatar billede kamikaze Nybegynder
22. oktober 2002 - 09:43 #3
Det er fordi hvis du kun skriver main() regner kompileren med at du mener int main() (implicit declaration of funktion...). Du kan skrive void main() hvis du ikke vil returnere noget.

Men det er nu slet ikke der problemet ligger.

Prøve at høre:

Når du bruger 'return' afslutter du din funktion og returnerer. Men du ønsker IKKE at afslutte din main-funktion og returnere, du ønsker at blive i den og vælge et andet menu-punkt. Derfor skal du IKKE bruge return i din main (ikke før du ønsker at afslutte den).
Avatar billede theguardian Nybegynder
22. oktober 2002 - 11:12 #4
nu har jeg skrevet void main(); men så afslutter mit program bare :(
Avatar billede kamikaze Nybegynder
22. oktober 2002 - 12:36 #5
Jamen, du kan IKKE bare skrive void main() og regne med at det kører. Du skal selvfølgelig ændre i din kode så din main funktion ikke returnerer når du ikke ønsker det! Det er ligegyldigt om du skriver void main() eller int main(). Som jeg skrev i mit tidligere indlæg: "Men det er nu slet ikke der problemet ligger."
Avatar billede theguardian Nybegynder
23. oktober 2002 - 13:18 #6
nu har jeg lavet min kode om til:

#include <iostream.h>
#include <conio.c>
#include <math.h>

float x,y,c;
float pi;
int option;

void plus()
{
clrscr();
cout << "========== Selvvalgt opgave 2002 - Mads Madsen ==========\n" << "Du har valgt Plus:\n" << "Indtast det første tal:" << endl;
cin >> x;
cout << "\nIndtast det andet tal:" << endl;
cin >> y;
cout << "\nResultatet er: " << x << " + " << y << " = " << x+y << endl;
}
void minus()
{

}
void gange()
{

}
void divider()
{

}
void kvadratrod()
{

}
void potens()
{

}
void procent1()
{

}
void procent2()
{

}
void procent3()
{

}
void procent4()
{

}
void procent5()
{

}
void procent()
{

}
void rente()
{

}
void veakst()
{

}
void valuta()
{

}
void a_cirkel()
{

}
void v_prisme()
{

}
void v_pyramide()
{

}
void v_cylinder()
{

}
void o_cylinder()
{

}
void v_kegle()
{

}
void p_cirkel()
{

}
void a_cirkelafshit()
{

}
void a_cirkeludsnit()
{

}
void s_cirkeludsnit()
{

}
void a_cirkelring()
{

}
void a_ellipse()
{

}
void p_ellipse()
{

}
void a_parabol()
{

}
void abc_parabol()
{

}
void a_rektangel()
{

}
void p_rektangel()
{

}
void a_parallogram()
{

}
void p_parallogram()
{

}
void a_trekant()
{

}
void p_trekant()
{

}
void a_trapez()
{

}
void p_trapez()
{

}
void a_pentagon()
{

}
void p_pentagon()
{

}
void a_polygon()
{

}
void p_polygon()
{

}
void v_retparallelepipedum()
{

}
void o_retparallelepipedum()
{

}
void v_skeavparallelepipedum()
{

}
void v_kugle()
{

}
void o_kugle()
{

}
void v_kugletop()
{

}
void v_retcylinder()
{

}
void o_retcylinder()
{

}
void v_skeavcylinder()
{

}
void o_skeavcylinder()
{

}
void v_retkegle()
{

}
void o_retkegle()
{

}
void v_keglestub()
{

}
void o_keglestub()
{

}
void v_tresidetpyramide()
{

}
void v_firesidetpyramide()
{

}
void geometri()
{

}
void volumer()
{

}
void ligninger()
{

}

void main()
{
    cout << "========== Selvvalgt opgave 2002 - Mads Madsen ==========" << endl;
    cout << "Vaelge hvad du vil:\n";
    cout << " 1. Plus\n" << " 2. Minus\n" << " 3. Gange\n" << " 4. Divider\n" << " 5. Kvadratrod\n" << " 6. Potens\n" << " 7. Procent\n" << " 8. Rente\n" << " 9. Veakst\n" << "10. Valuta\n" << "11. Geometri\n" << "12. Volumer\n" << "13. Ligninger\n";
    cin >> option;
    switch(option)
      {
      case 1:
        plus();
        break;
      case 2:
        minus();
        break;
      case 3:
        gange();
        break;
      case 4:
        divider();
        break;
      case 5:
        kvadratrod();
        break;
      case 6:
        potens();
        break;
      case 7:
        procent();
        break;
      case 8:
        rente();
        break;
      case 9:
        veakst;
        break;
      case 10:
        valuta;
        break;
      case 11:
        geometri();
        break;
      case 12:
        volumer();
        break;
      case 13:
        ligninger();
        break; 
      }
      cout << "\n(T)ilbage til menuen\n(A)fslut" << endl;
      cin >> option;
      switch(option)
        {
          case 't':
            return main();
            break;
          case 'a':
            return 0;
            break;
        } 
}

Men jeg kan stadig ikke komme tilbage, den afslutter bare :(
Avatar billede soepro Nybegynder
23. oktober 2002 - 14:03 #7
Du skal have indbygget en loop struktur i main omkring dine swicthes:

int main(void)
{
  do
  {
cout << "========== Selvvalgt opgave 2002 - Mads Madsen ==========" << endl;
    cout << "Vaelge hvad du vil:\n";
    cout << " 1. Plus\n" << " 2. Minus\n" << " 3. Gange\n" << " 4. Divider\n" << " 5. Kvadratrod\n" << " 6. Potens\n" << " 7. Procent\n" << " 8. Rente\n" << " 9. Veakst\n" << "10. Valuta\n" << "11. Geometri\n" << "12. Volumer\n" << "13. Ligninger\n";
    cin >> option;
    switch(option)
      {
      case 1:
        plus();
        break;
      case 2:
        minus();
        break;
      case 3:
        gange();
        break;
      case 4:
        divider();
        break;
      case 5:
        kvadratrod();
        break;
      case 6:
        potens();
        break;
      case 7:
        procent();
        break;
      case 8:
        rente();
        break;
      case 9:
        veakst;
        break;
      case 10:
        valuta;
        break;
      case 11:
        geometri();
        break;
      case 12:
        volumer();
        break;
      case 13:
        ligninger();
        break; 
      }
} while (option != 'a');
}

Under forudsætning af at 'a' skal afslutte. (Bemærk at der kun er EEN Cin af option - do-while løkken sørger for at du får menuen igen, når du er færdig med den enkelte funktion, indtil du trykker 'a'.
Avatar billede theguardian Nybegynder
23. oktober 2002 - 14:14 #8
Jeg læste lige hvad Kamikaze skrev igen, og ændrede lige i min kode engang til også fik jeg det til at virke, men inden jeg fik skrevet at jeg havde fundet ud af det så havde soepro svaret med nogenlunde det jeg selv havde lavet så derfor gav jeg dem begge point
Avatar billede kamikaze Nybegynder
24. oktober 2002 - 22:48 #9
Cool. Bare du fik det til at virke :o)
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