Skocz do zawartości

  •  
  • Mini kompendium
  • MimeTeX
  • Regulamin

Zdjęcie

Na przemian

LICEUM

  • Nie możesz napisać tematu
  • Zaloguj się aby odpowiedzieć
7 odpowiedzi w tym temacie

#1 Azaks

Azaks

    Operator całkujący

  • ^Przyjaciele
  • 564 postów
17
Mały Pomocnik I
  • Płeć:Mężczyzna

Napisano 04.01.2014 - 12:08

Antek z Zuzią często bawią się w pisanie liczb. Na kartce zapisują na przemian liczby całkowite - raz Zuzia, raz Antek. W wyniku zabawy powstaje zazwyczaj wiele zapisanych liczbami kartek.

Zadanie

Napisz program, który:

  • wczyta ze standardowego wejścia:
    • liczbę kartek zapisanych przez dzieci,
    • liczbę elementów ciągu,
    • ciąg liczb całkowitych,
  • dla każdego zestawu danych wypisze na standardowe wyjście wczytane liczby w taki sposób, aby najpierw pojawiły się liczby zapisane przez Antka, a następnie te, które zapisała Zuzia (według kolejności występowania na wejściu).
Wejście

Pierwszy wiersz zawiera jedną liczbę całkowitą d (od 1 do 20), będącą liczbą zestawów danych. W kolejnych d wierszach znajdują się opisy poszczególnych zestawów danych. Każdy zestaw składa się z liczby n oraz następujących po niej liczb a1 , a2 ,...an, pooddzielanych pojedynczymi odstępami.

Wyjście

Program powinien wypisać d wierszy. W k-tym z nich powinien się znajdować ciąg odpowiadający k-temu zestawowi danych. Są to wczytane liczby w zmienionej kolejności - najpierw liczby, które były na wejściu na pozycjach parzystych, następnie liczby z pozycji nieparzystych.

Przykład

Dla danych wejściowych:

2
3 5 7 2
4 2 1 4 3

poprawną odpowiedzią jest:

7 5 2
1 3 2 4

 


Użytkownik Azaks edytował ten post 04.01.2014 - 12:16

  • 0

Afroman

    Kombinator

  • Użytkownik
3
  • Płeć:Kobieta

Napisano 25.09.2011 - 17:55

#2 hmm

hmm

    Operator całkujący

  • VIP
  • 478 postów
312
Instruktor I
  • Płeć:Mężczyzna

Napisano 04.01.2014 - 21:04

#include <iostream>
using namespace std;

int main()
{
	int d,n,i,j;
	cin>>d;
	int **liczby=new int *[d];
	int *dlugosc=new int [d];
	for(i=0;i<d;i++){
		cin>>n;
		dlugosc[i]=n;
		liczby[i]=new int[n];
		for(j=0;j<n;j++){
			cin>>liczby[i][j];
		}
	}
	for(i=0;i<d;i++){
		n=dlugosc[i];
		for(j=1;j<n;j+=2){
			cout<<liczby[i][j];
			cout<<" ";
		}
		for(j=0;j<n;j+=2){
			cout<<liczby[i][j];
			cout<<" ";
		}
		cout<<endl;
	}
	return 0;
}

  • 1

#3 Azaks

Azaks

    Operator całkujący

  • ^Przyjaciele
  • 564 postów
17
Mały Pomocnik I
  • Płeć:Mężczyzna

Napisano 04.01.2014 - 21:29

int **liczby=new int *[d];
    int *dlugosc=new int [d]; 

 

Niestety nie miałem takich zapisów nie wiem co one oznaczają i pewnie nie będą przyjęte.


  • 0

#4 hmm

hmm

    Operator całkujący

  • VIP
  • 478 postów
312
Instruktor I
  • Płeć:Mężczyzna

Napisano 05.01.2014 - 00:13

Problem w tym, że nie jest podana żadne ograniczenie ile liczb jest na kartce. Wiemy tylko, że d jest od 1 do 20 (czego ja nie wykorzystywałem). Można by było sobie inaczej poradzić używając stringów (jakkolwiek to brzmi :D), tylko też nie wiem czy to miałeś. W ostateczności można wymyślić sobie jakieś ograniczenie i może takie rozwiązanie przejdzie.


  • 0

#5 Azaks

Azaks

    Operator całkujący

  • ^Przyjaciele
  • 564 postów
17
Mały Pomocnik I
  • Płeć:Mężczyzna

Napisano 05.01.2014 - 11:26

Takie warunki jeszcze znalazłem:

n (2\leq n\leq 1000) oraz następujących po niej liczb a1, a2 ,a3 ...an(1\leq ai\leq 1000 , 1\leq i\leq n), 


Użytkownik Azaks edytował ten post 05.01.2014 - 11:27

  • 0

#6 hmm

hmm

    Operator całkujący

  • VIP
  • 478 postów
312
Instruktor I
  • Płeć:Mężczyzna

Napisano 06.01.2014 - 12:17

OK, to wtedy wystarczy wykreślić te linijki których nie rozumiałeś i wkleić tam deklaracje tablic o podanych rozmiarach, czyli:

#include <iostream>
using namespace std;

int main(int argc, char **argv)
{
	int d,n,i,j;
	cin>>d;
	
	int liczby[20][1000];
	int dlugosc[20];
	for(i=0;i<d;i++){
		cin>>n;
		dlugosc[i]=n;
		for(j=0;j<n;j++){
			cin>>liczby[i][j];
		}
	}
	for(i=0;i<d;i++){
		n=dlugosc[i];
		for(j=1;j<n;j+=2){
			cout<<liczby[i][j];
			cout<<" ";
		}
		for(j=0;j<n;j+=2){
			cout<<liczby[i][j];
			cout<<" ";
		}
		cout<<endl;
	}
	return 0;
}


  • 1

#7 Azaks

Azaks

    Operator całkujący

  • ^Przyjaciele
  • 564 postów
17
Mały Pomocnik I
  • Płeć:Mężczyzna

Napisano 06.01.2014 - 21:00

liczby[20][1000] Mógłbyś mi powiedzieć co oznacza taki zapis, bo spotykałem się tylko z taką formą, np. tab[10] ( z jednym nawiasem kwadratowym).


  • 0

#8 ZbyszekEssk

ZbyszekEssk

    Nowicjusz

  • Użytkownik
  • 1 postów
0
Neutralny
  • Płeć:Mężczyzna

Napisano 10.09.2014 - 15:49

właśnie tego szukałem, ale przypadek


  • 0





Tematy podobne do: Na przemian     x