| | |
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Autor | Správa |
---|
Registrovaný: 09.04.11 Prihlásený: 11.01.14 Príspevky: 257 Témy: 26 Bydlisko: Kesa |
Mám spraviť program, do ktoréhoho napíšem nejaký reťazec a vynechá mi medzeri. Zatial mi napadli 3 možnosti ako to spraviť.
1. Ošetriť to rovno pri načítavaní poľa (primitívne riešenie a podľa mňa by sa to tak nemalo robiť, lebo úlohou je načítať reťazec a z neho bynechať medzeri)
2. Vytvoriť si pomocný reťazec, kde prepíšem písmená bez medzier (toto je už dobré riešenie, ale zabere to viac času programu)
3. Ošetriť to rovno v tom reťazci. A tu mám ten problém, že mi to aj spraví, ale logicky mi tam zostanú zvyšné písmená (o koľko medzier sa posunie, toľko písmen zostane). Napríklad keď zadám ja som clovek, tak mi vypíše jasomclovekek. Myslel som si, že keď tam zadám nulový znak (podľa mňa by tam mal byť už, lebo pri načítavaní pola je, tak sa mi zvyšok roťazca zmaže.
Kód: #include <stdio.h> #include <stdlib.h>
#define max 30
int nacitanie(char pole[]); void vypis(char pole[], int dlzka); void vynechanie_medzier(char pole[], int dlzka);
int main() { char pole[max]; int dlzka;
dlzka = nacitanie(pole); vynechanie_medzier(pole, dlzka); vypis(pole, dlzka);
putchar('\n'); system("pause"); return 0; }
int nacitanie(char pole[]) { int i; char pom;
for(i = 0; i < max - 1; i++) { pom = getchar(); if(pom == '\n') break; pole[i] = pom; } pole[i] = '\0';
return i; }
void vypis(char pole[], int dlzka) { int i;
for(i = 0; i < dlzka; i++) putchar(pole[i]); }
void vynechanie_medzier(char pole[], int dlzka) { int i = 0, j = 0;
for(i = 0, j = 0; i < dlzka; i++, j++) { if(pole[i] == ' ') { pole[j] = pole[i + 1]; i++; } pole[j] = pole[i]; } //tu som si neni isty, ci mi ponechal aj 0 znak }
_________________ 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ý: 25.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 31.01.2012 13:03 | |
|
Sprav to takto, je to jednoduchsie:
Kód: void vynechanie_medzier(char pole[], int dlzka) { int i, j;
for( i = 0; i < dlzka; i++ ) { if ( pole[i] == ' ' ) { for ( j = i; j < dlzka; j++ ) pole[j] = pole[j + 1]; i--; /* ak je nasledujuci znak opat medzera, treba sa vratit na tento index */ } }
}
Jednoducho ak najdes medzeru, cely string za nou ( vratane koncovej nuly ) presun o jednu poziciu. A takymto sposobom ti to bude fungovat aj v pripade, ze napises viacero medzier za sebou.
|
|
Registrovaný: 09.04.11 Prihlásený: 11.01.14 Príspevky: 257 Témy: 26 Bydlisko: Kesa |
Díky, ide to. Ja som robil tú chybu, že som neposúval celý reťazec, ale len jednotlivé písmená, čiže mi vždy na konci zostali vystavačné.
_________________ 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: 3 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| EXCEL - vynechanie prázdnych buniek v Ostatné programy | 2 | 1568 | 02.06.2021 18:51 eon5 | | vynechanie tabulky pri INSERT INTO v PHP, ASP | 5 | 538 | 02.03.2008 21:56 max-m | | Vynechanie alebo Pridelenie konktretneho pismena ext. HDD v Operačné systémy Microsoft | 2 | 607 | 21.03.2014 14:24 harm22 | | odstranenie medzier v PHP, ASP | 9 | 1178 | 03.09.2008 17:14 Tominator | | odstranenie medzier v PHP, ASP | 4 | 946 | 23.04.2010 23:09 stenley | | Počet podreťazcov v reťazci v PHP, ASP | 1 | 308 | 28.04.2010 12:38 stenley | | hladanie podretazca v retazci v PHP, ASP | 3 | 937 | 31.08.2008 22:35 Codik | | Nahradenie tagov v retazci v PHP, ASP | 3 | 374 | 17.06.2012 18:47 Ďuri | | Problem s URL v retazci v PHP, ASP | 7 | 319 | 03.12.2012 9:23 newboy1 | | Hľadanie možných kombinácií v reťazci v PHP, ASP | 2 | 503 | 08.04.2011 15:36 jurov | | zalomenie textu bez medzier v HTML, XHTML, XML, CSS | 6 | 850 | 09.03.2009 21:13 pa3ck | | pridavanie medzier do stringu v PHP, ASP | 7 | 421 | 31.01.2009 21:38 stenley | | Zistenie poslednych 3ch medzier v PHP, ASP | 5 | 458 | 27.02.2009 12:10 Tominator | | zobrazovanie znaku v retazci, jazyk C v Assembler, C, C++, Pascal, Java | 2 | 413 | 04.01.2012 20:49 svejk | | [VYRIESENE] Problem s mazanim textu v retazci v PHP, ASP | 1 | 386 | 16.03.2009 8:21 stenley | | odstranenie niekolkych medzier aby bola jedna v Assembler, C, C++, Pascal, Java | 4 | 582 | 11.01.2010 15:41 ado21 |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|