C nyelvben a valós változókat hogyan tudom átadni címszerinti paraméterként? Úgy vettem észre, hogyami az egészeket működik(*,&), az a lebegőpontosnál nem. Még elég kezdő vagyok, légyszii segítesek:))
Nem kéne, hogy különbség legyen.
Mutatsz kódrészletet?
#include <stdio.h>
#include <stdlib.h>
void beolvasas (long double *a, long double *b, long double *c)
{
printf("a= ");
scanf("%f", a);
printf("b= ");
scanf("%f", b);
printf("c= ");
scanf("%f",c);
}
void megoldas (long double a, long double b, long double c)
{
long double p=0;
long double delta=0;
if (a!=0)
{
} delta= b*b - 4*a*c; printf( "%f", delta);
if (delta>0)
{
printf("Megoldasok: ");
p=sqrt(delta);
printf( "%f", (-b+ p)/ 2*a, ", ");
printf("%f", (-b- p)/ 2*a);
}
else {..}
int main()
{
long double a, b, c;
beolvasas(&a, &b, &c);
megoldas(a, b, c);
return 0;
}
Egy másodfokú egyenlet megoldásait tárgyalja a program. Elvégzi a beolvasást és minden, de nullákat ír ki megoldásnak.
Nem tudom, milyen compilert használsz, de nekem jónéhány dolgot át kellett írnom, hogy egyáltalán lefusson:
- long double format string: %Lf
- Az egyik printf-nek harmadik paraméterként átadsz egy vesszőt. Azt tedd az első paraméterbe. Az nem változó.
- Kapcsos zárójeleket is nézd át!
- if (a != 0) - Ennek direkt nincs semmi a blokkjában?
Miután lefutott, beírtam 3 random számot és ezt kaptam:
a= 2.5
b= 2.2
c= 4.4
-39.160000
a= 1
b= 5
c= 2
17.000000Megoldasok: -0.438447, -4.561553
#include <stdio.h>
#include <stdlib.h>
void beolvasas (long double *a, long double *b, long double *c)
{
printf("a= ");
scanf("%Lf", a);
printf("b= ");
scanf("%Lf", b);
printf("c= ");
scanf("%Lf",c);
}
void megoldas (long double a, long double b, long double c)
{
long double p=0;
long double delta=0;
if (a!=0)
{
delta= b*b - 4*a*c;
if (delta>0)
{
printf("Megoldasok: ");
p=sqrt(delta);
printf( "%Lf", ((-1)*b+ p)/ 2*a);
printf("%Lf", ((-1)*b- p)/ 2*a);
}
else
{
if (delta=0)
{
printf("Egy megoldas van: ");
printf("%Lf", p/2*a);
}
else
{
delta= delta* (-1);
printf("Megoldasok: ");
printf( "%Lf", ((-1)*b+ p)/ 2*a); printf("i, ");
printf("%Lf", ((-1)*b- p)/ 2*a); printf("i, ");
}
}
}
else
{
if (b!=0)
{
printf("Megoldas: ");
printf("%Lf", (-1)*c/b);
}
else
{
printf("Nincs megoldas");
}
}
}
int main()
{
long double a, b, c;
beolvasas(&a, &b, &c);
megoldas(a, b, c);
return 0;
}
Átjavítottam, viszont nekem így sem működik. GCC compilert használok
De miért nem nézed meg a hibaüzenetet?
Írja, hogy az sqrt() ismeretlen.
Megoldás:
#include <math.h>
Vagy neked lefut enélkül is és más hiba van?
Nem tudom, mi lehet még.. nálam jó.
Kezdj el debugolni. Írasd ki a változókat a kód különböző pontjain!
Egyébként legközelebb ne a nyelvtanulásba tedd fel a kérdést, mert az az idegennyelvekről szól!
Van Számítástechnika -> Programozás, ott több választ kapsz.
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!