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

Tablice dynamiczne

Ostatnio zmodyfikowano 2014-04-07 21:33
Autor Wiadomość
yerpy
Temat założony przez niniejszego użytkownika
Tablice dynamiczne
» 2014-04-07 14:33:40
Witam ( dopiero się uczę ), mam problem, po skompilowaniu programu, po podaniu rozmiarów tablic wywala mi konsole, prawdopodobnie coś w funkcji jest źle zrobione, a raczej jej wywołanie;/ nie mam pomysłu jak to naprawić, by dobrze śmigało, funkcja " przekazywanie" ma mnożyć i-te elementy dwóch tablic przez siebie i wpisywać je do 3 tablicy.
Zamieszczam kod w linku.
C/C++
#include <iostream>
void przekazywanie( double *, double *, double *, int * );
void kreator_tablicy( double *, int * );
using namespace std;
int main()
{
    int rozmiar, rozmiar1, rozmiar2;
    if( rozmiar > rozmiar1 )
         rozmiar2 = rozmiar - rozmiar1;
    else
         rozmiar2 = rozmiar1 - rozmiar;
   
    double * tab1 = NULL;
    kreator_tablicy( tab1, & rozmiar );
    cout << '\n';
    double * tab2 = NULL;
    kreator_tablicy( tab2, & rozmiar1 );
    double * tab3 = NULL;
    tab3 = new double[ rozmiar ];
    cout << '\n';
    przekazywanie( tab1, tab2, tab3, & rozmiar2 );
    cout << '\n';
    delete[] tab1;
    delete[] tab2;
    delete[] tab3;
}
void przekazywanie( double * tab1, double * tab2, double * tab3, int * rozmiar2 )
{
    for( int i = 0; i < * rozmiar2; i++ )
    {
        tab3[ i ] = tab1[ i ] * tab2[ i ];
        cout << tab3[ i ] << " ";
    }
}
void kreator_tablicy( double * tab, int * rozmiar )
{
    cout << "\nPodaj ile elementow ma miec tablica :\n ";
    cin >> * rozmiar;
    tab = new double[ * rozmiar ];
    for( int i = 0; i < * rozmiar; i++ )
    {
        tab[ i ] = i;
        cout << tab[ i ] << " ";
    }
}
P-107839
alixir
» 2014-04-07 14:44:14
1. Umieszczaj kod na forum pomiędzy znacznikami
[cpp][/cpp]

2. Na początku program porównujesz i przypisujesz niezainicjowane zmienne co powoduje wysypanie się programu.
P-107840
yerpy
Temat założony przez niniejszego użytkownika
» 2014-04-07 15:06:03
Program już się nie wysypuje, ale w ciele funkcji przekazywanie for w ogóle nie chodzi, podejrzewam, że problemem jest 2 argument "i < *rozmiar2 "
P-107844
alixir
» 2014-04-07 21:33:17
Jeśli chcesz to robić po swojemu to zmodyfikuj nagłówki funkcji, bo obecnie nie zwracasz nawet utworzonych tablic:

C/C++
void przekazywanie( double *, double *, double *&, int * );
void kreator_tablicy( double *&, int * );


oraz przenieś zmodyfikowany kod z początku:

C/C++
if( rozmiar > rozmiar1 )
     rozmiar2 = rozmiar1;
else
     rozmiar2 = rozmiar;


przed instrukcję:
double * tab3 = NULL;


i nie zapomnij zmienić
tab3 = new double[ rozmiar2 ];

resztę pozostawiając bez zmian.
P-107875
« 1 »
  Strona 1 z 1