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
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:
Alte întrebări interesante
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Engleza,
8 ani în urmă
Chimie,
9 ani în urmă
Matematică,
9 ani în urmă
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