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

Jak zalomit řádek? – C / C++ – Fórum – Programujte.comJak zalomit řádek? – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
S2K0
Duch
19. 11. 2010   #1
-
0
-

Zdravím,
mám menší dotaz, chtěl bych se zeptat, jak zalomit řádek s textem po 30 znacích? Pracuju ve VS2010 C++
Předem díky za rady, tipy.

Nahlásit jako SPAM
IP: 90.178.143.–
Reklama
Reklama
zdenda
~ Anonymní uživatel
257 příspěvků
19. 11. 2010   #2
-
0
-

Co a jak vypisuješ?

Nahlásit jako SPAM
IP: 213.211.51.–
S2K0
Duch
19. 11. 2010   #3
-
0
-

jsem začátečník, takže tam určitě budou chyby, tak berte zřetel :D

#include <iostream>
#include <string>

using namespace std;

int main()
{

const char *Text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisquelacinia placerat pharetra. Fusce quis mi sapien.";
cout << " ";



return 0;
}


//btw. ma tam byt odsazeni o 3 znaky, tak proto cout " "//

Nahlásit jako SPAM
IP: 90.178.143.–
petr.satka0
Newbie
19. 11. 2010   #4
-
0
-

To S2K :
Ptáš se na std::endl nebo \n ? Nebo jsem to špatně pochopil?

Edit:
Nebo se ptáš na to, jak projít ten řetězec a pozalamovat jej?
V tom případě bude nejjednodušší použít místo *char třídu String a za každý 30tý znak vložit metodou insert znak \n. Pokud ti jde jenom o výstup pak můžeš použít metodu sbstr a postupně ukusovat 30 znakové kousky a ty vypisovat. std::cout<<kousek<<std::endl;

Edit2:
A nebo úplně jednoduše:
int i = 0;
while (text[i] != '\0') {
cout<<text[i];
i++;
if (i == 30) cout<<endl;
}

Edit3: Opravena chybka. Snad je to správně. V c++ jsem už chvíli nedělal. :)


Nahlásit jako SPAM
IP: 217.112.175.–
S2K0
Duch
20. 11. 2010   #5
-
0
-

Petr.Satka>Díky moc, zalomí se mi to po 30 znacích, ale musím ještě popřemýšlet, jak to udělat, aby se každý řádek zalomil po 30 řádcích a ne jen první, ale i tak díky moc, kdybys tu náhodou šel a není to na dlouho, jak to udělat, aby se i další řádky zalamovaly, tak m ito tu napiš. Ještě jednou díky Moc Mirek :smile1: :smile1:

Nahlásit jako SPAM
IP: 90.178.143.–
KIIV+42
God of flame
20. 11. 2010   #6
-
0
-

nejjednodussi bude vynulovat to i pri zalomeni
pripadne vyuzit operator % alias zbytek po deleni ..

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
S2K0
Duch
20. 11. 2010   #7
-
0
-

KIIV> díky moc. Taková blbost a já nad tím zbytečně uvažoval, jak blbec...

Nahlásit jako SPAM
IP: 90.178.143.–
S2K0
Duch
21. 11. 2010   #8
-
0
-

Ještě mě napadlo, jestli někdo neporadí, jak ošetřit můj program, aby mi nedělil slova. Příklad: Na řádku bude text a u 28 znaku se objeví slovo, které má 6 písmen, tak se to slovo nerozdělí, ale automatick ho šoupne na další řádek? Nenapdá někoho?

Nahlásit jako SPAM
IP: 90.178.143.–
KIIV+42
God of flame
21. 11. 2010   #9
-
0
-

to uz jedine hledanim

neco ve stylu: zkusit posledni znak a znak za nim.. pokud je znak za nim mezera tak vypsat a zacit za tou mezerou ..
pokud je tam pismeno tak postupne zmensovat retezec dokud nenarazis na neco co neni znak.. samozrejme musis hlidat delku retezce.. aby ses nedostal za konec

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
petr.satka0
Newbie
21. 11. 2010   #10
-
0
-

To S2K :
A nebo si udělat metodu, která bude z řetězce ukusovat jednotlivá slova a pak v cyklu tuto metodu volat a sčítat délky slov (před vypsáním), jakmile délka přesáhne 30, tak zalomit a vypsat na další řádek. Určitě to není nejefektivnější způsob, ale pokud se nejedná o příliš dlouhé texty, tak to nevadí a je poměrně přehledný a přímočarý.

pseudokód:
(Je možné, že jsem něco přehlédl, takže to ber jen jako nástin funkce. A musíš si ošetřit problém se slovy delšími než 30 znaků.)

int delka=0;
while ((slovo = getNextWord()) != null) {
delka += slovo.getLenght()+1;//+mezera za slovem
if (delka >= 30) {
cout<<endl;
delka = slovo.getLenght()+1;//slovo započítáme do dalšího řádku
}
cout<<slovo<<" ";
}

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

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ý