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

Fișiereul text BAC.TXT conține un șir s de cel mult un milion de numere naturale, formate fiecare din cel mult 9 cifre, separate prin câte un spațiu.
Scrieți un program C/C++ care citește numerele din fișier și determină, utilizând un algoritm eficient din punct de vedere al memoriei utilizate și al timpului de executare, lungimea secvenței obținute prin eliminarea din cele două extremități ale șirului s a unui număr minim de numere, fără a schimba ordinea celorlalte numere, astfel încât secvența rezultată să înceapă cu un număr format doar din cifre pare și să se termine cu un număr format doar din cifre impare. Programul va afișa pe ecran lungimea secvenței obținute.

De exemplu, dacă fișierul BAC.TXT conține numerele :
⁻131 214⁻ 62 34 28 34 8 45 18 72 35 12 17 34 4 135 ⁻63 81 101⁻
pe ecran se va afișa numărul 14, deoarece secvența căutată se obține prin eliminarea numerelor aflate între liniuțe și este formată din 14 numere.

Răspunsuri la întrebare

Răspuns de andrei750238
6

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("BAC.TXT");

int main(){

int n=0, a=0, z=0, x, md=0;

while(f>>x){

 n++;

 if(md==0){

  bool par=1;

  while (x){

   if(x%2==1)par=0;

   x=x/10;

  }

  if(par)md=1;

  else a++;

 }

 else {

  z++;

  bool impar=1;

  while (x){

   if(x%2==0)impar=0;

   x=x/10;

  }

  if(impar)z=0;

 }

}

cout << n-a-z;

}

Anexe:

andrei750238: Explicatie :
Determinam in variabila a numarul de valori pana la prima valoare complet para
Determinam in variabila z numarul de valori de la sfarsitul fisierului pana la utlima valoare complet impara
mmamam: ajuta-ma si pe mine te rog mult
Alte întrebări interesante