Doplnění zdrojového kodu o nekonečný cyklus while (1) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Doplnění zdrojového kodu o nekonečný cyklus while (1) – C / C++ – Fórum – Programujte.comDoplnění zdrojového kodu o nekonečný cyklus while (1) – C / C++ – Fórum – Programujte.com

 

Karel Bern
~ Anonymní uživatel
12 příspěvků
19. 4. 2013   #1
-
0
-

Zdravim, potřeboval bych pomoci s doplněním již hotového programu. Mám program do školy, kterýá řeší matice a hledá v nich 3. nejmenší prvek, ale to není podstatou problemu, celý program mám již hotový. Program se ovládá pomocí jednoduchého menu v konzoli, ale jde o to, že bych potřeboval doplnit sůj zdrojový kod o pár příkazu, aby když si zvolím z mého menu 1 z možností a ta se vykoná, aby se mi poté objevilo znovu to úvodní menu co nazačátku a já si mohl znovu vybrat jekou chci možnost. Tuším, že se to bude realizovat pomocí příkazu while (1) , ale netuším jak to zabudovat do zdrojáku , aby to  běželo.

Děkuji za pomoc. Zdrojový kod pošlu.

Nahlásit jako SPAM
IP: 217.75.218.–
vitamin+8
Grafoman
19. 4. 2013   #2
-
0
-

 Mozes skusit nieco taketo:

int volba;

while(1){
	std::cin >> volba;	//alebo scanf ak pouzivas c

	switch(volba){
		case 0:
			//...
			break;
		case 1:
			//...
			break;
		
		//...

		case 8:
			goto stop;	
		

	}
}
stop:;		//goto label

	
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Karel Bern
~ Anonymní uživatel
12 příspěvků
19. 4. 2013   #3
-
0
-

Díky za příspěvek, zkoušel jsem to již něják realizovat, ale po vykonání libovolné volby z menu, mi to pote neukazovalo to Hlavni menu, ale hazelo mi to stale nekonecnou smycku stale te volby co jsem si vybral nazacatku. Zde je ten kod, já jsem to dával nad ten switch (volba) jsem dal to while (1) , ale to nepomohlo.

http://leteckaposta.cz/662367847  - Zde je ten zdrojový kod

Nahlásit jako SPAM
IP: 217.75.218.–
bak
~ Anonymní uživatel
1 příspěvek
19. 4. 2013   #4
-
0
-

goto asi nee, takovou prasarničku se neuč... 

Místo goto stop; dej return; //konec programu 

nebo takto - je to pseudo, do jazyka, který používáš si to přepiš.

 

//nejaky kod

do {
	//nejaky kod

	//nacteni volby
	if (volba == konec) pokracovat = false;	

} while (pokracovat);

//dalsi kod
Nahlásit jako SPAM
IP: 93.185.56.–
vitamin+8
Grafoman
19. 4. 2013   #5
-
0
-

#3 Karel Bern
Ak chces zobrazit menu pred kazdou volbou tak ho zobrazuj vo vnutri cyklu.

#4 bak
Suhlasim s tym ze pouzivanie  goto by sa malo obmedzit na minimum, ale toto je jeden z mala prikladov kde je dobre pouzit goto. Akonahle mas vnorene cykly alebo switche tak s break-om vyskocis len z jedneho cyklu/switchu. Pomocou goto mozes vyskocit z viacerych, je to rychlejsie a prehladnejsie ako testovat flagy.

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
ingiraxo+15
Grafoman
19. 4. 2013   #6
-
0
-

   



int main()
{
    int volba;
    
    while (1)
    {
        // 1) vypises celé menu
        // 2) načteš volbu (třeba číslo 1,2,3...)
        
        switch (volba)
        {
            // ukončí aplikaci při volbě 0
            case 0: return 0;
            // tvoje volba při vstupu "1"
            case 1:
                // tvůj kód
                break;
        }
        
        // 3) nějakej dodatečnej kód (třeba že se akce vykonala)
    }
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Karel Bern
~ Anonymní uživatel
12 příspěvků
19. 4. 2013   #7
-
0
-

#6 ingiraxo

Děkuji moc ingiraxo za tvoji užitečnou radu, již to funguje jak má. 

Nahlásit jako SPAM
IP: 217.75.218.–
Grungy0
Super člen
20. 4. 2013   #8
-
0
-

#2 vitamin
Myslím že problém goto, je v tom, že sa nevolajú deštruktory inštancií tried, ktorých platnosť by v bloku s goto skončila.

Nahlásit jako SPAM
IP: 188.123.100.–
Prvý náznak hlúposti, je pocit geniality.
vitamin+8
Grafoman
20. 4. 2013   #9
-
0
-

#8 Grungy
To nie je pravda, destructory sa volaju.

Mozes si to skusit:

#include <iostream>
struct C{
	
	C(){std::cerr << "construct\n";}
	~C(){std::cerr << "destruct\n";}
};
int main(){
	{
		C c;
		goto labelA;
		
	}
	labelA:;

}
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Grungy0
Super člen
20. 4. 2013   #10
-
0
-

#9 vitamin
Áno máš pravdu, ospravedlňujem sa, trepol som somarinu a neoveril som si to vopred.

Nahlásit jako SPAM
IP: 188.123.100.–
Prvý náznak hlúposti, je pocit geniality.
Karel Bern
~ Anonymní uživatel
12 příspěvků
22. 4. 2013   #11
-
0
-

Děkuji všem za rady probelm jsem vyřešil, ale nastal jiný, respektive se upravidlo zadání.  Mám v textovém souboru cosi napsaného ( není podstatné) , podstatné je , že když v menu tvolím volbu, aby se vytvořil textový soubor. Musí se v PC vytvořit tento textový soubor s tim obsahem co je v něm napsáno. Nevíte někdo jak to udělat?

Nahlásit jako SPAM
IP: 147.228.209.–
Karel Bern
~ Anonymní uživatel
12 příspěvků
22. 4. 2013   #12
-
0
-

#11 Karel Bern
Ještě doplnim, že nejde o klasické načtení souboru, jde o to, že dotyčný bude mít k dispozici pouze ten program .c , nikoliv ty textové soubory, takže si je nebude moc klasicky načist příkazem z kompu.

Nahlásit jako SPAM
IP: 147.228.209.–
22. 4. 2013   #13
-
0
-

Myslíš vytvořit nový soubor a zkopírovat do něj obsah jiného souboru?

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Karel Bern
~ Anonymní uživatel
12 příspěvků
22. 4. 2013   #14
-
0
-

No prostě mám nějáky textový soubor a v něm nějáke hodnoty, ale dotyčnému budu předávat pouze soubor .c , takže nebude mít u sebe v PC ten textový soubor, a v menu musí být volba, když jí zvolim, tak se u něj v PC vytvoří přesné ten samý textový soubor co mám já v PC ( název toho textového souboru bude pevně daný a nebude se měnit).

Nahlásit jako SPAM
IP: 147.228.209.–
Karel Bern
~ Anonymní uživatel
12 příspěvků
22. 4. 2013   #15
-
0
-

Ještě mě to napsadlo takhle, při zvolení té dané možnosti, se vytvoří v PC textový soubor a program ho něják naplní právě o ten zvolený obsah co by to mělo obsahovat.

Nahlásit jako SPAM
IP: 147.228.209.–
22. 4. 2013   #16
-
0
-

Pokud mám mít soubor obsahující např Setup systému, používám ini soubor. Binárka pak nese defaultní nastavení aby šla spustit i bez ini souboru a při jejím ukončení se uloží do ini souboru její nastavení. Něco takového?

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Karel Bern
~ Anonymní uživatel
12 příspěvků
22. 4. 2013   #17
-
0
-

#16 hlucheucho
Teď jsem tě moc nepochopil, ale asi něco v tom smyslu. Já vím jak tento problém vyřešit, prostě bych si v PC vytvořil jeden textový soubor a ten bych pak načetl v tom programu, ale jde o to, že dotyčný učitel chce po nás pouze poslat ten vysledky .c program, takže nechce ty textové, a proto se to musí udělat přes to menu a když zvolím tu volbu, tak se něják vytvoří ten textový soubor a když se vytvoří, tak už bude v sobě obsahovat nějákej text ( kterej bude vždy stejný, takže se nebude nic náhodně generovat).

Nahlásit jako SPAM
IP: 147.228.209.–
22. 4. 2013   #18
-
0
-

dá se jít na to hrubou silou: do zdrojového kódu dáš řetězec jako konstantu a při obsluze příslušné volby ho zkopíruješ do souboru.

Možná jsi nepochopil požadavek a máš poslat soubory v zip - stačí zipnout adresář, popř. to udělat samorozbalovací.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Karel Bern
~ Anonymní uživatel
12 příspěvků
22. 4. 2013   #19
-
0
-

Právěže pochopil, je tam vyslověně napsáno, že zip a podobné věci nechce, jde mu právě jen o ten výslednej program.

Nahlásit jako SPAM
IP: 147.228.209.–
Karel Bern
~ Anonymní uživatel
12 příspěvků
22. 4. 2013   #20
-
0
-

#19 Karel Bern
Jde o to, že když spustim ten program v C.

Tak se objevi nějáke menu například toto:

1. Načtení z klávenice

2. Nahodné generovaní

3. Vytoření textového souboru s obsahem

Zvolte si prosim možnost:

A já zvolím 3 a na obrazovce se objeví textový soubor byl vytvořen. ( Tzn. že se vytvoří tam, kde se právě nachází program c.)

Nahlásit jako SPAM
IP: 147.228.209.–
22. 4. 2013   #21
-
0
-

Soubor v aktuálním adresáři otevřeš nebo vytvoříš pomocí funkce fopen, zapíšeš jakýkoliv text pomocí fprintf a soubor zavřeš pomocí fclose. Klíčová slova pro Google už máš   

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Karel Bern
~ Anonymní uživatel
12 příspěvků
22. 4. 2013   #22
-
0
-

#21 hlucheucho
Díky to sice ano, ale tim printf to zapíšu pouze text, který uvidím v konzoli ne? Já bych ještě potřeboval právě něják naplnit ten textový sobour co se vytvoří.

Nahlásit jako SPAM
IP: 147.228.209.–
Karel Bern
~ Anonymní uživatel
12 příspěvků
22. 4. 2013   #23
-
0
-

#22 Karel Bern
No já jsem vůl, za 1.) máš tam fprintf , takže sry. a za 2.) Já nad tím hkledám nějáké složitosti a ono je to takhle jednoduchý, hele díky moc, za tvoje rady.

Nahlásit jako SPAM
IP: 147.228.209.–
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, 12 hostů

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ý