Skok z fce do fce – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Skok z fce do fce – C / C++ – Fórum – Programujte.comSkok z fce do fce – C / C++ – Fórum – Programujte.com

 

Fcelik
~ Anonymní uživatel
10 příspěvků
23. 7. 2011   #1
-
0
-

Zdravim

Chtěl bych se zeptat jestli se dá s pomocí příkazu GoTo  skočit z funkce do funkce. Třeba když v té první zvolím návrat do menu a menu mám napsaný v druhý funkci a použiju příkaz GoTo tak mě to píše : Label  ' menu ' used but not defined ,nevim jak inak to udelat.Díky

Nahlásit jako SPAM
IP: 90.176.181.–
KIIV
~ Moderátor
+43
God of flame
23. 7. 2011   #2
-
0
-

#1 Fcelik
slysel si nekdy o navratu z volane funkce? A jako bonus se dokonce vrati presne za misto odkud byla volana.

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Fcelik
~ Anonymní uživatel
10 příspěvků
30. 7. 2011   #3
-
0
-

#2 KIIV
Pomocí return ? Jestli jo jakoutam mam dat navratovou hodnotu ?  

Nahlásit jako SPAM
IP: 90.176.181.–
KIIV
~ Moderátor
+43
God of flame
30. 7. 2011   #4
-
0
-

Da se to rict takhle:  pokud potrebujes goto a jeste k tomu do jinejch funkci - delas to spatne...

(a taky by sis zasiral stack protoze se neukoncujou funkce)

Spis hod ukazku - nemam zase tak obrovskou predstavivost abych si to dokazal predstavit :)

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Fcelik
~ Anonymní uživatel
10 příspěvků
30. 7. 2011   #5
-
0
-

#4 KIIV

Tak tady to je,nevim jak to udelat,je to tam dole ve Fci cast 2. Ma tam byt hra s počítačem ,ale zatím studuji jak udělat náhodny číslo z 1-3.

diky

#include <iostream>

#include <cstdlib>

using namespace std;

int sirky = 32;
  int odber;
  int odber2;
  int zbytek;
  int odp;
   int skok;
 
  void cast1 (int sirky);
   void cast2 ();
  
  int main()
  {
          menu:
   cout<<"chcete hrat proti hraci nebo proti PC ? 1-hrac,2-PC ";
    cin>>odp;
   
    switch (odp) {
            case 1:
                
            cast1(sirky);
    break;
   case 2:
        cast2 ()  ;     
         break ;
         }
system("pause");
  return 0;
   }

void cast1 (int sirky)
    {
      zbytek=32;
           
     
         while(zbytek !=0)
          {
      znova:
    cout<<endl;
     cout<<"**********HRAC 1 *****************"<<endl;
    
   cout << "kolik sirek chcete odebrat ? (1-3) ";
     cin>>odber;
   cout<<endl;
   if(odber>3)
     {
     cout<<" uber jenom 1-3 sirky " <<endl;
    cout<<endl;
   
     cin.get();
     goto znova;
     }
  
   zbytek=zbytek-odber;
  cout<<"odebral jsi " << odber << " a zbyva jeste " << zbytek <<endl;
  cout<<endl;
 
    if(zbytek ==0)
      {
                          cout<<"konec hry,vyhral hrac1"<<endl;
                              break;
                                }
       cout<<endl;
    cout<<"*******HRAC2*******";
    cout<<endl;
    cout << "kolik sirek chcete odebrat ? (1-3) ";
     cin>>odber2;
   cout <<endl;
  
   if(odber2>3)
     {
     cout<<" uber jenom 1-3 sirky " <<endl;
     cin.get();
     goto znova;
     }
  
   zbytek=zbytek-odber2;
  cout<<"odebral jsi " << odber2 << " a zbyva jeste " << zbytek <<endl;
  cout<<endl;
    if(zbytek ==0)
      {
                          cout<<"konec hry,vyhral hrac2" <<endl;
                              break;
                                }
}

 
}

void cast2 ()
{    
                cout << " jeste to neni dodelany "<<endl;
         cout<<"chcete jit zpatky na menu nebo primo do hry proti kamaradovy ? 1=menu , 2=kamos ";
          cin>>skok;
         
          if (skok==1)
           {
                      NEVIM JAK TO TADY UDELAT DO MENU;
                      }
          else
           {
                      NEVIM JAK TO TADY UDELAT DO FCE   CAST 1;
                      }
                      }

Nahlásit jako SPAM
IP: 90.176.181.–
KIIV
~ Moderátor
+43
God of flame
30. 7. 2011   #6
-
0
-

   

#include <iostream>
#include <cstdlib>

using namespace std;

  int sirky = 32;
  int odber;
  int odber2;
  int zbytek;
  int odp;
  int skok;
 
  int cast1 (int sirky);
  int cast2 ();
  

int main() {

  int opakovat = 0;

  do {

    cout<<"chcete hrat proti hraci nebo proti PC ? 1-hrac,2-PC ";
    cin>>odp;

    switch (odp) {
      case 1:
        opakovat = cast1(sirky);
        break;
      case 2:
        opakovat = cast2();
        break ;
      default: opakovat=0;
    }

  } while ( opakovat );

  // system("pause");
  return 0;
}

int cast1 (int sirky) {

  zbytek = sirky;
           
  while (zbytek!=0) {
    cout<<endl;
    cout<<"**********HRAC 1 *****************"<<endl;
    
    cout << "kolik sirek chcete odebrat ? (1-3) ";
    cin>>odber;
    cout<<endl;

    if(odber>3) {
      cout<<" uber jenom 1-3 sirky " <<endl;
      cout<<endl;
   
      cin.get();
      continue;
    }
  
    zbytek = zbytek-odber;
    cout<<"odebral jsi " << odber << " a zbyva jeste " << zbytek <<endl;
    cout<<endl;
 
    if(zbytek ==0) {
      cout<<"konec hry,vyhral hrac1"<<endl;
      break;
    }

    cout<<endl;
    cout<<"*******HRAC2*******";
    cout<<endl;

    cout << "kolik sirek chcete odebrat ? (1-3) ";
    cin>>odber2;
    cout <<endl;

    do {  
      if(odber2>3) {
        cout<<" uber jenom 1-3 sirky " <<endl;
        cin.get();
        continue;
      }
      break;
    } while(1) ;
  
    zbytek = zbytek-odber2;
    cout<<"odebral jsi " << odber2 << " a zbyva jeste " << zbytek <<endl;
    cout<<endl;

    if(zbytek ==0) {
      cout<<"konec hry,vyhral hrac2" <<endl;
      break;
    }
  }
}

int cast2() {    
  cout << " jeste to neni dodelany "<<endl;
  cout<<"chcete jit zpatky na menu nebo primo do hry proti kamaradovy ? 1=menu , 2=kamos ";
  cin>>skok;
        
  if (skok==1) {
    return 1;
  } else {
    cast1(sirky);
  }

  return 1;
}

jen velice zbeznej nacrt... mas tam tak jak tak moc chyb... napriklad kdyz ti nekdo zada cokoliv jineho nez cislo tak je program v konci (tedy ne hned v prvnim menu tam to jeste zkousne)... kdyz da posledni hrac odecist vic jak zbyva - tak ses v zapornych cislech, kdyz da hrac odecist zaporne cislo tak pricitas, hrac muze odecist 0 ..........

a treba v tvem kodu jeste k tomu pokud hrac 2 zada spatne cislo tak pokracujes zadavanim hrace 1

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Fcelik
~ Anonymní uživatel
10 příspěvků
30. 7. 2011   #7
-
0
-

#6 KIIV
Díky. Když už jsem u toho nevíš jak by se dalo udělat náhodné číslo (odběr)  ?

Nahlásit jako SPAM
IP: 90.176.181.–
KIIV
~ Moderátor
+43
God of flame
30. 7. 2011   #8
-
0
-

rand()

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Fcelik
~ Anonymní uživatel
10 příspěvků
31. 7. 2011   #9
-
0
-

#8 KIIV
Jako  když chci udělat náhodné ze 3 tak napíšu    n=rand(3) a pak vypíšu n ?

Nahlásit jako SPAM
IP: 90.176.181.–
KIIV
~ Moderátor
+43
God of flame
Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Fcelik
~ Anonymní uživatel
10 příspěvků
3. 8. 2011   #11
-
0
-

Mohl by jsi mě ještě poradit? Udělal i generovaní náhodných čísel,ale když to spustím a dám proti PC nespustí se mi funkce a to mám všechno napsaný dobře. Nevíš co by s tím mohlo ještě být ?  

#include <iostream>
#include <cstdlib>
#include<time.h>
#include<stdlib.h>

using namespace std;

  int sirky = 32;
  int odber;
  int odber2;
  int zbytek;
  int nahodny;
  int skok;
   int odp;
 
  int cast1 (int sirky);
  int cast2 ();
  

int main() {

  int opakovat = 0;

  do {

    cout<<"chcete hrat proti hraci nebo proti PC ? 1-hrac,2-PC ";
    cin>>odp;

    switch (odp) {
      case 1:
        opakovat = cast1(sirky);
        break;
      case 2:
        opakovat = cast2();
        break ;
      default: opakovat=0;
    }

  } while ( opakovat );

  // system("pause");
  return 0;
}



int cast2()
 {    
   zbytek=sirky;
  
     while(zbytek!=0);
     {
        znovu:               
                  cout << "******HRAC********"<<endl;
                   cout<<"odeberte 1 az 3 sirky a potvrdte 'ENTER' pak bude hrat  ---POCITAC--- ";
                   cin>>odber;
      
                   if(odber>3)
                {
                 cout<<"uber jenom 1 az 3 sirky"<<endl;
                 cin.get();
                 }
            zbytek = zbytek-odber;
            cout<<"Odebral jsi " << odber << " a ve hre zbyva jeste " << zbytek << " sirek " <<endl;
              cout<<endl;
            if(zbytek==0)
              {
                         cout<<" Konec hry, VYHRAL HRAC" <<endl;
                          cin.get();
                          }
                          
                          
             cout<<"---POCITAC---"<<endl;
        
        srand( time ( NULL ));   
        
        nahodny = rand() % 3+1;
           
           zbytek = zbytek-nahodny;     
           cout<<" Pocitac odebral " << nahodny << " sirek a zbyva jeste " << zbytek << " sirek " << endl;
           
           if(zbytek== 3 || 2 || 1 || 0 )
             {
                       cout<<" GAME OVER , Vyhral ---POCITAC--- ";
                       cin.get();
                       } 
             }
            cout<<"Chcete hrat znovu nebo chcete jit do menu  ?  1-MENU , 2 Hrat znovu";
             cin>>skok;
      
            if (skok==1)
             {
          return 1;
            } 
            else {
            goto znovu;
      }

            return 1;
  }

Nahlásit jako SPAM
IP: 90.176.181.–
KIIV
~ Moderátor
+43
God of flame
3. 8. 2011   #12
-
0
-

#11 Fcelik
vim proc ti to nejede... nekonecny cyklus...

Krom toho si tam zase narval GOTO... nastesti tak daleko se to ani nedostane

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Fcelik
~ Anonymní uživatel
10 příspěvků
3. 8. 2011   #13
-
0
-

#12 KIIV
Ajo    taková blbá chyba . Díky

Nahlásit jako SPAM
IP: 90.176.181.–
KIIV
~ Moderátor
+43
God of flame
3. 8. 2011   #14
-
0
-

proto sem taky zastance  {  hned za tim, k to cemu patri....

je daleko tezsi udelat   while (1) ; {  nez kdyz je to az kdo vi kde :)

Nahlásit jako SPAM
IP: 94.112.35.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Podobná vlákna

Fce — založil Dave-CZ

C++ nepochopeni fce — založil Franceq

Fce filetype — založil daneka

Fce system — založil kejv

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý