Să se insereze în șir înaintea fiecărui element pătrat perfect rădăcina sa pătrată..
De ce este gresit acest algoritm ?
#include
#include
using namespace std;
int v[31],i,x,n,j,;
int main()
{cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
i=1;
while(i<=n)
{x=v[i];
if(x==(int)sqrt(x)*(int)sqrt(x))
{for(j=n;j>=i-1;j--)
v[j+1]=v[j];
v[i-1]=(int)sqrt(x);
n++;
i=i+2;}
else i++;}
for(i=1;i<=n;i++) cout<return 0;
}
carat033:
Daca vrei pot face eu programul de la 0, si te poti verifica cu al meu, voi incerca sa folosesc aceleasi variabile.
Răspunsuri la întrebare
Răspuns de
4
cand verifici daca numarul este patrat perfect, in if ai v[i-1]= radacina dar v[i-1] nu ne intereseaza, tu l-ai mutat pe v[i] in v[i+1] astfel incat sa-i faci loc lui sqrt(x) in v[i], pozitia imediat anterioara.
inlocuieste v[i-1]=sqrt(x); cu v[i]=sqrt(x); si e ok (int(sqrt) e irelevant deoarece stii deja ca e patrat deci radacina e intreaga)
daca ai peste 15 numere in vector s-ar putea sa depasesti dimensiunea (daca sunt toate patrate, dar asta se rezolva daca declari vectorul de 100 sau macar de 50).
also in declararea variabilelor ai o virgula intre j si ";", scapa de ea ca da eroare.
Alte întrebări interesante
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Franceza,
8 ani în urmă
Limba română,
9 ani în urmă
Istorie,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă