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

Had – C / C++ – Fórum – Programujte.comHad – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
anonym
~ Anonymní uživatel
429 příspěvků
26. 3. 2009   #1
-
0
-

Ahojte, mám prosbu nevěděl by někdo jak na tohle zadání úkolu. Vůbec netušim jak na to, takže byl bych docela rád za vypracování, potřebuju ispiraci když uvidim nějakej kód fční tak si to pak překopu na to svojí verzi, který bych rozumněl lépe.

Úkolem je realizovat C/C++ program, který ze standardního vstupu načte 2D matici desetinných čísel, tuto matici uloží v paměti a bude v ní přesouvat prvky "snake" způsobem o zadaný počet pozic.

Vstupem programu je nezáporné celé číslo posun a čtvercová matice desetiných čísel. Celé číslo posun udává počet pozic, o které se má obsah matice posunout. Vlastní matice je zadaná jako posloupnost desetinných čísel. Řádek na vstupu představuje vždy jednu řádku matice. Čísla na řádku jsou oddělená mezerami a tabulátory (bílé znaky). Počet bílých znaků před prvním číslem na řádku, mezi čísly na řádku a za posledním číslem na řádku není omezený. Vlastní desetinná čísla jsou zapsaná v C/C++ notaci (nepovinná desetinná tečka, nepovinná desetinná část, nepovinný exponent a nepovinné znaménko exponentu). Zápis jednoho desetinného čísla má nejvýše 50 znaků.

Výstupem programu je obsah matice po provedení požadovaného počtu přesunů prvků. Matice je zobrazena po řádcích (řádek matice = řádek na výstupu), mezi prvky matice je vždy právě jedna mezera, před prvním a za posledním prvkem matice na řádce nejsou žádné mezery. Čísla na výstupu jsou zobrazena s přesností na 2 desetinná místa. Za každou žádkou výpisu (tedy i za poslední) je odřádkování (\n).

Program detekuje chybu a generuje odpovídající chybovou hlášku pokud zjistí, že vstupní data nemají odpovídající formát nebo pokud matice není správně zadaná (není čtvercová, nekonzistentní počet čísel na řádce). Chyba je zobrazena okamžitě po jejím zjištění. Za chybovým hlášením je odřádkování.

Přesun prvků matice "snake" způsobem je naznačen na následujícím obrázku:
"Snake" procházení maticí

Vytvořený program je spouštěn v omezeném prostředí. Je zakázáno používat C++ datový typ string a kontejnery z STL (vector, list, ...). Jejich použití povede k chybě při kompilaci. Je omezena doba běhu programu (max. 3 sec na jedno spuštění, referenční řešení potřebuje na výpočet cca 0.1 sec) a je omezena velikost dostupné paměti (dostačuje pro uložení dvou matic v binární podobě).
Ukázka práce programu:


Zadejte velikost posunuti:
3
Zadejte ctvercovou matici (radek matice = radek na vstupu):
1 2 3
4 5 6
7 8 9
Vysledna matice:
7.00 8.00 9.00
3.00 2.00 1.00
6.00 5.00 4.00


Zadejte velikost posunuti:
5
Zadejte ctvercovou matici (radek matice = radek na vstupu):
1 2 3 4
4 5 6 7
8 9 0 1
2 3 4 5
Vysledna matice:
1.00 5.00 4.00 3.00
3.00 2.00 1.00 2.00
4.00 7.00 6.00 5.00
0.00 9.00 8.00 4.00


Zadejte velikost posunuti:
2000000000
Zadejte ctvercovou matici (radek matice = radek na vstupu):
9 8 7 6 5
4 3 2 1 0
0 1 2 3 4
5 6 7 8 9
1 3 5 7 9
Vysledna matice:
9.00 8.00 7.00 6.00 5.00
4.00 3.00 2.00 1.00 0.00
0.00 1.00 2.00 3.00 4.00
5.00 6.00 7.00 8.00 9.00
1.00 3.00 5.00 7.00 9.00


Zadejte velikost posunuti:
5
Zadejte ctvercovou matici (radek matice = radek na vstupu):
1.25 -5.7 0.43
2e3 -4.5e-1 6.32
0 5.3e2 6.66
Vysledna matice:
-0.45 2000.00 0.00
1.25 6.66 530.00
-5.70 0.43 6.32


Zadejte velikost posunuti:
2
Zadejte ctvercovou matici (radek matice = radek na vstupu):
1 2 3
2 3 4
4 5
Nespravny vstup.


Zadejte velikost posunuti:
3
Zadejte ctvercovou matici (radek matice = radek na vstupu):
4 5
7 error
Nespravny vstup.

Nápověda

* Prostor pro matici je potřeba alokovat dynamicky.
* Dynamicky alokovaná paměť musí být uvolněna.
* Pro zpracování desetinných čísel na vstupu použijte funkci sscanf.
* Nenačítejte do paměti celé řádky najednou - v testovacích vstupech jsou úmyslně řádky velmi dlouhé, s dlouhými sekvencemi bílých znaků (překračují velikost dostupné paměti).
* Požadovaný posun může být velké číslo. Iterace a posouvání po jednom může překročit přidělený časový limit. Použijte efektivnější algoritmus, přesuňte správně čísla jedním průchodem maticí.

Nahlásit jako SPAM
IP: 147.32.97.–
Reklama
Reklama
anonym
~ Anonymní uživatel
429 příspěvků
26. 3. 2009   #2
-
0
-

ještě dodávám že ten had jde takhle:

->->->
<-<-<-
->->->
<-<-<-

Nahlásit jako SPAM
IP: 147.32.97.–
o-lox0
Super člen
28. 3. 2009   #3
-
0
-

Tak jsem to střihl přesně na 50 řádek.
Nandal jsem tam všechna ta zadání co jsi napsal a jsou OK.
Jestli s tim máš nějakej problém, tak se na něco optej neni v tom žádný chyták.

Dal jsem tu :-)) exe, na začátku chce velikost posuvu. To pole načítá ze souboru pojmenovaného vstup souboru bez přípony.

Nahlásit jako SPAM
IP: 85.71.152.–
anonym
~ Anonymní uživatel
429 příspěvků
28. 3. 2009   #4
-
0
-

To o-lox : Nechce se to nechat spustit. A nemohl bys mi pls poslat zdroják. Zajímá mě jak jsi udělal ty vstupy jsem úplnej začátečník v c a tak by mě zajímalo jak jsi to tam udělal. Když tak to pošli na ekkys@seznam.cz

Nahlásit jako SPAM
IP: 90.177.115.–
o-lox0
Super člen
28. 3. 2009   #5
-
0
-

Už jsem zadušený tim jak chce každej líně k hubě zdrojáky, nechápu tu NESPUSTITELNOST ! Nemá to žádný linkovaný dll jen user32,kernel, že by ses pokoušel o Linuxový zážeh :D ?

A zdroják tak ten jsem mám dojem neodeslal ani ve snech, které si z včerejšku na dnešek snil ať byly třeba jedny z těch nejpodařenějších snů. :D

** **
Načítám přes tyto funkce
float h;
getc(), ungetc(), scanf("%e",&h)

tak si zjisti která se na co hodí. nauč se s dynamickou pamětí float* a posuvem vždy o 1 prvek, trivialita.

víc ti tu můžu napsat už leda tak rovnou tu smyčku

Co se týče dynamický alokace, tam jsem moc nepochopil, když nevíš přesně velikost matice takže řešim realokací (minimálně u prvního řádku) pro případy matice 1000x1000.

Taky si ohlídej zda každej řádek splňuje stejný počet sloupců na to stačí jedna další proměnná.

---
Jinak máš psát člověče kolik deka koksu mi to hodí nebo posílat access na unikátní porno servery..
(nebo seknout s programovánim)

Nahlásit jako SPAM
IP: 85.71.152.–
sahbazz
~ Anonymní uživatel
1 příspěvek
28. 3. 2009   #6
-
-1
-
Mimo téma

muzes dat do prilohi v textovem formatu, jak vipada kod, rad bzch se na to podival, diki moc

Nahlásit jako SPAM
IP: 147.32.118.–
Quiark0
Věrný člen
28. 3. 2009   #7
-
0
-

sahbazz: LOOL

btw. Není to zadání z VUT FIT?

Nahlásit jako SPAM
IP: 89.102.6.–
anonym
~ Anonymní uživatel
429 příspěvků
28. 3. 2009   #8
-
0
-

To o-lox: Nešlo mi o celej zdroják jen část s tim načtením. Chtěl jsem vědět co za fce tam použít atd. No, ale dík za radu.

To Quiark: ne z vutu to neni, ale z cvut to je :)

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

Podobná vlákna

PyGame - pohyb hada — založil Pararam

Hadanicisel-maximalnipocetpokusu — založil MartinMartin12341234

Moderátoři diskuze

 

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