Odwracanie tablicy funkcją

0

Mam za zadanie odwrócić tablicę funkcją, stworzyłem takie coś, ale niestety nie odwraca mi w ogóle tej tablicy

#include<iostream>

using namespace std;

const int rozmiar = 10;

int fill_array(double tablica[], int rozmiar);
void show_array(const double tablica[], int n);
void reverse_array(double tablica[], int n);

int main()
{
	double tab[rozmiar];
	int ilosc = fill_array(tab, rozmiar);
	show_array(tab, ilosc);
	reverse_array(tab, ilosc);
	show_array(tab, ilosc);
	cin.get();
	cin.get();
	return 0;
}

int fill_array(double tablica[], int rozmiar)
{
	int n = 0;
	double elem;
	for (int i = 0; i < rozmiar; i++)
	{
		cout<< "Podaj element numer " << i<< ": ";
		cin>>elem;
		if (cin)
		{
			tablica[i] = elem;
			n++;
		}
		else
		{
			cout<< "\nZakonczono wprowadzanie danych!!" << endl;
			cin.clear();
			while (cin.get() != '\n')
				continue;
			break;
		}
	}
	return n;
}

void show_array(const double tablica[], int n)
{
	for (int i = 0; i < n; i++)
	{
		cout<< "Element tablicy o numerze " << i + 1 << " wynosi: " << tablica[i] << endl;
	}
	cout<< endl << endl;
}

// Odwracanie tablicy

void reverse_array(double tablica[], int n)
{
	int i, a = n;
	double tmp[rozmiar];
	for (i = 0; i < n; i++,a--)
	{
		tmp[i] = tablica[a-1];
	}
	for (i = 0; i < n; i++);
	{
		tablica[i] = tmp[i];
	}
}
0

nie powinno być przypadkiem
double tmp[n];
oczywiście ten sposób zadziała tylko w gcc
Jeśli korzystasz z innego kompilatora to musisz zrobić tak:
double * tmp = new double[n];
Bo to co ty zrobiłeś to z góry zakładasz że tablica będzie miała 10 elementów(sugerujesz się stałą "rozmiar") A co jeśli użytkownik poda więcej? Musisz stworzyć tablicę o takim rozmiarze jaki wynosi parametr "n" funkcji

0

Ale i tak funkcja nie odwraca tablicy w ogóle

1
void swap(double &a,double &b) { double x=a; a=b; b=x; }
void reverse_array(double tablica[], int n) { for(int k=0;k<--n;++k,--n) swap(tablica[k],tablica[n]); }
0
std::reverse(tab, tab+n);

1 użytkowników online, w tym zalogowanych: 0, gości: 1