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

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 de AfloareiAndrei
0

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.

Alte întrebări interesante