Hogyan tudnám megvalósítani C nyelvben ?
Egy legtöbb 20 egész számot tartalmazó vektor elemeiből másold át egy másik vektorba azokat, melyek
teljes négyzetek. Írd ki a talált teljes négyzetek számát is!
Pl: n = 6 x = (2, 4, 8, 25, 3, 66) az eredmény y = (4, 25) és 2 db teljes négyzet volt. Hol a hiba ?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
int main()
{
int i,n,v[20],a[20];
int negyzet;
printf("Hany eleme lesz a tombnek: ");
scanf("%d", &n);
negyzet=sqrt(v[i]);
for (i=1; i<n+1; i++)
{
scanf("%d", &v[i]);
printf("v[%i]=%i \n ", i, v[i]);
}
for (i=1;i<n+1;i++)
{
if(negyzet == (v[i]*v[i]))
{
printf("%d Negyzetszam", negyzet);
}
}
return 0;
}
for (i=1; i<n+1; i++)
scanf("%d", &v[i]);
Egyszer itt van egy olyan, hogy fölöslegesen használsz egy elemet üresen, ugyanis az indexelés 0-tól kezdődik. Viszont, ha 20 elem érkezik, te 21-edik elemre akarsz indexelni.
negyzet=sqrt(v[i]); Ez mi? mert ez nem négyzet, hanem gyök. És te azt nézed, hogy egy szám gyöke egyenlő-e a tömbödben található elem néhyzetével. Arról nem is beszélve, hogy ez egyetlen gyökkel dolgozik, de neked az a dolgod, hogy minden számra megvizsgáld.
Sokadik probléma: az sqrt és pow matematikai függvények lebegőpontos értékekkel dolgoznak, így a 4 gyökére 1,99et kaphatsz, és akkor hiába nézed, hogy 1,99*1,99 ->ez nem 4 lesz, pedig a 4 négyzetszám.
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!