Hej
Uczę się C++ z Symfoni C++
jestem na etapie tablic i mam problem z programem który generuje tablice z kolejnymi liczbami, następnie wywołuje funkcję która poszczególne elementy mnoży razy 3 i już poza funkcją wyświetla jeszcze raz zawartość tablicy (która teoretycznie powinna być potrojona - a nie jest!)
Program jest prawie taki sam jak w książce (nie chce przepisywać znak w znak tylko minimalnie zmieniam)
#include "stdafx.h"
#include <iostream>
using namespace std;
void potrojenie(int ile,long t[]);
//**********************************************
int main()
{
const int rozmiar=20;
long widmo[rozmiar];
for(int i=0;i<rozmiar;i++)
{
widmo[i]=i;
cout<<"widmo["<<i<<"]= "<<widmo[i]<<endl;
}
potrojenie(rozmiar,widmo);
cout<<endl<<endl;
for(int i=0;i<rozmiar;i++)
{
widmo[i]=i;
cout<<"widmo["<<i<<"]= "<<widmo[i]<<endl;
}
system("pause");
}
//******************************
void potrojenie(int ile,long t[])
{
for(int i=0;i<ile;i++)
{
t[i]*=3;
}
}
funkcja potrojenie dostaje wskaźnik do pierwszego elementu tablicy, czyli powinna działać bezpośrednio na nim a nie na kopii (tak mówi książka). Jednak kiedy po wykonaniu funkcji chcę wyświetlić zawartość tablicy jeszcze raz nic się nie zmienia. (Próbowałem umieścić cout wewnątrz funkcji i wtedy rzeczywiście wartości są 3 razy większe, ale tylko wewnątrz funkcji.)
Co jest nie tak? albo co zrobić żeby funkcja rzeczywiście pomnożyła wartości elementów tablicy i zapisała je w tej tablicy?
Do pisania i kompilacji używam Visual Studio 2010