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

Problem związany z napisaną przezemnie funkcją show_array();

Ostatnio zmodyfikowano 2015-11-24 16:28
Autor Wiadomość
Rudnicky
Temat założony przez niniejszego użytkownika
Problem związany z napisaną przezemnie funkcją show_array();
» 2015-11-24 16:08:29
Witam,

 Napisałem program do obsługi tablicy jednowymiarowej. Program składa się z trzech funkcji: funkcja pobierająca dane, wyświetlająca i funkcja odwracająca tablice. Pobiera dobrze, wyświetla dobrze, odwraca też okej ale zaraz po użyciu jeszcze raz funkcji wyswietlającej zaraz po reverse_array chciałbym aby ta funkcja wyświetliła już odwróconą macierz. Prosiłbym o pomoc, pozdrawiam. Poniżej wklejam kod programu.

C/C++
#include <iostream>

using namespace std;

const int size = 5;

void fill_array( double tab[], int size );
void show_array( double tab[], int size );
double reverse_array( double tab[], int size );

int main()
{
    double tablica[ size ];
   
    fill_array( tablica, size );
    show_array( tablica, size );
    reverse_array( tablica, size );
    show_array( tablica, size ); // <- pokazuje pierwsze wczytywanie. Zastanawiam się czy to nie wina przedrostka "void" w prototypie oraz
    // w samej funkcji. Nie wiem tylko czy można zwrócić w funkcji całą tablicę..
   
    system( "PAUSE" );
    return 0;
}

void fill_array( double tab[], int size )
{
    int i;
    for( i = 0; i < size; i++ )
    {
        cout << "Podaj #" << i + 1 << " element tablicy: ";
        cin >> tab[ i ];
    }
}

void show_array( double tab[], int size )
{
    int i;
    cout << "\nWYSWIETLANIE\n\n";
    for( i = 0; i < size; i++ )
    {
        cout << "element: " << i + 1 << " tablicy = " << tab[ i ] << "\n";
    }
}

double reverse_array( double tab[], int size )
{
    cout << "\nODWRACANIE\n\n";
    int i;
    for( i = size - 1; i >= 0; i-- )
    {
        cout << "element: " << i + 1 << " tablicy = " << tab[ i ] << "\n";
    }
    return tab[ i ];
}
P-140703
Szadziu
» 2015-11-24 16:20:42
reverse_array nie odwraca tablicy tylko wyswietla ja od konca
P-140704
Rudnicky
Temat założony przez niniejszego użytkownika
» 2015-11-24 16:21:00
Jeszcze mam jedno pytanie dotyczące tego fragmentu kodu:

C/C++
void fill_array( double tab[], int size )
{
    int i;
    for( i = 0; i < size; i++ )
    {
        cout << "Podaj #" << i + 1 << " element tablicy: ";
        if( !( cin >> tab[ i ] ) )
        {
            cout << "PRZERYWAM!\n\n\n";
        }
    }
}

Funkcja wypełniająca tablice w momencie podania np litery przerywa program, jednak nie wyświetla napisu "przerywam". Czy ma ktoś pomysł w jaki sposób mógłbym przerwać działanie całego programu i wyświetlić tylko komunikat "PRZERYWAM" w momencie w którym użytkownik poda błędne dane?
P-140705
Szadziu
» 2015-11-24 16:22:37
przypisz wartość pobrana z cin to tempowej zmiennej string. Sprawdź czy jest liczbą. Jak tak to dodaj do tab jak nie wyświetl komunikat i zakończ
P-140706
Rudnicky
Temat założony przez niniejszego użytkownika
» 2015-11-24 16:28:23
Dzięki Szadziu za odpowiedź. Poprawiłem funkcje reverse_array..

C/C++
double reverse_array( double tab[], int size )
{
    cout << "\nODWRACANIE\n\n";
    int i, j, temp;
    for( i = 0, j = size - 1; i < size / 2; i++, j-- )
    {
        temp = tab[ i ];
        tab[ i ] = tab[ j ];
        tab[ j ] = temp;
    }
}
P-140709
« 1 »
  Strona 1 z 1