Mam taki problem. Mam podawać liczby, zapisać je do tablic, wyświetlić i odwrócić. Problem w tym, że gdy przerwę wpisywanie, to wyświetla mi resztę tablicy i nie wiem jak temu zapobieć. Próbowałem przepisać kod z książki S. Pratha, ale niestety i to nie pomogło. Jakieś wskazówki jak to zrobić?
Następny problem - przyznam się, że zerżnąłem kod ze strony do odwracania tablicy i ni cholery nie mogę go zrozumieć (albo dlatego, że jestem zmęczony :p).
//Cwiczenie programistyczne 7.6
#include <iostream>
#include <string>
using namespace std;
const int ar_size = 10;
int fill_array(double tablica_wartosci[], int n);
void show_array(double tablica_wartosci[], int n);
void reverse_array(double tablica_wartosci[], int n);
int main()
{
double tablica[ar_size];
int suma = fill_array(tablica, ar_size);
cout << "Ile punktow: " << suma << endl;
cout << "Punkty w twojej tablicy: " << endl;
show_array(tablica, ar_size);
cout << "\nOdwrocona tablica:" << endl;
reverse_array(tablica, ar_size);
return 0;
}
int fill_array(double tablica_wartosci[], int n)
{
int i;
double temp;
for(i = 0; i < n; i++)
{
cout << "Podaj wartosc nr " << i + 1 << ": ";
cin >> temp;
if(!cin)
{
cin.clear();
while(cin.get() != '\n')
continue;
break;
}
else if (temp < 0)
break;
tablica_wartosci[i] = temp;
}
return i;
}
void show_array(double tablica_wartosc[], int n)
{
for(int i = 0; i < n; i++)
cout << "Nr " << i + 1 << ": " << tablica_wartosc[i] << endl;
}
void reverse_array(double tablica_wartosc[], int n)
{
double temp;
for(int i = 0; i < n / 2; i++)
{
temp = tablica_wartosc[i];
tablica_wartosc[i] = tablica_wartosc[n - 1 - i];
tablica_wartosc[n - 1 - i] = temp;
}
for (int i = 0; i < n; i++)
cout <<"Nr " i + 1 <<": " << tablica_wartosc[i] << endl;
}