oktatas:programozas:c:c_peldaprogram
Tartalomjegyzék
C példaprogram
Összeadás mutatókkal
#include <stdio.h> #include <stdlib.h> int main() { int *a; int *b; int *c; a = (int*) malloc(sizeof(int)); b = (int*) malloc(sizeof(int)); c = (int*) malloc(sizeof(int)); *a = 3; *b = 4; *c = *a + *b; printf("Osszeg: %d\n", *c); free(a); free(b); free(c); return 0; }
Háromszög területének számítása az oldalakból
#include <stdio.h> #include <stdlib.h> #include <math.h> double terszamit(int a, int b, int c) { long s = (a + b + c)/2; return sqrt(s*(s-a)*(s-b)*(s-c)); } int szerkesztheto(int a, int b, int c) { if ((a + b) <= c) return 0; else if ((a + c) <= b) return 0; else if ((b + c) <= a) return 0; else return 1; } int main() { int a, b, c; double terulet; printf("Háromszög területe\n"); printf("a: "); scanf("%d", &a); printf("b: "); scanf("%d", &b); printf("c: "); scanf("%d", &c); if (szerkesztheto(a, b, c)) { terulet = terszamit(a, b, c); printf("Terület: %f\n", terulet); } else printf("Nem szerkeszthető!\n"); return 0; }
Hexadecagon területe
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { double oldal; double terulet; printf("Hexadecagon teruletszamitas\n"); printf("Oldal: "); scanf("%lf", &oldal); terulet = (4 * pow(oldal, 2)) * (cos(M_PI/16)/sin(M_PI/16)); printf("A hexadecagon terulete: %lf", terulet); return 0; }
Trapéz területe
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { double terulet; printf("Trapez terulete\n"); printf("Csak valodi trapez eseten mukodik!\n"); double a, b, c, d; printf("a: "); scanf("%lf", &a); printf("b: "); scanf("%lf", &b); printf("c: "); scanf("%lf", &c); printf("d: "); scanf("%lf", &d); printf("a: %lf\n", a); terulet = ((a+c)/(4*(a-c))) * sqrt((a+b-c+d)*(a-b-c+d)* (a+b-c-d)*((a * -1)+b+c+d)); printf("Trapez terulete: %lf\n", terulet); return 0; }
Verem létrehozása
#include <stdio.h> #define MERET 100 typedef struct { int meret; // A verem aktuális mérete int elem[MERET]; // A verembe egész számokat tehetünk } Tverem; main() { Tverem verem; verem.meret = 0; //Írunk a verembe verem.elem[verem.meret++] = 5; verem.elem[verem.meret++] = 8; verem.elem[verem.meret++] = 12; //Olvasunk a veremből printf("%d\n", verem.elem[--verem.meret]); printf("%d\n", verem.elem[--verem.meret]); printf("%d\n", verem.elem[--verem.meret]); }
Decimális szám binárissá alakítása
#include <stdio.h> #define VEREMMERET 100 typedef struct { int meret; int elem[VEREMMERET]; } Tverem; main() { int szam; Tverem verem; verem.meret = 0; szam = 3; printf("Szam: "); scanf("%d", &szam); while(szam != 0) { //printf("%d", szam % 2); verem.elem[verem.meret++] = szam % 2; szam = szam /2; } int db = verem.meret; int i; for(i = 0; i < db; i++) printf("%d", verem.elem[--verem.meret]); printf("\n"); }
Decimális szám binárissá másként
#include <stdio.h> void dec2bin(long szam, char *binaris) { int i; char temp[50]; int k = 0, n = 0; while(szam != 0) { //verem.elem[verem.meret++] = szam % 2; temp[k++] = (szam % 2) + '0' ; szam = szam /2; } while (k >= 0) binaris[n++] = temp[--k]; binaris[n-1] = 0; } int main() { int szam; char eredmeny[30]; printf("Szam: "); scanf("%d", &szam); dec2bin(szam, eredmeny); printf("%s\n", eredmeny); }
Bitművelet számokon
#include <stdio.h> #include <math.h> #include <string.h> void dec2bin(long szam, char *binaris) { int i; char temp[50]; int k = 0, n = 0; while(szam != 0) { //verem.elem[verem.meret++] = szam % 2; temp[k++] = (szam % 2) + '0' ; szam = szam /2; } while (k >= 0) binaris[n++] = temp[--k]; binaris[n-1] = 0; } long bin2dec(char *szam) { int a, i, j; char ch; long osszeg = 0; j = strlen(szam) - 1; i = 0; while(i < strlen(szam)) { ch = szam[i]; if (ch == '1') osszeg = osszeg + pow(2, j); i++; j--; } return osszeg; } main() { char szam1[50], szam2[50], szam3[50]; long a, b, c; printf("Bináris szám 1 : "); scanf("%s", szam1); a = bin2dec(szam1); printf("Bináris szám 2 : "); scanf("%s", szam2); b = bin2dec(szam2); c = a | b; dec2bin(c, szam3); printf("Bináris szám 3 : %s\n", szam3); getchar(); // Enter elkapása getchar(); // Várakozás }
Várakozás egy billentyűnyomásra
Ha egy karaktert viszünk be a billentyűzeten a következő karaktert csak úgy kéri be a program, ha „elkapjuk” az Enter billentyűt.
#include <stdio.h> main() { char a; printf("Karakter: "); scanf("%d", &a); getchar(); //Enter elkapása getchar(); //Várakozás }
Három karakter bekérése
#include <stdio.h> main() { char a, b, c; printf("Karakter: "); scanf("%d", &a); getchar(); printf("Karakter: "); scanf("%d", &b); getchar(); printf("Karakter: "); scanf("%d", &c); }
Függvény, amely visszaadja egy sztring hosszát
/* Írjon függvényt, amely megszámolja egy karaktersorozat karaktereit. A függvény adja vissza a karakterek számát. Mentés: hossz */ #include <stdio.h> int sajat_strlen(char *str) { int szamlalo = 0; while(str[szamlalo] != '\0') szamlalo++; return szamlalo; } main() { int a = sajat_strlen("vmi"); printf("%d\n", a); getchar(); }
Jelszóbekérés
#include <stdio.h> #include <unistd.h> #include <crypt.h> main() { char *jelszo; jelszo = crypt(getpass("Jelszó: ")); puts(jelszo); }
Fordítás:
gcc -l crypt -o main main.c
A MinGW rendszerben alapértelmezetten nincs benne a getpass. A getpass viszont megtalálható a conio.sf.net conio2.h fejállományában.
Sztring darabolás
#include <stdlib.h> #include <string.h> int main() { char *tomb[5]; char *sor; int i; printf("Darabolás\n"); sor = (char*) malloc(50*sizeof(char)); for(i=0; i<5; i++) tomb[i] = (char*) malloc(50*sizeof(char)); strcpy(sor,"alma a fa alatt"); tomb[0] = strtok(sor," "); i = 0; while(tomb[i]!= NULL) { i++; tomb[i] = strtok(NULL, " "); //darabolunk } printf("%s\n", tomb[1]); return 0; }
Bitek forgatása (rotálás)
Bitenkénti rotálás és bináris formában kiírás.
- Program01.c
#include <stdio.h> #include <limits.h> unsigned int rotateLeft(unsigned int num, int shift) { return (num << shift) | (num >> (sizeof(num) * CHAR_BIT - shift)); } unsigned int rotateRight(unsigned int num, int shift) { return (num >> shift) | (num << (sizeof(num) * CHAR_BIT - shift)); } void printBin(unsigned n) { unsigned i; for (i = 1 << 31; i > 0; i = i / 2) { (n & i) ? printf("1") : printf("0"); } printf("\n"); } int main() { int num = 32; printBin(num); num = rotateRight(num, 6); printBin(num); return 0; }
Olvasás állományból while fejrészében
while(fscanf(f, "%lf", &a)>0) { }
oktatas/programozas/c/c_peldaprogram.txt · Utolsó módosítás: 2020/05/12 20:34 szerkesztette: admin