Spoj- ROL

0

Witam, mam problem z zadaniem ze spoja, (link http://pl.spoj.com/problems/PTROL/ )
Ogólnie wydaję mi się , że pomieszałam coś z tablicą chyba, bo dla pierwszego zestawu danych wychodzi wszystko okej, a z drugim dopiero wszystko się psuje, ale nie mam pojęcia gdzie jest błąd:

#include <iostream>
using namespace std;
 
int main() {
 
int t, n, x;
cin>>t;
 
 
for (int i=0; i<t; i++)
   {
   	   cin>>n;
   	   int tab[n];
 
       for (int l=0; l<n; l++)
       {
       	cin>>x;
       	tab[l]=x;
       }
 
        for (int k=0; k<n; k++)
       {
       	if(i==0) swap(tab[0],tab[n-1]);
       	else swap(tab[k],tab[k+1]);
       }
 
       for (int j=0; j<n; j++)
       {
       	cout<<tab[j]<<endl;
       }
   }
 
	return 0;
}

Mam jeszcze jedno pytanie związane z tablicami ( jeśli powinnam na nie założyć nowy wątek to powiedzcie, to następnym razem się poprawię)

#include <iostream>
using namespace std;
  
int main() {
  
    int tab[5];
    tab[0]=2;
    tab[1]=4;
    tab[3]=2;
    int a,max;
  
    for (int i=0; i<5; i++)
    {
    if(i==0) max=<span style="background-color:#ff0000">tab[i]</span>;  
    if(tab[i]>max) max=tab[i];
    }
  
cout<<max;
    return 0;
}

Nie rozumiem tego, że gdy w zaznaczonym miejscu zamiast tab[i] wpisałam tab[0] (a przecież, w zasadzie wychodzi na to samo) wyszły mi jakieś dziwne liczby na wyjściu, dlaczego?

  1. Ktoś mi powiedział, że to dlatego, że nie przypisałam dla wszystkich indeksów konkretnych wartości, ale czy one nie powinny być w takim razie zerami? Zresztą przecież tab[i]=tab[0] w tamtym momencie, a tab[0] miał określoną wartość i tak i tak. Nie łapię tej różnicy
0

Jeśteś pewien że w tej

 if(i==0) swap(tab[0],tab[n-1]);

Linijce powinno być i a nie k? Błąd masz gdzieś jeszcze. Swoją drogą przekombinowałeś, tak w zasadzie to nie potrzebujesz tablicy do tego zadania. Zacznij wypisywać od drugiego elementu a a pierwszy zapamiętaj w zmiennej i wypisz już poza pętlą.

1

Już prostszego zadania nie można sobie wyobrazić ;-)

dorwij testy
scanf( "%d" &tests );

potem tradycyjnie
while( tests-- ) {

pobierz liczbe zmiennych
scanf( "%d", &num_len );
scanf( "%d", &first_num );
num_len--

i od razu wywalaj z pozostałych
-scanuj liczbe
-drukuj liczbe + spacja

Drukuj zachowana liczbe na końcu z znakiem nowej linii. Do spoja nie będę robił całego rozwiązania w kodzie bo jednak założenie jest tam pewnej samodzielności. A że sam mam tam konto to z szacunku nie będę odbierał innym wysiłku samodzielnego rozwiązania. ;-))))))

Pzdr.

PS spoj ma forum i tam pomagają.

0

Dziękuje za wszystkie odpowiedzi.
Faktycznie przekombinowałam Sig i to sporo :D

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