[[oktatas:programozás:feladatok:speciális| < Speciális]]
====== C nyelvhez kapcsolódó feladatok ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2011, 2022
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== Bevezetés =====
Az itt található feladatok a C nyelvhez kapcsolódnak.
Azonban több mint kétszáz általános feladatokat találsz az alábbi
helyen, amelyek szintén megvalósíthatók C nyelven, az egészen kezdőtől haladóbb szintig:
* [[oktatas:programozas:feladatok:altalanos|Általános programozási feladatok]]
Néhány feladatban hiányozik a megfelelő tagolás, behúzás, szintaxis kiemelés; ez nem véletlen.
===== Szintaktikai hibák =====
A következő feladatok szintaktikai hibákat tartalmaznak, amelyeket meg kell keresned.
==== Feladat 001 ====
A következő programban keresse meg a hibákat:
#include stdio.h
main()
{
int a := 0;
printf("Írj be egy száznál nagyobb számot: ");
while a < 100 {
printf("Szám: ");
scanf("%d", &a);
}
}
A megoldást írja a 001.txt állományba, majd töltse fel a megadott helyre.
==== Feladat 002 ====
A következő programban keresse meg a hibákat:
#inclde
main()
{
a = 0;
printf("Írj be egy száznál nagyobb számot: ")
while(a < 100) {
printf("Szám: ")
scanf("%d", &a)
}
}
A megoldást írja a 002.txt állományba, majd töltse fel a megadott helyre.
==== Feladat 003 ====
Keresse meg a következő programban a szintaktikai hibákat.
#include
#include
A megoldást írja a 003.txt állományba, majd töltse fel a megadott helyre.
===== Szemantikai hibák =====
==== Feladat 101 ====
A következő programnak ki kell írnia, hogy kérünk egy száznál nagyobb számot,
majd be kell kérni egy számot mindaddig amíg 100-nál kisebbet írt be a
felhasználó. A program azonban nem ezt csinálja. Hol a hiba?
#include
main()
{
a = 0;
printf("Írj be egy száznál nagyobb számot: ");
while(a > 100)
{
printf("Szám: ");
scanf("%d", &a);
}
}
A megoldást írja a 101.txt állományba, majd töltse fel a megadott helyre.
==== Feladat 102 ====
A következő programnak be kell kérnie egy háromszög három oldalát. El kell döntenie, hogy
a háromszög megszerkeszthető-e, majd kiszámolnia a területet. A program azonban nem ezt
teszi. Hol a hiba?
#include
#include
main()
{
double a, b, c;
printf("Háromszög adatai");
printf("a: ");
scanf("%lf", &a);
printf("a: ");
scanf("%lf", &b);
printf("c: ");
scanf("%lf", &a);
if (a + b < c)
{
printf("Háromszög nem szerkeszthető");
exit(2);
}
else if (a + c < b)
{
printf("A háromszög nem szerkeszthető");
exit(2);
}
else if (c + b < a)
{
printf("A háromszög nem szerkeszthető");
exit(2);
}
else
{
s = (a, + b + c)/2;
terulet = pow(s*(s-a)*(s-b)*(s-c),s);
}
}
A megoldást írja a 102.txt állományba, majd töltse fel a megadott helyre.
==== Feladat 103 ====
A következő programnak be kell kérnie egy számot majd az értéket a képernyőre írnia. A program viszont nem ezt csinálja. Hol a hiba?
#include
main()
{
double a;
printf("Szám: ");
scanf("%f", &a);
printf("%f\n", a);
}
A válaszod mentsd a hoz.txt fájlba.
==== Feladat 104 ====
#include
int main() {
printf("Helló");
return 0;
printf("adf");
printf("adf");
printf("adf");
int a;
for(a=0; a<10; a++) {
printf("Valami");
printf("Másik");
}
}
Mit ír a következő program a képernyőre?
===== Átláthatatlan szintaktikai hibák =====
==== Feladat 201 ====
#include
#include
main()
{
printf("Ellipszis közelítő kerülete");
double ellipszisatlo1 ellipszisatlo2;
double ter1 := 4*((M_PI*ellipszisatlo1*ellipszisatlo2+pow(ellipszisatlo1-ellipszisatlo2,2))\(ellipszisatlo1+ellipszsatlo2));
printf("Terület: %lf\n", ter1)
if ter1 < 1200 then
{ print("Nem elég nagy az ellipszis!\n");
}
===== Átláthatatlan szemantikai hibák =====
==== Feladat 301 ====
A következő program feladata, hogy bekéri két kör sugarát, majd kiszámolja azok kerületét és területét. A kör kerületének képlete 2*r*pi. A kör területének képlete r^2*pi. A ^ karakter egy szám valahányadik hatványát jelöli. A r^2, az r a második hatványon. A program a végén kiírja, hogy melyik nagyobb a területe alapján. A program azonban nem ezt csinálja. Keresse meg a hibákat.
#include
#include
main( ){
double ter2, r1, ker1, ker2, ter1, r2;
printf("Kör 1 sugara: "); scanf("%lf", &r1);
printf("Kör 2 sugara: ");
scanf("%lf", &r2);
ker1 = r1 * M_PI;
ker2 = r2 * M_PI;
ter1 = pow(r1, 2) * M_PI;
ter2 = pow(r2, 2) * M_PI;
if (ter1 > ter2)
printf("A második kör nagyobb");else
printf("Az első kör nagyob");
}
===== Vegyes hibák =====
==== Feladat 401 ====
A következő feladat a húrnégyszögekről szól. A húrnégyszögek olyan négyszögek
amelyeknek bármely két szemközti szögének összege 180°.
Megfordítva: Ha egy négyszög két szemközti szögének összege 180°, akkor az húrnégyszög.
Másként fogalmazva: A húrnégyszög olyan négyszög, amelyhez van olyan kör, amely áthalad a négyszög négy csúcsán.
Újabb megfogalmazásban: olyan négyszög, melynek oldalai egy kör húrjai.
A következő programnak ki kell számolnia a húrnégyszög köré írható kör sugarát. Azonban nem ezt teszi.
Keresse meg a hibákat!
=== Segítség ===
A húrnégyszög kerületének fele:
s = (a+b+c+d)/2;
A húrnégyszög kerülete:
terulet = gyok((s-a)*(s-b)*(s-c)*(s-d));
A húrnégyszög köré írható kör sugara:
sugar = (1/(4*terulet))* gyok((ab + cd)* (ac + bd)* (ad + bc));
=== A program ===
#include
#include
main()
{double a, b, c, d;
printf("a: ");
scanf("%lf", &a);
printf("b: ");
scanf("%lf, &c);
printf("c: ");
scanf("lf", &c);
print(" b: ", &d);
s = (a+b+c+d)/2;
t = sqrt((s-a)*(s-b)*(s-c)*(s-d));
r = (1/(4*T))* sqrt((ab + cd)* (ac + bd)* (ad + bc));
}