👤

Zadanie 16 – Pamięć
Ćwiczenie pamięci to bardzo ważna sprawa. Janek postanowił, że spróbuje ją rozwijać zapamiętując liczby wylosowane przez komputer, a następnie recytując je najpierw w kolejności odwrotnej do wylosowanej, a następnie zgodnej z początkową. Potrzebuje tylko programu, który sprawdzałby poprawność jego wypowiedzi.
Wejście
Pierwszy wiersz pliku „pamięć.txt” zawiera jedną liczbę całkowitą n, ilość wylosowanych przez komputer wartości (1 ≤ n ≤ 1000000). W kolejnej linii znajduje się m liczb całkowitych xi (1 ≤ xi ≤ 1000000) – wylosowane wartości.
Wyjście
Program powinien wypisać w pierwszym wierszu n liczb w kolejności odwrotnej do wejścia, w drugim wierszu wyjścia – n liczb w kolejności zgodnej z wejściem.
Przykład
Dla danych wejściowych:
5
1 2 3 6 5
program powinien wypisać:
5 6 3 2 1
1 2 3 6 5

wc++
plik:
7
45 78 567 90 78 123 4134


Odpowiedź :

Odpowiedź:

#include <iostream>

#include <fstream>

#include <vector>

#include <algorithm>

int main() {

   std::ifstream file("sciezka do pliku");

   if (file) {

       int n, number;

       std::vector<int> numbers;

       file >> n;

       while (file >> number) {

           numbers.push_back(number);

       }

       std::reverse(numbers.begin(), numbers.end());

       std::for_each(numbers.begin(), numbers.end(),[](const int a){std::cout << a << " ";});

       std::cout << std::endl;

       std::reverse(numbers.begin(), numbers.end());

       std::for_each(numbers.begin(), numbers.end(),[](const int a){std::cout << a << " ";});

   } else {

       std::cout << "closed";

   }

   

   return 0;

}

Wyjaśnienie:

Nie robiłem tego jakoś mega optymalnie. Jakby nie przechodziło testów, to nie reversuj tego, tylko wyświetl od tyłu normalnie najpierw