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

długość stringa jako rozmiar tablicy

Ostatnio zmodyfikowano 2013-12-22 11:45
Autor Wiadomość
n1ghtmare
Temat założony przez niniejszego użytkownika
» 2013-12-22 09:45:20
Ale tu:
C/C++
#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?
P-99788
Parapet
» 2013-12-22 09:54:44
C/C++
int i = 5;
int tablica[ i ]; //blad !!


int tablica[ 5 ]; //dobrze !!



http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Tablice-jednowymiarowe/292
P-99789
n1ghtmare
Temat założony przez niniejszego użytkownika
» 2013-12-22 10:02:01
C/C++
#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
P-99790
leon_w
» 2013-12-22 10:14:08
Jeżeli to może być na stringach, to możesz zrobić tak:
C/C++
#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;
   
}
P-99791
leon_w
» 2013-12-22 10:57:12
C/C++
int i = 5;
int tablica[ i ]; //blad !!


int tablica[ 5 ]; //dobrze !!
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.
C/C++
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.
P-99792
SeaMonster131
» 2013-12-22 11:34:37
Nie można zrobić tak:
C/C++
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ę:
C/C++
int i;
cin >> i;
int * tab = new int[ i ];

A Twój powyższy kod programu jest prawie dobry:
C/C++
#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:
C/C++
cout << myslniki << endl;
P-99793
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.
P-99794
n1ghtmare
Temat założony przez niniejszego użytkownika
» 2013-12-22 11:45:45
C/C++
#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ę :)
P-99795
1 « 2 »
Poprzednia strona Strona 2 z 2