C++ Zmiana kolejności wyrazów w tablicy

knyku
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 17 gru 2010, o 00:45
Płeć: Mężczyzna
Lokalizacja: Gdańsk

C++ Zmiana kolejności wyrazów w tablicy

Post autor: knyku »

Witam. Mam do napisania na MTP program odwracający kolejność wyrazów tablicy określonych podanym przedziałem. Dla przykładu: tab = [1,2,3,4,5,6,7,8,9,10], tabodw = [1,2,6,5,4,3,7,8,9,10]. No i coś mi tutaj nie działa, może byłby ktoś w stanie pomóc ?

Kod: Zaznacz cały

#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
int const N=10;
float tab[N]={1,2,3,4,5,6,7,8,9,10};
int p,k;
float a;
cout<<"tab = ["<<tab[0]<<", "<<tab[1]<<", "<<tab[2]<<", "<<tab[3]<<", "<<tab[4]<<", "<<tab[5]<<", "<<tab[6]<<", "<<tab[7]<<", "<<tab[8]<<", "<<tab[9]<<"]"<<endl;
wartosci:
cout<<"Podaj p: ";
cin>>p;
cout<<"Podaj k: ";
cin>>k;
if(p>k or p<1 or k>N)
{
cout<<"Zle wartosci p i k"<<endl;
goto wartosci;
}
else

while(p<k)
{         
          a=tab[p-1];
          tab[p-1]=tab[k-1];
          tab[k-1]=a;         
}
cout<<"tabodw = ["<<tab[0]<<", "<<tab[1]<<", "<<tab[2]<<", "<<tab[3]<<", "<<tab[4]<<", "<<tab[5]<<", "<<tab[6]<<", "<<tab[7]<<", "<<tab[8]<<", "<<tab[9]<<"]"<<endl;
system("PAUSE");
return 0;
}

Z góry dziękuje
pfauel
Użytkownik
Użytkownik
Posty: 32
Rejestracja: 26 lis 2009, o 01:15
Płeć: Mężczyzna
Lokalizacja: Polska
Pomógł: 9 razy

C++ Zmiana kolejności wyrazów w tablicy

Post autor: pfauel »

Nie wywoływałem Twojego kodu, ale już na oko widać, że z tą pętlą w linijkach 26-31 coś jest nie tak - nie zmieniasz wartości p i k, czyli pętla powtarza się w nieskończoność. Spróbuj może tak:

Kod: Zaznacz cały

while(p<k)
{         
          a=tab[p-1];
          tab[p-1]=tab[k-1];
          tab[k-1]=a;
          k--; p++;
}
pozdrawiam
knyku
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 17 gru 2010, o 00:45
Płeć: Mężczyzna
Lokalizacja: Gdańsk

C++ Zmiana kolejności wyrazów w tablicy

Post autor: knyku »

no i wszystko chodzi dzięki
ODPOWIEDZ