Mam mały problem z niby prostym zadaniem: http://pl.spoj.pl/problems/PP0502B/
#include<iostream>
using std::cout;
using std::cin;
int main()
{
unsigned short int t;
cin >> t;
cout << "Przyjeto t=" << t << "\n";
while(t--)
{
cout << "Wykonanie petli nr: " << t << "\n";
unsigned short int n;
cin >> n;
cout << "Przyjeto n=" << n << "\n";
int *tab=new int[n];
for(unsigned short i=0;i<n;i++)
{
cin >> tab[i];
cout << "INIT[" << i << "]\n";
}
cout << "Zainicjalizowano tablice\n";
for(unsigned short i=(n-1);i==0;i--)
{
//cout << tab[i];
cout << "OUT[" << i << "]\n";
}
cout << "Wypisano tablice\n";
delete [] tab;
tab=0;
}
return 0;
}
Dodatkowe komunikaty wstawiłem po to, by sprawdzić, gdzie jest problem. Kod w tej postaci wykonuje się, owszem, ale nie są wypisywane wartości, inicjalizacja jest dobra. Przykład: http://ideone.com/sQid7
#include<iostream>
using std::cout;
using std::cin;
int main()
{
unsigned short int t;
cin >> t;
cout << "Przyjeto t=" << t << "\n";
while(t--)
{
cout << "Wykonanie petli nr: " << t << "\n";
unsigned short int n;
cin >> n;
cout << "Przyjeto n=" << n << "\n";
int *tab=new int[n];
for(unsigned short i=0;i<n;i++)
{
cin >> tab[i];
cout << "INIT[" << i << "]\n";
}
cout << "Zainicjalizowano tablice\n";
for(unsigned short i=(n-1);i>0;i--) //***tu zmieniony warunek***
{
//cout << tab[i];
cout << "OUT[" << i << "]\n";
}
cout << "Wypisano tablice\n";
delete [] tab;
tab=0;
}
return 0;
}
Po zmianie warunku w pętli for przy wypisywaniu owszem, wypisze mi kilka wartości, ale (co jest tu akurat zrozumiałe) nie wypisze tab[0]. Można byłoby dodać "ręcznie" tą wartość, ale nie będzie to eleganckie rozwiązanie. Przykład: http://ideone.com/rhK1v
Pytanie - jaki warunek musi być w for ? Wydawało mi się, że == będzie logicznym rozwiązaniem, ale okazuje się, że nie.