Rajzoljunk a konzol ablakba Windowson
Írj programot, amely bekéri egy másodfokú egyenlet együtthatóit, és kiszámítja az egyenlet gyökeit!
Írj programot, amely bekéri a felhasználótól egy derékszögű háromszög két befogójának hosszát, és kiszámítja a háromszög területét, átfogójának hosszát, valamint a szögeit! (A math.h-ban definiált függvényeket használhatod a számításokhoz.)
Írj függvényt, amely paraméterként kapja egy másodfokú függvény x értékét és a, b, c együtthatóit,, és kiszámítja majd visszaadja az y értékét! (A másodfokú függvény: y=ax2+bx+c.)
Tipp: Az egyváltozós matematikai függvényeket így használhatjuk:
Ezek közül az abszolútérték a legegyszerűbb, írjuk meg mi magunk ezt a függvényt! A függvény megírását (azaz a definícióját) a visszaadott érték típusával kezdjük. Mivel valós szám abszolút értékét szeretnénk kiszámolni, ez double lesz. A visszadott érték típusát a függvény neve követi, ez legyen mondjuk sajat_abs. A függvény neve után zárójelben felsoroljuk a függvény paramétereit, vesszővel elválasztva. Az abszolút érték függvénynek 1 db paramétere van: az a valós szám, amelynek az abszolút értékét ki akarjuk számolni. (A main függvény is egy függvény, tehát hasonló a többi függvényhez. Amit a main-ben lehet, azt más függvényben is lehet.) Ezt követi a függvénytörzs, amely { } közé van zárva. Itt kell kiszámolni és visszaadni az abszolót értéket. A kiszámított értéket a return után írva tudjuk visszaadni. A return utasítás azonnali visszaugrást is jelent oda, ahonnan a függvényt meghívtuk. Egy teljes program, amely bemutatja az abszolút érték függvényt, és annak meghívását is:
#include <stdio.h>
double sajat_abs(double x){
if(x < 0.0)
return -x;
return x; // nem kell else, mert az if-ben lévő return -x;-nél kiugrunk a függvényből,
// ha az if feltétele igaz.
}
int main(){
double a,b;
printf("Kerek egy szamot: ");
scanf("%lg", &a);
printf("%g abszolut erteke: %g\n", a, sajat_abs(a));
// Így is lehet:
b = sajat_abs(a);
printf("%g abszolut erteke: %g\n", a, b);
return 0;
}
|
Írj C programot, amely bekér a felhasználótól egy pozitív egész számot (nem kell ellenőrizni, feltételezzük, hogy a felhasználó valóban pozitív egészt adott meg)! A program számítsa ki a szám osztóinak összegét, és írja ki, hogy ez prím-e! Pl. be: 9 ki: Osszeg: 13, prím. (Mert az osztók összege 1+3+9=13.)
| mintamegoldás függvényekkel |
#include <stdio.h>
#include <stdbool.h>
int osztok_osszege(int szam) {
int osszeg = 0;
for (int i = 1; i <= szam; i++)
if (szam%i == 0)
osszeg += i;
return osszeg;
}
bool prim_e(int szam){
for (int i = 2; i < szam; i++)
if (szam%i == 0)
return false;
return true;
}
int main() {
int szam;
scanf("%d", &szam);
int sum = osztok_osszege(szam);
printf("Osszeg: %d ", sum);
if (prim_e(sum)) {
printf("prim\n");
}
else {
printf("nem prim");
}
return 0;
}
|
a) Készíts függvényt, amely egy síkbeli pont koordinátáit kapja, és kiszámítja a pont origótól való távolságát!
b) Készíts függvényt, amely egy térbeli pont koordinátáit kapja, és kiszámítja a pont origótól való távolságát!
c) Egésztsd ki teljes programmá, a main függvényben mutasd be a két távolságszámító függvény működését!
Megjegyzés: ha egy feladatban nincs egyértelmű utalás arra, hogy egy függvény a felhasználóval kommunikál (azaz scanf-fel vagy más módon adatot olvas be, ill. printf-fel vagy más módon valamit kiír), akkor tilos ilyet beletenni. A valamit kiszámító függvények a bemenő adataikat függvényparaméterként kapják, és a kiszámított eredményt a hívás helyére visszaadják (leggyakrabban return-nel, de látni fogunk más módot is.)
Írj programot, amely kiszámítja az y=ax2+bx+c (másodfokú) függvény integrálját a min-max intervallumon! Az a, b, c együtthatókat, valamint a min és max értékeket a felhasználó adhatja meg. (A feladatot integrálközelítő összeg kiszámításával kell megoldani.)
Segítség: Egy függvény integrálja a függvénygörbe alatti előjeles területet jelenti. Egyszerű közelítő íntegrálás úgy végezhető, hogy felosztjuk a min-max intervallumot pl. 1000 részre, és minden részen téglalappal közelítjük a függvénygörbe alatti területet, a téglalapok területét összeadjuk. Egy téglalap területe: y(xi)*dx, dx = (max-min)/1000, xi = x értéke az i. osztópontban.
| 1. feladat |
#include <stdio.h>
#include <math.h>
int main(){
double a,b,c,diszkr,x1,x2;
printf("a="); scanf("%lg",&a);
printf("b="); scanf("%lg",&b);
printf("c="); scanf("%lg",&c);
if(a==0.0)
printf("Linearis egyenlet, gyoke: %g\n",-c/b);
else{
diszkr = b*b - 4.0*a*c;
if(diszkr < 0)
printf("Nincs valos megoldas.\n");
else if(diszkr == 0)
printf("Egy gyok van: %g\n", -b/(2*a) );
else{
diszkr = sqrt(diszkr);
x1 = ( -b + diszkr ) / (2*a);
x2 = ( -b - diszkr ) / (2*a);
printf("A gyokok:\n%g\n%g\n",x1,x2);
}
}
return 0;
}
|
| 2. feladat |
#include <stdio.h>
#include <math.h>
int main(){
double a, b, c, T, alfa, beta;
const double pi = 2*acos(0.0);
scanf("%lg%lg", &a, &b);
c = sqrt(a*a + b*b);
T = a*b / 2.0;
alfa = atan2(a, b);
beta = pi / 2.0 - alfa;
printf("c=%g\nT=%g\nalfa=%g\nbeta=%g\n",
c, T, alfa / pi * 180, beta / pi * 180);
return 0;
}
|
| 3. feladat |
// függvényparaméter megadásakor mindegyik paraméternek oda kell írni a típusát,
// nem lehet double x,a,b,c-t használni
double masodfoku(double x, double a, double b, double c){
return x*x*a + x*b + c;
}
|
| 4. feladat |
#include <stdio.h>
#include <math.h>
double tav2d(double x, double y) {
return sqrt(x*x + y*y);
}
double tav3d(double x, double y, double z) {
double eredmeny;
eredmeny = sqrt(x*x + y*y + z*z);
return eredmeny;
} // egy sorban is jó, ahogy a 2d verziónál
int main() { // egy függvényből nem látszanak más függvények változói
double x, y, eredmeny; // lehet ugyanaz a neve, semmi köze a fenti, azonos nevű változókhoz!
x = 6.0;
y = -4.4;
eredmeny = tav2d(x, y);
printf("(%g, %g) tavolsaga %g\n", x, y, eredmeny);
printf("(%g, %g, %g) tavolsaga %g\n", y, -x, 3.31, tav3d(y, -x, 3.31));
return 0;
}
|
| 5. feladat |
#include <stdio.h>
#include <math.h>
int main(){
double a,b,c,min,max,x,dx,osszeg=0.0;
printf("Az egyenlet együtthatoi (a,b,c): ");
scanf("%lg%lg%lg",&a,&b,&c);
printf("A tartomany hatarai (min,max): ");
scanf("%lg%lg",&min,&max);
dx = (max - min) / 10000.0;
for( x = min; x < max; x += dx){
double fx = a*x*x + b*x + c;
osszeg += dx*fx;
}
printf("Az integral: %g\n",osszeg);
return 0;
}
|