Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 09.04.11 Prihlásený: 11.01.14 Príspevky: 257 Témy: 26 | 26 Bydlisko: Kesa |
Mám za úlohu: Vstupom je reťazec a pole celých čísel. Funkcia vypisuje reťazec znak po znaku, pričom ak natrafí na znak '*', vypíše nasledujúci znak (môže byť aj '*') toľkokrát, aké číslo nasleduje v poli.
Mám ten problém, že keď chcem hodnotu z poľa priradiť do premennej pom, tak mi nepriradí jej číselnú hodnotu, ale jej ASCII hodnotu. Nechápem prečo, keďže tam mám int
Kód: void vypis_retazca_nasobkom_pola(char retazec[], int pole[], int dlzka_retazca, int dlzka_pola) { int i, j = 0, k; int pom;
for(i = 0; i < dlzka_retazca; i++) { if(retazec[i] == '*') { if(pole[j] <= dlzka_pola) //zacne sa pole odznova j = 0;
pom = pole[j]; for(k = 0; k < pom; k++) putchar(retazec[i + 1]); i++; j++; } putchar(retazec[i]); } }
_________________ NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n |
|
Registrovaný: 11.01.09 Prihlásený: 16.11.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Tuto cast:
Kód: if(pole[j] <= dlzka_pola) //zacne sa pole odznova j = 0; si nemyslel nahodou takto: Kód: if( j >= dlzka_pola) //zacne sa pole odznova j = 0; ??? Po dalsie, neviem isto, ale ja chapem zadanie tak, ze nasledujuci znak sa ma vypisat x-krat, nie x-krat + 1, ako to mas ty. Cize si este mozes upravit cyklus: Kód: for(k = 0; k < pom; k++) napriklad takto: Kód: for(k = 1; k < pom; k++)
|
|
Registrovaný: 09.04.11 Prihlásený: 11.01.14 Príspevky: 257 Témy: 26 | 26 Bydlisko: Kesa |
To su zatial len malickosti, s ktorými som sa ešte nezaoberal. Každý program si krokujem, tak by som nato došiel. To if som tam doplnil len teraz a hej, máš pravdu, takto by to robilo vkuse zacinalo na prvom prvku v poli. A aj to k má byť od 0. Ale ako vravím, stýmto som sa netrápil zatial, bolo to písané v rýchlosti. Problém mi robí to čo som napísal hore. Do premennej pom sa mi neuloži hodnota prvku ale ascii hodnota. To si mi zabudol poradiť
_________________ NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n |
|
Registrovaný: 11.01.09 Prihlásený: 16.11.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Tak ja som si to skusil a ak to mas tak, ako som to upravil, funguje to spravne. Zalezi teda, ake pole predavas funkcii. Pre ilustraciu, moj priklad vyzeral takto:
Kód: #include <stdio.h> #include <string.h>
void vypis_retazca_nasobkom_pola(char retazec[], int pole[], int dlzka_retazca, int dlzka_pola) { int i, j = 0, k; int pom;
for(i = 0; i < dlzka_retazca; i++) { if(retazec[i] == '*') { if( j >= dlzka_pola) //zacne sa pole odznova j = 0;
pom = pole[j]; for(k = 1; k < pom; k++) putchar(retazec[i + 1]); i++; j++; } putchar(retazec[i]); } }
int main() {
char s[] = "skus*ka vypisov*ania tex*tu"; int p[] = { 3, 5, 2 }; /* moje pole, ktore davam funkcii ako argument */ vypis_retazca_nasobkom_pola( s, p, strlen( s ), 3 );
putchar( '\n' ); return 0;
}
Vypis:
Citácia: skuskkka vypisovaaaaania texttu
Je mozne, ze nejakym sposobom nespravne zadavas pole.
|
|
Registrovaný: 09.04.11 Prihlásený: 11.01.14 Príspevky: 257 Témy: 26 | 26 Bydlisko: Kesa |
Program ide, len mi zobere zlú hodnotu. Tu mám funkciu načítavania
Kód: int nacitanie_cisiel_v_poli(int pole[]) { int i; int pom; int pocet = 0;
for(i= 0; i < max; i++) { pom = getchar(); if(pom == '\n') break; pole[i] = pom; pocet++; } return pocet; }
_________________ NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n |
|
Registrovaný: 11.01.09 Prihlásený: 16.11.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Cize ty touto funkciou nacitavas cisla do premennej pole? Preto tie ASCII hodnoty. Totizto getchar() vracia ASCII hodnoty znaku nacitaneho zo vstupu. Darmo ty napises cislo, stale sa jedna o znak. Mozes ho treda prekonvertovat takto jednoducho, bez pouzitia nejakych externych funkcii:
Kód: pom = getchar(); pom -= 0x30; if ( ( pom > 9 ) || ( pom < 0 ) ) /* osetrit na nespravny vstup */ break;
0x30 je hexa vyjadrenie znaku '0'. Ak teda zadas povedzme cislo '5', jeho ascii v hexa sustave je 0x35. 0x35 - 0x30 je 0x05. Cize dostal si zo znaku '5' ciselnu hodnotu 5. Teraz by ti to malo fungovat spravne.
|
|
Registrovaný: 09.04.11 Prihlásený: 11.01.14 Príspevky: 257 Témy: 26 | 26 Bydlisko: Kesa |
Aha, díky. Tieto súvislosti programovania a sústav budeme preberat až teraz v lete. Takže ten môj if je tam zbitočný, nahradím ho tým tvojím.
_________________ NB - HP Pavilion DV7 3190 -- Windows® 7 Home Premium 64-bit -- Intel® Core™ i7-720QM 1,6 GHz az 2,8 Ghz Turbo Boost, 6 MB pamäte cache úrovne 2 -- 4 GB DDR3 -- disk 640 GB SATA 5400 ot/min -- rozlíšenie 1600 x 900 -- NVIDIA® GeForce® GT 230M -- 2 815 MB grafickej pamäte s vyhradenou pamäťou 1 GB DDR3 -- pripojenie 802.11 a/b/g/n |
|
Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Assembler, C, C++, Pascal, Java | 2 | 353 | 20.10.2012 15:13 faraon | | v Assembler, C, C++, Pascal, Java | 0 | 379 | 19.01.2011 22:38 1daemon1 | | v Assembler, C, C++, Pascal, Java | 14 | 706 | 02.04.2011 18:16 M4rek | | v Assembler, C, C++, Pascal, Java | 4 | 444 | 17.11.2012 20:04 m4r14n | | v Assembler, C, C++, Pascal, Java | 4 | 457 | 07.10.2012 18:52 Fico | | v Elektronika | 0 | 516 | 10.01.2012 20:34 p4tooo | | v PHP, ASP | 2 | 374 | 10.11.2009 20:22 pilná lama glama | | v Elektronika | 10 | 1161 | 07.03.2007 12:43 Taomas | | v Assembler, C, C++, Pascal, Java | 6 | 512 | 06.07.2010 8:09 koso | | v Assembler, C, C++, Pascal, Java | 2 | 402 | 30.04.2012 14:10 elementstyle | | v Assembler, C, C++, Pascal, Java | 9 | 1026 | 08.10.2010 11:54 Blackshadow | | v Databázy | 2 | 699 | 29.10.2011 16:40 camo | | v Assembler, C, C++, Pascal, Java | 5 | 454 | 18.08.2015 22:32 bebebrumik | | v Assembler, C, C++, Pascal, Java | 5 | 547 | 05.12.2011 14:07 t-pack25 | | v Databázy | 6 | 1367 | 04.09.2006 11:47 ronny | | v ATI/AMD grafické karty | 3 | 444 | 04.01.2010 22:29 OmeGa |
|