Masmix Temat założony przez niniejszego użytkownika |
Problem z wyświetlaniem zawartośći tablicy » 2015-11-19 15:56:05 Witam,
Mieliśmy za zadanie zrobić program, który wypisuje słowo w drugiej tablicy typu char bez powtarzających się liter. Ogólnie program mi działa, ale jedyne z czym mam problem to to, że chcę wyświetlić całe słowo zamiast dzięki cout<<cel w pętli for , to poza pętlą for w postaci cout<<cel; Niestety wtedy nic mi nie wyskakuje i własnie tu jest moje pytanie. Jak mam to zrobić, aby wyświetlała się cała zawartość drugiej tablicy poza pętlą for? Poniżej zamieszczam program:
#include <iostream> using namespace std ; void funkcja(char zrodlo[], char cel[]); char tablica1[20]={"pprrroooogrammmmmm"}; char tablica2[20]; //w tej tablicy powinno się wyświetlać słowo {program} int main() { funkcja(tablica1,tablica2); } void funkcja(char zrodlo[], char cel[]) {
for(int i=0;i<20;i++) { char a=zrodlo; char b=zrodlo[i+1]; if(a==b) { continue; } else } cel=a; //gdybym chciał napisać tego couta dwie linijki niżej pod postacią cout<<cel;, wtedy się nie wyświetla } cout<< cel; } } |
|
Gibas11 |
» 2015-11-19 16:32:24 Powinno być cel[ i ]... . Chyba, spojrzałem tylko pobieżnie. EDIT: Nie tylko tam masz ten błąd, ten kawałek też jest źle: char a = zrodlo; . |
|
Masmix Temat założony przez niniejszego użytkownika |
» 2015-11-19 17:37:52 Poprawiłem te błędy, o których mi wspomniałeś, lecz program nadal nie działa :
|
|
Gibas11 |
» 2015-11-19 17:50:41 Wrzuć co teraz masz, i pamiętaj o znacznikach [ cpp ][ / cpp ] . |
|
Masmix Temat założony przez niniejszego użytkownika |
» 2015-11-19 17:53:03 #include <iostream> using namespace std ; void funkcja(char zrodlo[], char cel[]); char tablica1[20]={"pprrroooogrammmmmm"}; char tablica2[20]; int main() { funkcja(tablica1,tablica2);
} void funkcja(char zrodlo[], char cel[]) {
for(int i=0;i<20;i++) { char a=zrodlo; // Nie wiem czemu ale tu nie wyświetla mi się, że i jest w tablicy char b=zrodlo[i+1]; if(a==b) { continue; } else { cel=a; // Tak samo tu } } cout<<cel; }
|
|
Gibas11 |
» 2015-11-19 18:13:48 Zapisywałeś do tablicy cel pod i-ty element, dlatego jeżeli jakiś pomijałeś, "i" szło dalej i znaki były zapisywane z odstępami. Pech chciał, że w tych miejscach były zera oznaczające koniec ciągu, więc jeżeli cel[0] było równe '\0', cout nic nie wyświetlał. #include <iostream> using namespace std; void funkcja( char zrodlo[], char cel[] ); char tablica1[ 20 ] = { "pprrroooogrammmmmm" }; char tablica2[ 20 ];
int main() { funkcja( tablica1, tablica2 ); cout << tablica2; }
void funkcja( char zrodlo[], char cel[] ) { for( int i = 0, celI; i < 20; i++ ) { char a = zrodlo[ i ]; char b = zrodlo[ i + 1 ]; if( a == b ) continue; else cel[ celI++ ] = a; } }
|
|
j23 |
» 2015-11-19 18:34:28 Nieco bezpieczniejsza wersja: void funkcja( const char * s, char * d ) { while( * d = * s++ ) if( * s != * d ) ++d; }
|
|
Masmix Temat założony przez niniejszego użytkownika |
» 2015-11-19 18:58:49 j23 dziękuję za pomoc, ale jeszcze nie miałem lekcji o znacznikach ( czy jak to tam się nazywa, więc wolę robić to tradycyjnie).Gibas11, wypróbowałem twój program lecz nie działa, przerzuciłem couta z programu głównego do funkcji i działa lecz wyświetla tylko napis {ogram} zamiast całego {program} |
|
« 1 » 2 |