Przerabiam sobie własnie pierwszy tom symfonii C++ (mój pierwszy kontakt z programowaniem) i zatrzymałem się na takim oto zadaniu:
"Napisz program, w którym w funkcji main zostaną stworzone (operatorem new) trzy tablice typu double o rozmiarach co najmniej 20 elementów. Elementy pierwszych dwóch tablic załaduj jakimiś wartościami. W programie powinna być funkcja, która przyjmie wysłane do niej te trzy tablice. Funkcja ma na elementach tych tablic wykonać operację mnożenia - taką, że i-ty element pierwszej tablicy zostanie pomnożony przez i-ty element tablicy drugiej. Rezultat ma zostać wpisany do i-tego elementu tablicy trzeciej. W funkcji main wypisz na ekranie zawartość poszczególnych elementów tablicy pierwszej, drugiej i trzeciej, a następnie skasuj te tablicę.
Mój program jest następujący:
Kod: Zaznacz cały
#include <iostream>
#include <conio.h>
using namespace std;
void wymnoz (double *tab1, double *tab2, double *tab3);
int main ()
{
double *wsk1, *wsk2, *wsk3;
wsk1 = new double [20]; //elastycznosc tablic dodam, jak juz rozwiaze moj problem
wsk2 = new double [20];
wsk3 = new double [20];
for (int i=0; i<20; i++, wsk1++, wsk2++)
{
cout<<(*wsk1=i/13.0)<<'\t'<<(*wsk2=i*13.0)<<endl;
}
wsk1-=20; //nie jestem pewien, czy to najlepszy sposob, ale zdaje sie dzialac
wsk2-=20;
wymnoz(wsk1, wsk2, wsk3);
for (int i=0; i<20; i++, wsk3++)
{
cout<<*wsk3<<endl;
}
delete [] wsk1;
delete [] wsk2;
delete [] wsk3;
// Powyzsze 3 liniki powoduja u mnie blad
_getch();
return 0;
}
void wymnoz (double *tab1, double *tab2, double *tab3)
{
for (int i=0; i<20; i++, tab1++, tab2++, tab3++)
{
*tab3=(*tab1)*(*tab2);
}
}
Czy mógłby mi ktoś wytknąć, gdzie robię błąd? Z góry dziękuje