Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z wyświetlaniem zawartośći tablicy

Ostatnio zmodyfikowano 2015-11-20 14:16
Autor Wiadomość
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;
  }
}
P-140379
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;
.
P-140381
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 :
P-140390
Gibas11
» 2015-11-19 17:50:41
Wrzuć co teraz masz, i pamiętaj o znacznikach
[ cpp ][ / cpp ]
.
P-140391
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;
}
P-140392
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ł.

C/C++
#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;
       
    }
}
P-140395
j23
» 2015-11-19 18:34:28
Nieco bezpieczniejsza wersja:
C/C++
void funkcja( const char * s, char * d )
{
    while( * d = * s++ )
         if( * s != * d ) ++d;
   
}
P-140397
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}
P-140400
« 1 » 2
  Strona 1 z 2 Następna strona