Problem przy wczytywaniu zmiennych

0

Cześć
probuje rozwiazac zadanie ze spoja nastepujacej treści:

Przesuń elementy tablicy cyklicznie w lewo.

Wejście

Najpierw t - liczba testów. Następnie dla każdego testu liczba n i n liczb, n <= 100.

Wyjście

Dla każdego testu, n liczb w zmienionym porządku.

Przykład

Wejście:
2
7 1 2 3 4 5 6 7
3 2 1 10

Wyjście:
2 3 4 5 6 7 1
1 10 2

Rozpatrując linijke
7 1 2 3 4 5 6 7
liczba 7 to liczba mówiąca ile ma być zmiennych w linijce.
Tu mam problem:
nie wiem jak wprowadzić te dane tak aby kompilator wiedział ze ma zostać wczytane 7 liczb, kombinowałam coś takiego jednak to był kiepski pomysł:

    int prefiks; //ilosc zmiennych w linijce
	int liczby[100];
	
	cin>>n>>liczby;

Proszę o pomoc:)

P.S. Rozwiązując to zadanie muszę ograniczyc sie tylko do używania tablic, pętli i instrukcji warunkowej.

0

Ale po co chcesz to gdzieś tablicować? Pomyśl! Przecież zapamiętać musisz tylko jedną liczbę - tą pierwszą. Resztę mozesz od razu wypisywać na wyjście zaraz po wczytaniu!

#include <cstdio>

int main()
{
    int t;
    scanf("%d",&t); //number of tests
    for(int i=0;i<t;i++) //for every test
    {
        int n;
        scanf("%d",&n); //number of numbers in line
        int firstNumber;
        scanf("%d",&firstNumber); //storing first number, it will be printed as last
        for(int j=0;j<n-1;j++) //for every number after first one
        {
            int number;
            scanf("%d",&number);
            printf("%d ",number);  //write number to stdout
        }
        printf("%d\n",firstNumber); //write first read number as last
    }

    return 0;
}
0

Już przez chwile pomyślałam ze odebrałeś mi całą przyjemność z pisania kodu...ale nie mam pojęcia jak operuje się na printfach i skanfach... uczyli mnie tylko cin i cout mógłbyś to wytłumaczyć po mojemu:)

0
scanf("%d",&firstNumber); == cin >> firstNumber;
printf("%d ",number); == cout << number;
0

Jak chcesz pisać kody na jakiegoś spoja to zaznajom się ze scanf i printf bo są zwyczajnie szybsze i lepiej się tam sprawdzają.

0

Teoretycznie szybsze ale jak na razie wszystkie swoje rozwiazania daje z cout i cin i nie narzekam na czasy wykonania. Lepiej skupic sie na dobrym algorytmie z dobrym czasem wykonania bo to da duzo wiecej niz zmiana cin na scan itd.

0

a co oznacza

"%d"

:)

0

Tutaj jest to chyba dobrze opisane wszystko:

http://www.cplusplus.com/reference/clibrary/cstdio/printf/
http://www.cplusplus.com/reference/clibrary/cstdio/scanf/

Najpierw jednak napisz wszystko poprawnie, potem dopiero zabieraj się za takie "przyśpieszenia".

0

Zadanie mówi o przesunięciu cyklicznym tablicy. To co zaproponowali mowi przedmówcy ma się nijak do treści zadania.
Załóżmy że tablica ma n elementów, a Ty chcesz przesunąć o k.

Po wczytaniu liczb do tablicy, najpierw odwracasz całą tablicę, potem odwracasz fragment tablicy z pierwszymi k elementami, oraz odwracasz fragment tablicy z n-k pozostałymi elementami. Tablica została przesunięta cyklicznie o k.

0

cin i cout są niedużo wolniejsze jeśli na początku kodu wrzucisz:
ios_base::sync_with_stdio(0);
po użyciu tego ważne jest żeby nie mieszać printf/scanf z cin/cout (w zasadzie w ogole nie powinno sie mieszac)

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