Witajcie.
Mam problem. Mam program, gdzie użytkownik podaje liczby, liczby są wstawiane do pojemnika wektor a nastepnie sortowane metodą wstawiania. Chcę aby program obsługiwał rózne typy dlatego też w funkcji main tworze dwa razy vector i chcę aby za pomocą szablonu te dane były obsługiwane. Problem jest w tym że kiedy drugi raz chce użyć funkcji pobierz_dane ta funkcja nie pobiera już danych (kiedy funckja jest wywołana pierwszy raz jest wszystko w porządku, drugi raz już ta funkcja nie pracuje). A ja nie wiem dlaczego...
#include <iostream>
#include <vector>
using namespace std;
template <class T>
void pobierz_dane(vector <T> &v) //funkcja pobierajaca od uzytkownika liczby
{
T liczba;
int i = 1;
cout<<"Podaj liczby. Nacisnij q aby zakonczyc wpisywanie liczb."<<endl;
cout<<"Podaj "<<i<<" liczbe: ";
while(cin>>liczba) //petla while obiera liczbe
{
v.push_back(liczba); //metoda push_back dodaje liczbe na koniec pojemnika
i++;
cout<<"Podaj "<<i<<" liczbe: ";
}
}
template <class T>
void wyswietl_dane(vector <T> &v) //funkcja wyswietla elemnty pojemnika za pomca petli for
{
for (int i = 0; i < v.size(); i++)
cout<<v[i]<<" ";
}
template <class T>
void posortuj_dane(vector <T> &v)
{
T bufor; //zmienna do ktorej tymczasowo przypisuje sie liczbe
int j;
for (int i = 1; i < v.size(); i++)
{
bufor = v[i]; //przypisanie elementu do zmiennej bufor
for (int j = i - 1; j >= 0 && bufor < v[j]; j--)
{
v[j + 1] = v[j]; //zamiana miejsc
v[j] = bufor;
}
}
}
int main()
{
vector <int> vecInt;
vector <double> vecDouble;
cout<<"VECTOR INT"<<endl;
pobierz_dane(vecInt); //TU FUNKCJA POBIERA DANE PRAWIDLOWO
cout<<"Podane liczby: "<<endl;
wyswietl_dane(vecInt);
posortuj_dane(vecInt);
cout<<endl;
cout<<"Liczby po sortowaniu: "<<endl;
wyswietl_dane(vecInt);
cout<<endl;
cout<<"VECTOR DOUBLE"<<endl;
pobierz_dane(vecDouble); //TU JUŻ FUNKCJA NIE CHCE POBIERAC DANYCH
cout<<"Podane liczby: "<<endl;
wyswietl_dane(vecDouble);
posortuj_dane(vecDouble);
cout<<endl;
cout<<"Liczby po sortowaniu: "<<endl;
wyswietl_dane(vecDouble);
return 0;
}