Spoj- ROL

GF
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:24
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:

Kopiuj
#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ę)

Kopiuj
#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
hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 2 godziny
0

SI
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 10 godzin
0

Jeśteś pewien że w tej

Kopiuj
 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ą.

edytowany 1x, ostatnio: sig
hauleth
s/Jeśteś pewien/Jesteś pewna/
SI
E tam Gendera przecież mamy.
wujnia
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:161
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ą.

edytowany 4x, ostatnio: wujnia
GF
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:24
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.