mw641 utworzono 2 lutego 2011 utworzono 2 lutego 2011 Witam! Zaczynam naukę C++. Bardzo proszę o wskazówki potrzebne mi do napisania programu wyświetlającego: 1a 2b 3c 4d 5e 2c 3d 4e 5f 3e 4f 5g 4g 5h 5i Same liczby zapisałam pętlą: for ( int i=1; i<=n; i++) { for (int g=i; g<=n; g++) cout << g <<" " ; cout << endl; } Ale nie mam fioletowego pojęcia jak wstawić tam litery. Proszę o pomoc !
leggo komentarz 2 lutego 2011 komentarz 2 lutego 2011 Pokombinuj z rzutowaniem na typ char [code]static_cast<char>(g)[/code] Możesz to badzo prosto rozwiązać dodając to do tego co już masz.
wojtex5 komentarz 2 lutego 2011 komentarz 2 lutego 2011 (edytowane) w C++ dostępną masz całą paletę kodów ASCI - demonstruje ją prościutki programik: [code]#include <iostream> int main() { for(int i=0;i<256;i++) { std::cout<<i<<" "<< char(i)<<"\n"; //char(i) to to samo co static_cast<char>(i) -- to po prostu konwersja typów w stylu C } system("PAUSE"); }[/code] wystarczy się przyjrzeć i widać, że litery małe zaczynają się od indexu 97, i przede wszystkim, że są ułożone alfabetycznie. wystarczy to wykorzystać w twoim programie wraz z bardzo prostym wzorem: [code] static_cast<char>( i + static_cast<int>('a')); //lub zapisane prościej: char ( i + int('a') )[/code] wystarczy to zastosować w pętli i zadanie zrobione
mw641 komentarz 2 lutego 2011 Autor komentarz 2 lutego 2011 Zrobiłam coś takiego: for ( int i=1; i<=n; i++) { for (int g=i; g<=n; g++) cout << g<< char('a'+g-1) <<" " ; cout << endl; } Ale wydruk jaki otrzymałam to: 1a 2b 3c 4d 5e 2b 3c 4d 5e 3c 4d 5e 4d 5e 5e Proszę napiszcie jak to poprawić.
leggo komentarz 2 lutego 2011 komentarz 2 lutego 2011 [code]cout<< g<<static_cast<char>(g+95+i) <<" ";[/code]
mw641 komentarz 2 lutego 2011 Autor komentarz 2 lutego 2011 Dziękuję Ci pięknie ! Bóg zapłać dobry człowieku.
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.