Dzielenie wyrazów między linijki
Ostatnio zmodyfikowano 2010-12-04 10:13
rafixxx25 Temat założony przez niniejszego użytkownika |
Dzielenie wyrazów między linijki » 2010-12-03 22:36:26 Witam!
Napotkałem kolejny problem. Robią program w konsoli gdy coś napiszę, a nie mieści się to w linii, program dzieli wyraz w dowolnym miejscu np: " Umożliwia abstrakcję danych oraz stosowanie kilku paradygmatów program owania: proceduralnego, obiektowego i generycznego. Charakteryzuje się wysoką wydajnością kodu wynikowego, bezpośrednim dostępem do zasobów sprzętowych i funkcji systemowych, łatwością tworzenia i korzystania z bibliotek (napisanych w C++, C lub innych językach), niezależnością o d konkretnej platformy sprzętowej lub systemowej (co gwarantuje wysoką przenośność kodów źródłowych) oraz niewielkim środowiskiem uruchomien iowym. Podstawowym obszarem jego zastosowań są aplikacje i systemy ope racyjne. "
Czy istnieje jakaś prosta komenda, która sprawi, ze będzie to wyglądało mniej więcej tak:
" Umożliwia abstrakcję danych oraz stosowanie kilku paradygmatów programowania: proceduralnego, obiektowego i generycznego. Charakteryzuje się wysoką wydajnością kodu wynikowego, bezpośrednim dostępem do zasobów sprzętowych i funkcji systemowych, łatwością tworzenia i korzystania z bibliotek (napisanych w C++, C lub innych językach), niezależnością od konkretnej platformy sprzętowej lub systemowej (co gwarantuje wysoką przenośność kodów źródłowych) oraz niewielkim środowiskiem uruchomieniowym. Podstawowym obszarem jego zastosowań są aplikacje i systemy operacyjne. "
Pozdr. i z góry dzięki za pomoc :P |
|
DejaVu |
» 2010-12-03 23:14:54 Nie istnieje - musisz sobie to napisać sam. |
|
ison |
» 2010-12-03 23:25:59 nie istnieje chociażby dlatego że rozmiar konsoli możesz w każdej chwili zmieniać //edit nie jest idealne ale działa ;p (przynajmniej tak mi się zdaje) #include <cstdio> #include <iostream> #include <string>
const int CONSOLE_WIDTH = 80; int SpaceLeft = CONSOLE_WIDTH - 1;
void PrintText( std::string text ) { while( text.size() ) { size_t width = text.find( " " ); if( width == std::string::npos ) width = text.size(); if(( int ) width < SpaceLeft ) SpaceLeft -= width + 1; else { SpaceLeft = CONSOLE_WIDTH - width - 2; std::cout << std::endl; } for( size_t i = 0; i <= width; ++i ) { if( width == text.size() && i == width ) break; std::cout << text[ i ]; if( text[ i ] == '\n' ) SpaceLeft = CONSOLE_WIDTH - width - 2; } if( width != text.size() ) text = text.substr( width + 1, text.size() - width ); else text = text.substr( width, text.size() - width ); } }
int main() { PrintText( "aaaaaaaaaaaaaaaaaaaa bbbbbbbb cc ddddd eeeeeeeeeeeeee ffffff gggggg hhhhh iiii jjjjjjjjjj" ); }
|
|
Pirotechnik |
» 2010-12-04 08:21:58 już istnieje :) |
|
rafixxx25 Temat założony przez niniejszego użytkownika |
» 2010-12-04 09:38:35 Twoja funkcja nie jest idealna(w niektórych miejscach nie potrzebnie przeskakuje np:
aaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaa aaaaaaaaaa aaaaaaaaaaaaaaaaaaaaa aaa aaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaa aa aaaa aaaaaaaaaaa aaaaa aaaaa)
Ale i tak wielkie dzięki :) Mam także pytanie: Jeśli chce przenieść zdanie do nowej linijki, to da się to jakoś w twojej funkcji, czy muszę pisać np: PrintTekst("aaaaaaaaaaaaaaa"); cout<<endl; PrintTekst("aaaaaaa");
?? |
|
ison |
» 2010-12-04 09:48:08 być może gdzieś jest błąd zaraz rzucę okiem jeszcze raz możesz użyć \n w środku PrintText i będzie to traktował jako nową linię hmm, u mnie Twój przypadek program wypisał dobrze: aaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaa aaa aaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaa aaaa aaaaaaaaaaa aaaaa aaaaa
Pamiętaj że funkcja PrintText zakłada że wypisuje tekst od początku, więc jeśli przed jej wywołaniem wypisujesz coś strumieniami to zmień zmienną SpaceLeft tak aby dopełnić do pełnej linii, nie możesz mieszać PrintText i zwykłego wypisywania tekstu w twoim programie - musisz zdecydować się na jedno. Nie mogę znaleźć przypadku w którym by nie działało |
|
rafixxx25 Temat założony przez niniejszego użytkownika |
» 2010-12-04 10:13:28 Aha, dobra dzięki :) No to już wiem jak zrobić. |
|
« 1 » |