Răspuns :
Stiind ca sunt numere reale pozitive ordonate crescator, atunci nu avem nevoie de vreun vector, pur si simplu luam fiecare element in parte.
Stiind ca intervalele sunt de forma [x;x+1] trebuie sa verificam doar daca numarul respectiv este mai mic decat x+1 si sa stabilim xul initial
Asadar punem conditia: daca numarul real>nr intreg+1, atunci iti trebuie un nou interval, incrementeaza numarul de intervale cu 1 si stabileste urmatorul nr intreg ca partea intreaga a numarului real curent+1
Este un algoritm eficient pentru ca citeste sirul o singura data si foloseste doar 2 variabile intermediare: nr_intreg si nr_intervale
#include <iostream>
#include <fstream>
using namespace std;
int main(){
int n,nr_intervale=0,nr_intreg=-1;
double x;
ifstream fin("numere.in");
fin>>n;
while(n>0){
fin>>x;
if(x>nr_intreg){
nr_intervale++;
nr_intreg=(int)x+1;
}
n--;
}
cout<<nr_intervale;
}
Stiind ca intervalele sunt de forma [x;x+1] trebuie sa verificam doar daca numarul respectiv este mai mic decat x+1 si sa stabilim xul initial
Asadar punem conditia: daca numarul real>nr intreg+1, atunci iti trebuie un nou interval, incrementeaza numarul de intervale cu 1 si stabileste urmatorul nr intreg ca partea intreaga a numarului real curent+1
Este un algoritm eficient pentru ca citeste sirul o singura data si foloseste doar 2 variabile intermediare: nr_intreg si nr_intervale
#include <iostream>
#include <fstream>
using namespace std;
int main(){
int n,nr_intervale=0,nr_intreg=-1;
double x;
ifstream fin("numere.in");
fin>>n;
while(n>0){
fin>>x;
if(x>nr_intreg){
nr_intervale++;
nr_intreg=(int)x+1;
}
n--;
}
cout<<nr_intervale;
}