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

Pomoglibyście znaleźć błąd?

Ostatnio zmodyfikowano 2010-09-19 19:19
Autor Wiadomość
Elejdor
Temat założony przez niniejszego użytkownika
Pomoglibyście znaleźć błąd?
» 2010-09-19 17:34:15
C/C++
#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    int pola;
    char nazwa[ pola ][ 50 ];
   
    cout << "Podaj ilosc pozycji: ";
    cin >> pola;
    cin.get();
   
    for( int i = 1; i <= pola; i++ )
    {
        cout << "\n\n Podaj nazwe pola " << i << endl;
        cin.get( nazwa[ i - 1 ], 50 );
        cin.get();
    };
   
    getchar();
    return 0;
}

wyświetla się Segmentation fault.
P-22140
pekfos
» 2010-09-19 17:45:09
C/C++
int pola;
char[ pola ][ 50 ]
tak nie wolno.
P-22143
Elejdor
Temat założony przez niniejszego użytkownika
» 2010-09-19 17:52:56
W sumie poprawiłem i na kolejnym etapie, kolejny błąd którego nie rozumiem.

if(nazwa[i-1][0]==szukaj)

error: ISO C++ forbids comparison between pointer and integer

chcę, żeby warunek był spełniony gdy pierwsza litera wiersza i-1 jest równa zmiennej szukaj. (int i=1 zadeklarowana jest w for) Domyślam się, że chodzi o to, że podałem dwie wartości, ale nie wiem jak to zrobić. Tak jak wyżej nazwa jest tabelą dwuwymiarową.
P-22145
dmx81
» 2010-09-19 18:18:46
komunikat mowi, ze porownujesz wskaznik z liczba, co zwraca wlasnie blad - pokaz calosc jak masz to moze cos poradzimy
P-22146
Elejdor
Temat założony przez niniejszego użytkownika
» 2010-09-19 18:19:41
C/C++
#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    int pola = 0;
    char nazwa[ pola ][ 50 ];
    char szukaj[ 3 ];
   
   
    cout << "Podaj ilosc pozycji: ";
    cin >> pola;
    cin.get();
   
    for( int i = 1; i <= pola; i++ )
    {
        cout << "\n\n Podaj nazwe pola " << i << endl;
        cin.get( nazwa[ i - 1 ], 50 );
        cin.get();
    };
    //SZUKANIE
    cout << "Podaj pierwsza litere: ";
    ( cin >> szukaj ).get();
    for( int i = 1; i <= pola; i++ )
    {
       
        if( nazwa[ i - 1 ][ 0 ] == szukaj )
        { cout << nazwa[ i - 1 ]; };
       
    }
    getchar();
    return 0;
}
P-22147
ison
» 2010-09-19 19:19:29
ten zapis
C/C++
int pola = 0;
char nazwa[ pola ][ 50 ];
jest rownoznaczny z
C/C++
char nazwa[ 0 ][ 50 ];
ktory raczej nie ma sensu

w tej linijce:
C/C++
if( nazwa[ i - 1 ][ 0 ] == szukaj )
zmienna szukaj to tablica, co miałby oznaczać operator == w takiej sytuacji? (w Twoim przypadku oczywiście)


//edit, nie wiem czy dokładnie to było twoim zadaniem ale tak na szybko poprawiłem kod aby wypisywał wszystkie słowa zaczynające się na daną literę
C/C++
#include <iostream>

using namespace std;

int main()
{
    char nazwa[ 50 ][ 50 ];
    char szukaj;
    int pola;
   
    cout << "Podaj ilosc pozycji: ";
    cin >> pola;
    cin.ignore();
   
    for( int i = 1; i <= pola; ++i ) {
        cout << "\n\n Podaj nazwe pola " << i << endl;
        cin.get( nazwa[ i - 1 ], 50 );
        cin.ignore();
    }
   
    cout << "Podaj pierwsza litere: ";
    cin >> szukaj;
    cin.ignore();
   
    for( int i = 1; i <= pola; ++i ) {
        if( nazwa[ i - 1 ][ 0 ] == szukaj ) {
            cout << nazwa[ i - 1 ] << endl;
        }
    }
    while( 1 );
   
}

wg mnie lepiej byłoby dla Ciebie gdybyś korzystał z std::string
podczas gdy STL umożliwia łatwe operowanie na ciągach znaków dla początkujących to ty męczysz się z dwuwymiarowymi tablicami charów
P-22150
« 1 »
  Strona 1 z 1