długość stringa jako rozmiar tablicy
Ostatnio zmodyfikowano 2013-12-22 11:45
n1ghtmare Temat założony przez niniejszego użytkownika |
» 2013-12-22 09:45:20 Ale tu: #include <string.h> #include <cstdlib> #include <iostream> using namespace std; int main() { int a = 5; char myslniki[ a ]; int i = 0; for( i = 0; i < a; i++ ) { myslniki[ i ] = { '-' }; } cout << myslniki << endl; }
rozmiar tablicy jest przecież podany, więc czemu problem wciąż występuje? |
|
Parapet |
» 2013-12-22 09:54:44 int i = 5; int tablica[ i ];
int tablica[ 5 ];
http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Tablice-jednowymiarowe/292 |
|
n1ghtmare Temat założony przez niniejszego użytkownika |
» 2013-12-22 10:02:01 #include <string.h> #include <cstdlib> #include <iostream> using namespace std; int main() { char myslniki[ 5 ]; int i = 0; for( i = 0; i < 5; i++ ) { myslniki[ i ] = { '-' }; } cout << myslniki << endl; }
Nie pomogło |
|
leon_w |
» 2013-12-22 10:14:08 Jeżeli to może być na stringach, to możesz zrobić tak: #include <iostream> #include <string>
using namespace std;
int main() { string haslo = "nowe haslo"; int ile = haslo.length(); string haslo_zaslon = haslo; for( int i = 0; i < ile; i++ ) { if( haslo[ i ] == ' ' ) haslo_zaslon[ i ] = ' '; else haslo_zaslon[ i ] = '-'; } cout << haslo << endl << haslo_zaslon; } |
|
leon_w |
» 2013-12-22 10:57:12 int i = 5; int tablica[ i ];
int tablica[ 5 ];
|
Obydwa sposoby są poprawne. Sam do końca tego nie rozumię. Niby kompilator musi znać rozmiar tablicy podczas kompilacji. Ale mimo to, jeśli rozmiar wprowadzę już w programie, to nadal wszystko działa (chyba że dane zapisują się w niezainicjowanym obszarze pamięci, tym samym coś niszcząc). Jeżeli w swoim pierwszym kodzie dodasz linijkę myslniki[ a ] = slowko[ a ]; to wszystko niby działa poprawnie. Jednak napewno lepiej użyć dynamicznej tablicy. char * myslniki = new char[ a ]; myslniki = slowko; Nie wiem czy wszystko poprawnie napisałem, wskaźniki dopiero ogarniam, ale wydaje mi się że takie rozwiązanie będzie najlepsze. |
|
SeaMonster131 |
» 2013-12-22 11:34:37 Nie można zrobić tak: int i; cin >> i; int tab[ i ];
ponieważ rozmiar tablicy musi być znany w trakcie kompilacji, inaczej nie wiadomo jak zachowa się program. Musisz dynamicznie utworzyć tablicę: int i; cin >> i; int * tab = new int[ i ];
A Twój powyższy kod programu jest prawie dobry: #include <string.h> #include <cstdlib> #include <iostream> using namespace std; int main() { char myslniki[ 5 ]; int i = 0; for( i = 0; i < 5; i++ ) { myslniki[ i ] = { '-' }; } cout << myslniki << endl; }
Tylko źle wyświetlasz tablicę, o tutaj: cout << myslniki << endl;
|
|
kubek3898 |
» 2013-12-22 11:39:55 Jak chcesz użyć tablicy o nieznanym rozmiarze i jednocześnie nie przejmować się organizacją pamięci użyj wektora.
A co do wypisywania - przeleć pętlą po całej tablicy za każdym obiegiem wyświetlając element i. |
|
n1ghtmare Temat założony przez niniejszego użytkownika |
» 2013-12-22 11:45:45 #include <string.h> #include <cstdlib> #include <iostream> using namespace std; int main() { int a = 0; char slowo[] = "matematyka"; a = strlen( slowo ); char myslniki[ a ]; int i = 0; for( i = 0; i < a; i++ ) { myslniki[ i ] = { '-' }; } for( i = 0; i < a; i++ ) { cout << myslniki[ i ]; } }
Wskazówka co do sposobu wyświetlania tablicy pomogła, dziękuję :) |
|
1 « 2 » |