Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 3 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Vynechanie medzier v reťazci

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26
Bydlisko: Kesa
Príspevok NapísalOffline : 31.01.2012 11:51

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
Offline

Skúsený užívateľ
Skúsený užívateľ
Vynechanie medzier v reťazci

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 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.


Offline

Užívateľ
Užívateľ
Vynechanie medzier v reťazci

Registrovaný: 09.04.11
Prihlásený: 11.01.14
Príspevky: 257
Témy: 26
Bydlisko: Kesa
Príspevok Napísal autor témyOffline : 31.01.2012 13:48

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
Odpovedať na tému [ Príspevkov: 3 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. EXCEL - vynechanie prázdnych buniek

v Ostatné programy

2

1568

02.06.2021 18:51

eon5 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vynechanie tabulky pri INSERT INTO

v PHP, ASP

5

538

02.03.2008 21:56

max-m Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vynechanie alebo Pridelenie konktretneho pismena ext. HDD

v Operačné systémy Microsoft

2

607

21.03.2014 14:24

harm22 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. odstranenie medzier

v PHP, ASP

9

1178

03.09.2008 17:14

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. odstranenie medzier

v PHP, ASP

4

946

23.04.2010 23:09

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Počet podreťazcov v reťazci

v PHP, ASP

1

308

28.04.2010 12:38

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. hladanie podretazca v retazci

v PHP, ASP

3

937

31.08.2008 22:35

Codik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nahradenie tagov v retazci

v PHP, ASP

3

374

17.06.2012 18:47

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problem s URL v retazci

v PHP, ASP

7

319

03.12.2012 9:23

newboy1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hľadanie možných kombinácií v reťazci

v PHP, ASP

2

503

08.04.2011 15:36

jurov Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zalomenie textu bez medzier

v HTML, XHTML, XML, CSS

6

850

09.03.2009 21:13

pa3ck Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pridavanie medzier do stringu

v PHP, ASP

7

421

31.01.2009 21:38

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zistenie poslednych 3ch medzier

v PHP, ASP

5

458

27.02.2009 12:10

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zobrazovanie znaku v retazci, jazyk C

v Assembler, C, C++, Pascal, Java

2

413

04.01.2012 20:49

svejk Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [VYRIESENE] Problem s mazanim textu v retazci

v PHP, ASP

1

386

16.03.2009 8:21

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. odstranenie niekolkych medzier aby bola jedna

v Assembler, C, C++, Pascal, Java

4

582

11.01.2010 15:41

ado21 Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra