Kezdőoldal » Számítástechnika » Programozás » Hogyan tudnám megvalósítani C...

Hogyan tudnám megvalósítani C nyelvben ?

Figyelt kérdés

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;

}



2020. dec. 1. 17:13
 1/1 anonim ***** válasza:
100%

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.

2020. dec. 1. 20:37
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!