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

Problema #160-inserareInainte de pe Pbinfo . Imi poate spune cineva ce este gresit la codul meu ? Primesc 40 de puncte .

Anexe:

andreidiaconescu18: codul lui Vibe pare corect si inteleg ce face acolo, adauag si daca e radacina mai pune inca odata pe v[i] radacina si pe v[i+1] numarul. Nu inteleg ce e gresit.
boiustef: se primeste ca il pune pe numar de doua ori ...
Vibe23: cred ca de asta
boiustef: mai itai incearca...
andreidiaconescu18: pai indicele i nu se modifica deloc decat dupa ce a pus elementele.
boiustef: cin >> num;
if (sqrt(num)*sqrt(num)==num) { ++k; a[k]=sqrt(num); ++k; a[k]=num;}
else { ++k; a[k]=num;}
--n;
boiustef: cin >> num;
a[i]=num;
if (sqrt(num)*sqrt(num)==num) { ++k; a[k]=sqrt(num); ++k; a[k]=num;}
else { ++k; a[k]=num;}
--n;
boiustef: asta e eroarea... v[i]=k pana la if
andreidiaconescu18: da, dar daca nuamrul k e patrat perfect il inlocuieste cu sqrt(k) si pe v[i+1]=k
Vibe23: In orice caz va multumesc pentru ajutor . Am doua variante din care am invatat cate ceva si asta e ceea ce conteaza . Bafta multa !

Răspunsuri la întrebare

Răspuns de boiustef
1

#include <iostream>

#include <math.h>

using namespace std;

int a[51];

int main()

{

   int n, i, num, p;

   cin >> n;

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

   {

       cin >> num; p=(int)sqrt(num);

       if (sqrt(num)==p) { a[i]=p; ++i; a[i]=num; ++n; }

       else a[i]=num;

   }

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

       cout << a[i] << " ";

   return 0;

}

Alte întrebări interesante