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

Problem z tablicą.

Ostatnio zmodyfikowano 2017-11-11 20:45
Autor Wiadomość
dartpizza88
Temat założony przez niniejszego użytkownika
Problem z tablicą.
» 2017-11-11 12:05:35
Cześć
Bawiłem się trochę z tablicami i ich uzupełnianiem przez użytkownika i napotkałem pewien problem, mianowicie przy wypisaniu elementów tablica zjada jeden wyraz i wstawia tam losową liczbę. Czy ktoś mógłby mi pomóc i wskazać jak sobie z tym poradzić?

C/C++
#include <iostream>
using namespace std;

int main()
{
   
    int rozmiar, i, a;
    cout << "Podaj rozmiar tablicy" << endl;
    cin >> rozmiar;
    int * tablica = new int[ rozmiar ];
    for( i = 0; i < rozmiar; i++ )
    {
       
        cout << "Podaj wartosc elementu" << endl;
        tablica[ i ] = a;
        cin >> a;
    }
   
   
   
    for( i = 0; i < rozmiar; i++ )
    {
        cout << tablica[ i ] << ";";
    }
    delete[] tablica;
   
   
   
   
   
   
   
   
    return 0;
}



P-166718
maly7
» 2017-11-11 13:49:22
C/C++
tablica[ i ] = a;
cin >> a;
Zamień te dwie linijki. Najpierw musisz pobrac dane, później dopiero je zapisz.
P-166723
dartpizza88
Temat założony przez niniejszego użytkownika
» 2017-11-11 17:11:04
Dziękuję, pomogło.
P-166750
dartpizza88
Temat założony przez niniejszego użytkownika
» 2017-11-11 19:02:35
Czy mógłby ktoś zerknąć i ocenić czy sortowanie bąbelkowe jest zaimplementowane okej i czy nie popełniłem żadnego błędu kardynalnego?
C/C++
#include <iostream>
using namespace std;

int main()
{
   
    int rozmiar, i, a, zmiana, depo;
    cout << "Podaj rozmiar tablicy" << endl;
    cin >> rozmiar;
    int * tablica = new int[ rozmiar ];
    for( i = 0; i < rozmiar; i++ )
    {
       
        cout << "Podaj wartosc elementu" << endl;
        cin >> a;
        tablica[ i ] = a;
       
    }
   
   
    cout << "Tablica przed sortowaniem" << endl;
    for( i = 0; i < rozmiar; i++ )
    {
        cout << tablica[ i ] << " ";
    }
    cout << endl;
    do
    {
        zmiana = 0;
        for( i = 0; i < rozmiar - 1; i++ )
        {
           
           
            if( tablica[ i ] > tablica[ i + 1 ] )
           
            {
                zmiana = zmiana + 1;
                depo = tablica[ i ];
                tablica[ i ] = tablica[ i + 1 ];
                tablica[ i + 1 ] = depo;
            }
        }
    }
    while( zmiana != 0 );
   
    cout << endl;
    cout << "Tablica po sortowaniu" << endl;
    for( i = 0; i < rozmiar; i++ )
         cout << tablica[ i ] << " ";
   
    delete[] tablica;
   
   
   
   
   
   
   
   
    return 0;
}



Jeszcze przy okazji mam pytanie, jak zablokować użytkownikowi możliwość wpisania litery jako wielkość tablicy lub wartość?
P-166758
pekfos
» 2017-11-11 19:05:39
P-166759
dartpizza88
Temat założony przez niniejszego użytkownika
» 2017-11-11 19:32:17
No okej, pozbyłem się możliwości użycia litery, poczytałem trochę ale nadal nie wiem jak zablokować użycie cyfry niecałkowitej. Wprowadziłem też drobne zmiany i pojawił się problem, wypisanie nie posegregowanej tablicy jest okej ale w wypadku drugiej ginie część po przecinku.

Oto kod:
C/C++
#include <iostream>
using namespace std;

int main()
{
   
    int rozmiar, i, zmiana, depo;
    float a;
    cout << "Podaj rozmiar tablicy" << endl;
    cin >> rozmiar;
    float * tablica = new float[ rozmiar ];
   
    if( cin.good() )
    {
       
       
        for( i = 0; i < rozmiar; i++ )
        {
            if( cin.good() )
            {
               
               
                cout << "Podaj wartosc elementu" << endl;
                cin >> a;
                tablica[ i ] = a;
            }
            else
            {
                cout << "To nie jest cyfra";
                return 0;
            }
        }
       
       
        cout << "Tablica przed sortowaniem" << endl;
        for( i = 0; i < rozmiar; i++ )
        {
            cout << tablica[ i ] << " ";
        }
        cout << endl;
        do
        {
            zmiana = 0;
            for( i = 0; i < rozmiar - 1; i++ )
            {
               
               
                if( tablica[ i ] > tablica[ i + 1 ] )
               
                {
                    zmiana = zmiana + 1;
                    depo = tablica[ i ];
                    tablica[ i ] = tablica[ i + 1 ];
                    tablica[ i + 1 ] = depo;
                }
            }
        }
        while( zmiana != 0 );
       
        cout << endl;
        cout << "Tablica po sortowaniu" << endl;
        for( i = 0; i < rozmiar; i++ )
             cout << tablica[ i ] << " ";
       
        delete[] tablica;
       
    }
    else
    {
       
        cout << "To nie jest cyfra";
    }
   
   
   
   
   
    return 0;
}
P-166769
pekfos
» 2017-11-11 19:43:25
wypisanie nie posegregowanej tablicy jest okej ale w wypadku drugiej ginie część po przecinku.
Bo twoja zamiana wartości nie działa na float.

cyfry niecałkowitej
A co to takiego?
P-166774
dartpizza88
Temat założony przez niniejszego użytkownika
» 2017-11-11 19:47:46
Chodziło mi to by nie móc wykorzystać liczby wymiernej, a co do problemu z wypisaniem jak to rozwiązać?
P-166775
« 1 » 2
  Strona 1 z 2 Następna strona