Se citeste din fisierul "numar.in" un numar cu mai mult de 4 cifre.
Scrieti un program care afiseaza in fisierul "numar.out" cifra maxima, cifra minima si pozitia pe care se afla.
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
#define marime_numar 100 //numarul de cifre pe care il poate avea numarul din "numar.in"
int main()
{
ifstream infile("numar.in");
ofstream outfile("numar.out");
char numar[marime_numar] = {};
int max=0, poz_max, min=9, poz_min;
infile >> numar; //introduc nr. din "numar.in" in sirul de caractere "numar"
for(int i=0; i<marime_numar; i++)
{
if(numar[i] == '\0') //daca intalnesc caracterul NULL inseamna ca am ajuns la finalul numarului
{
break;
}
if(numar[i] - '\0' - 48 > max) //convertesc cifrele din char in int si reinnoiesc valorile variabilelor
{
max = numar[i] - '\0'- 48;
poz_max = i;
}
if(numar[i] - '\0' - 48 < min) //convertesc cifrele din char in int si reinnoiesc valorile variabilelor
{
min = numar[i] - '\0'- 48;
poz_min = i;
}
}
outfile << "Maxim: " << max << " " << "Pozitie: " << poz_max << endl; //afisez rezultatul in "numar.out"
outfile << "Minim: " << min << " " << "Pozitie: " << poz_min << endl; //afisez rezultatul in "numar.out"
infile.close();
outfile.close();
return(0);
}
Explicație:
numar[i] - '\0' - 48 -> daca scazi dintr-un char caracterul NULL vei afla codul ASCII. Codul ASCII pentru valoarea 1 este 49, asa ca scad 48 din 49. Pentru valoarea 2 este 50, s.a.m.d. Asa convertesc fiecare cifra in int si o compar cu variabilele max, min existente.