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

#132 ElemPP

Se citeşte n şi un şir de n numere naturale.

Cerinţa
Să se afișeze elementele din șir care au proprietatea că primele două cifre din scrierea zecimală formează un pătrat perfect.

Date de intrare
Fişierul de intrare elempp.in conţine pe prima linie numărul n şi pe a doua linie n numere naturale separate prin spaţii.

Date de ieşire
Fişierul de ieşire elempp.out va conţine pe prima linie elementele din șirul dat care respectă proprietatea precizată. Ordinea acestor elemente este cea în care se află în șirul dat.

Restricţii şi precizări
1 ≤ n ≤ 20
numerele de pe a doua linie a fişierului de intrare vor fi mai mici decât 1.000.000.000 și au cel puțin două cifre

Exemplu
elempp.in

5
253 16 225 100 3678
elempp.out

253 16 3678

#include
#include
#include
using namespace std;
//ifstream f("elempp.in");
//ofstream g("elempp.out");
int n,aux,a[20];
int main(){
f>>n;
for (int i=1;i<=n;i++) f>>a[i];
for (int i=1;i<=n;i++)
{
aux=a[i];
while (a[i]>=100)
a[i]/=10;
if (sqrt(a[i])*sqrt(a[i])==a[i])
g< }
return 0;
}
Puteti observa ca programul merge dar
nu-mi puncteaza nimic
As dori si o explicatie daca se poate :D
Multumesc pt ajutor


boiustef: if (sqrt(b)==int(sqrt(b)))
asa se verifica daca b este patrat perfect ...
boiustef: Ce inseamna acest :D folosit des de tine ???

Răspunsuri la întrebare

Răspuns de boiustef
5

#include <iostream>

#include <fstream>

#include <math.h>

using namespace std;

int c[21];

int pdcpp(int a)

{

   while (a>=100)

   {

       a/=10;

   }

   return a;

}

int main()

{

   ifstream f("elempp.in");

   ofstream g("elempp.out");

   int n, b, i, num, k=0;

   f >> n;

   for (i=1; i<=n; ++i)

   {

       f >> num;

       b=pdcpp(num);

       if (sqrt(b)==int(sqrt(b))) { ++k; c[k]=num; }

   }

   for (i=1; i<=k; ++i)

       g << c[i] << " ";

   return 0;

}



pmarian98: ai fost rapid !!!!
Alte întrebări interesante