CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - powrót do początku programu

powrót do początku programu

dział ogólny

powrót do początku programu

Nowy postprzez tomass » czwartek, 23 grudnia 2010, 20:02

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

void main()
{
//>>main32
std::cout << "tekst" << std::endl;
std::cout << "nacisnij enter aby wrocic na początek, nacisnij na krzyżyk by wyjść" << std::endl;
//teleport to main32
getch();
}

jak zastąpić:
Kod: Zaznacz cały
//>>main32
//teleport to main32
Avatar użytkownika
tomass
Bladawiec
Bladawiec
 
Posty: 16
Dołączył(a): czwartek, 23 grudnia 2010, 18:46
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: windows
Kompilator: visual c++ 2008
SKYPE: byakuyaPL
Gadu Gadu: 9698486
    Windows VistaChrome

Re: powrót do początku programu

Nowy postprzez Darek_C++ » piątek, 24 grudnia 2010, 11:07

Zastosuj instrukcję goto. "Instrukcja goto służy do bezwarunkowego skoku w inne miejsce programu. Nazwa oznacza idź do. Po napisaniu instrukcji należy jeszcze określić dokąd ma nastąpić wyskok. Określa się to za pomocą etykiety.
Kod: Zaznacz cały
etykietka_1: //definicja etykiety

// kod porgramu
if(warunek == true)
{
    goto etykietka_1; // wywołanie skoku do etykietka_1
}

http://www.cplusplus.com/doc/tutorial/control/
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: powrót do początku programu

Nowy postprzez polymorphism » piątek, 24 grudnia 2010, 11:52

Zamiast goto lepiej użyć pętli while - nadużywanie goto jest złym nawykiem, w 99% przypadków skok ten można zastąpić innymi strukturami sterującymi.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: powrót do początku programu

Nowy postprzez tomass » piątek, 24 grudnia 2010, 18:51

Mam problem gdy chciałem skomplikować ten skrypt darka to wyskoczył error (9linkijka, "warunek") wie ktoś co jest źle ?
Avatar użytkownika
tomass
Bladawiec
Bladawiec
 
Posty: 16
Dołączył(a): czwartek, 23 grudnia 2010, 18:46
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: windows
Kompilator: visual c++ 2008
SKYPE: byakuyaPL
Gadu Gadu: 9698486
    Windows XPFirefox

Re: powrót do początku programu

Nowy postprzez polymorphism » piątek, 24 grudnia 2010, 18:54

Zamiast wklejać bezmyślnie kod, pomyśl. Czym jest warunek?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: powrót do początku programu

Nowy postprzez tomass » poniedziałek, 27 grudnia 2010, 21:21

jestem początkujący, nie wiem co to jest warunek a prawdę więc może ktoś powiedzieć jak to zrobić ?
Avatar użytkownika
tomass
Bladawiec
Bladawiec
 
Posty: 16
Dołączył(a): czwartek, 23 grudnia 2010, 18:46
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: windows
Kompilator: visual c++ 2008
SKYPE: byakuyaPL
Gadu Gadu: 9698486
    Windows VistaChrome

Re: powrót do początku programu

Nowy postprzez Cyfrowy Baron » poniedziałek, 27 grudnia 2010, 21:51

warunek to np. jakaś zmienna, np:

KOD cpp:     UKRYJ  
int x = 10;
int y = 5;
if(x == y) ShowMessage("Liczby są identyczne");
else ShowMessage("Liczby się różnią");


To są podstawy i nawet początkujący powinien to wiedzieć.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: powrót do początku programu

Nowy postprzez tomass » poniedziałek, 27 grudnia 2010, 22:49

Mam teraz:
Kod: Zaznacz cały
int nLiczba;
do
{
std::cout << "Wprowadz liczbe 10: ";
std::cin >> nLiczba;
} while (nLiczba == 10); 

I dziala, ale mi chodzi o inny przezkok o to:
Kod: Zaznacz cały
#include <iostream>
#include <conio.h>
void cos()
{
//teleport do A
}
void PokazTekst()
{
//PUNKT A
std::cout << "tekst" << std::endl;
cos();
}
void main()
{
PokazTekst();
getch();
}


Jak to zrobić ?
Avatar użytkownika
tomass
Bladawiec
Bladawiec
 
Posty: 16
Dołączył(a): czwartek, 23 grudnia 2010, 18:46
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: windows
Kompilator: visual c++ 2008
SKYPE: byakuyaPL
Gadu Gadu: 9698486
    Windows VistaChrome

Re: powrót do początku programu

Nowy postprzez Corvis » wtorek, 28 grudnia 2010, 10:58

przecież po wykonaniu funkcji cos() program wraca do PokazTekst() za wywołaniem funkcji cos(). A ty chcesz skoczyć na początek funkcji PokazTekst() ?? Masz jakieś konkretne zadanie ?? bo tak to ciężko :shock: . Jakoś pod górkę kombinujesz.

Polecam Symfonie C++ Grębosza - http://www.ifj.edu.pl/~grebosz/symfonia_c++_std_p.html
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: powrót do początku programu

Nowy postprzez tomass » wtorek, 28 grudnia 2010, 11:42

poprostu chce wiedzieć jak przeskoczyć danego miejsca do drugiego w (.bat) sie dalo
Avatar użytkownika
tomass
Bladawiec
Bladawiec
 
Posty: 16
Dołączył(a): czwartek, 23 grudnia 2010, 18:46
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: windows
Kompilator: visual c++ 2008
SKYPE: byakuyaPL
Gadu Gadu: 9698486
    NieznanyMozilla

Re: powrót do początku programu

Nowy postprzez Darek_C++ » wtorek, 28 grudnia 2010, 15:09

W programach nie stosuje się jakiś wyimaginowanych "przeskoków" tylko instrukcje warunkowe i pętle jak do{}while(warunek);
Poza tym błędnie roumujesz, bo nie mozna wykonać "przeskoku" do środka funkcji jak to podajesz w :
void cos()
{
//teleport do A
}
ale jak już do miejsca wywołania tej funkcji: cos();
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: powrót do początku programu

Nowy postprzez tomass » wtorek, 28 grudnia 2010, 20:07

Jak się nie da a jak jest w grach jak podczas gry nacisnasz wróć do menu gry to wracasz.
I chodzi mi oto by zrobił się przezkok do funkcji z menu ( main(); )
Kod: Zaznacz cały
#include <iostream>
#include <conio.h>

void fun2()
{
std::cout << "jestes w fun2" << std::endl;
std::cout << "nacisnij enter aby dojsc do menu powitalnego" << std::endl;
main(); //- tu jest error
}

void fun1()
{
std::cout << "jestes w fun1" << std::endl;
fun2();
}

void main()
{
std::cout << "witamy" << std::endl;
fun1();
getch();
}


Noi problem jest w tym że gdy chce przeteleportować się do funkcji która jest niżej to mam error, i co zrobić ?
Avatar użytkownika
tomass
Bladawiec
Bladawiec
 
Posty: 16
Dołączył(a): czwartek, 23 grudnia 2010, 18:46
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: windows
Kompilator: visual c++ 2008
SKYPE: byakuyaPL
Gadu Gadu: 9698486
    Windows 7Firefox

Re: powrót do początku programu

Nowy postprzez Corvis » wtorek, 28 grudnia 2010, 22:26

Bo niestety napisałeś brewerie :-( .Ale wynikają one z braku wiedzy i podstaw programowania.
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaChrome

Re: powrót do początku programu

Nowy postprzez tomass » wtorek, 28 grudnia 2010, 22:51

No więc powie ktoś co jest źle i co zrobić by zadziałało ?
Avatar użytkownika
tomass
Bladawiec
Bladawiec
 
Posty: 16
Dołączył(a): czwartek, 23 grudnia 2010, 18:46
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: windows
Kompilator: visual c++ 2008
SKYPE: byakuyaPL
Gadu Gadu: 9698486
    Windows VistaChrome

Re: powrót do początku programu

Nowy postprzez Cyfrowy Baron » środa, 29 grudnia 2010, 11:39

I chodzi mi oto by zrobił się przezkok do funkcji z menu ( main(); )


Nie możesz powrócić do funkcji main, gdyż w Twoim przykładzie funkcja fun2 znajduje się nad funkcją main, a kolejność zapisu ma znaczenie, więc funkcja fun2 nie widzi funkcji main. Jeżeli umieściłbyś funkcję fun2 pod main to z kolei main nie widziałoby funkcji fun2. Dlatego implementacje funkcji należy umieszczać pod funkcją main, a deklaracje tych funkcja nad funkcją main. Inna sprawa to ta, że nie możesz powrócić do funkcji main, gdyż nigdy z niej nie wychodzić, nawet gdy wywołujesz inną funkcję. Gdyż każda funkcja po wykonaniu operacji w ciele funkcji, powraca automatycznie do funkcji main.
Poniższy przykład dobitnie to obrazuje:

KOD cpp:     UKRYJ  
#include <tchar.h>
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
//---------------------------------------------------------------------------

using namespace std;

#pragma argsused

void fun1(void);
void fun2(void);

//---------------------------------------------------------------------------
int main(void)
{
 while(1)
 {
  clrscr();
  printf("To jest poczatek funkcji main.\n\n");
  printf("Teraz zostanie wywolana funcja fun2.\n\n");

  fun2();

  printf("Znow jestes w funkcji main.\n\n");
  cout << "Wcisnij dowolny klawisz by powrocic na poczatek funkcji main\n\n";
  getch();
 }

 getch();
 return 0;
}
//---------------------------------------------------------------------------

void fun1(void)
{
 char result[2];

 printf("Teraz jestes w funkcji fun1\n");
 cout << "Czy chcesz powrocic do funkcji fun2? (TAK/NIE) T/N\n";
 cin >>  result;

 if( !stricmp(result, "T") )
 {
  printf("\nWybrano TAK!\n");
  printf("Idziesz do funkcji fun2.\n\n");
  fun2();
 }
 else
 {
  printf("Wybrano NIE!\n");
  printf("Zostajesz w funkcji fun1.\n\n");
 }
}

void fun2(void)
{
 char result[2];

 printf("Teraz jestes w funkcji fun2\n");
 cout << "Czy chcesz przejsc do funkcji fun1? (TAK/NIE) T/N\n";
 cin >>  result;

 if( !stricmp(result, "T") )
 {
  printf("\nWybrano TAK!\n");
  printf("Idziesz do funkcji fun1.\n\n");
  fun1();
 }
 else
 {
  printf("Wybrano NIE!\n");
  printf("Zostajesz w funkcji fun2.\n\n");
 }
}
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Następna strona

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 4 gości