Informatică, întrebare adresată de climaCode, 8 ani în urmă

URGENT! C++

Se citește de la tastatură un număr întreg N care reprezintă numărul de elemente dintr-un vector. În continuare, se vor citi N numere întregi. Să se salveze aceste numere și să se elimine toate subsecvențele din vector care reprezintă valori consecutive crescătoare. În final se va afișa vectorul după modificare. Dacă acesta nu conține elemente se va afișa -1.
Date de intrare:
Pe prima linie N, număr întreg fără semn reprezentat pe 16 biți. Pe a doua linie N valori întregi cu semn reprezentate pe 32 de biți. Date de ieșire:
Vectorul modificat
Exemplu:
Date de intrare:
10
5 7 3 9 10 11 7 2 8 9
Date de ieșire:
5 7 3 7 2

Anexe:

Răspunsuri la întrebare

Răspuns de VxF
1

Răspuns:

#include <iostream>

#include <vector>

int main()

{

   std::vector<int> lista, rezultat;

   int n;

   std::cout << "n: ";

   std::cin >> n;

   lista.reserve(n);

   

   std::cout << "Lista: ";

   for (int i = 0; i < n; i++) {

       std::cin >> lista[i];

   }

   bool dupaEliminare = false;

   for (int i = 0; i < n; i++) {

       if (lista[i] + 1 == lista[i + 1]) {

           dupaEliminare = true;

       } else if (dupaEliminare) {

           dupaEliminare = false;

       } else {

           rezultat.push_back(lista[i]);

       }

   }

   std::cout << "Lista: ";

   if (! rezultat.empty()) {

       for (int i = 0; i < rezultat.size(); i++) {

           std::cout << rezultat[i] << " ";

       }

   } else {

       std::cout << -1;

   }

   std::cout << std::endl;

}

Explicație:

Varianta asta lasă mai puţine posibilități pentru crăpări datorate unor diferenţe de compilare.


climaCode: si nu arata nimic
VxF: La mine are. Am atașat captura de ecran la răspuns. (Poate n-a fost o idee bună să prefixez și rezultatul tot cu „Lista:".)
climaCode: ok. multumesc mult
VxF: Ah, deci crapă. Aia-i o problemă complet diferită. Stai că încerc o altă abordare.
climaCode: --- Input ---
10
6 7 8 9 10 11 6 7 8 9

--- Program output ---

--- Expected output (numbers)---
-1
climaCode: --- Input ---
35
7 4 4 6 7 8 9 2 10 3 10 9 5 1 1 3 10 5 4 4 3 5 4 5 10 4 3 3 3 5 5 2 4 3 4

--- Program output ---

--- Expected output (numbers)---
7 4 4 2 10 3 10 9 5 1 1 3 10 5 4 4 3 5 10 4 3 3 3 5 5 2 4
VxF: Am schimbat codul din răspuns. Încearcă-l te rog.
climaCode: nu trece toate testele la input n: 613 și lista este forte lunga la ieșirea programului apare un nume mă pucin decât în expected output
climaCode: numer*
VxF: A rămas o bucată de la implementarea precedentă. Din rândul „for (int i = 0; i < n - 1; i++) {” şterge „- 1” să rămână doar „for (int i = 0; i < n; i++) {” . (O să editez răspunsul dacă îmi permit moderatorii.)
Alte întrebări interesante