Algorithmen
Primzahlen
Finde heraus ob eine Zahl eine Primzahl ist.
int number = 45; // <= Beispielzahl
int isPrime = 0;
int i = 2;
while (i < number / 2) {
if (number % i == 0) {
isPrime = 1;
}
i++;
}
if (isPrime == 0) {
/* number ist Primzahl */
} else {
/* number ist keine Primzahl */
}
Runde eine Kommazahl
Runde eine Kommazahl auf n Stellen.
double number = 3.1455; // <= Beispielzahl
int n = 2; // <= auf 2 Stellen runden
number *= pow(10, n); // 314.55
number += 0.5; // 315.05
number = (int) number; // 315
number /= pow(10, n); // 3.15
Jede Stelle in einer Zahl besuchen
int number = 651123;
while (number > 0) {
// die aktuelle Stelle: `number % 10`
number /= 10;
}
Felder
Jedes Feldelement besuchen
#define SIZE 5
int numbers[SIZE] = {1, 2, 3, 4, 5};
for (int i = 0; i < SIZE; i++) {
// Aktuelle Stelle: numbers[i]
}
Feldinhalt um links verschieben
#define SIZE 5
int numbers[SIZE] = {1, 2, 3, 4, 5};
int firstElement = numbers[0]; // {1, 2, 3, 4, 5} -> firstElement = 1
for (int i = 0; i < SIZE; i++) {
numbers[i] = numbers[i + 1]; // {1, 2, 3, 4, 5} -> {2, 3, 4, 5, _}
}
numbers[SIZE - 1] = firstElement; // {2, 3, 4, 5, _} -> {2, 3, 4, 5, firstElement} -> {2, 3, 4, 5, 1}
Feldinhalt um rechts verschieben
#define SIZE 5
int numbers[SIZE] = {1, 2, 3, 4, 5};
int lastElement = numbers[SIZE - 1]; // {1, 2, 3, 4, 5} -> lastElement = 5
for (int i = SIZE - 1; i > 0; i--) {
numbers[i] = numbers[i - 1]; // {_, 1, 2, 3, 4}
}
numbers[0] = lastElement; // {_, 1, 2, 3, 4} -> {lastElement, 1, 2, 3, 4} -> {5, 1, 2, 3, 4}
n Elemente mit n + 1 Elemente austauschen
#define SIZE 5
int numbers[SIZE] = {1, 2, 3, 4, 5};
int n = 2;
for (int i = n - 1; i < SIZE; i += n) {
int tmp = numbers[i];
numbers[i] = numbers[i + 1];
numbers[i + 1] = tmp;
}
Elemente ausgeben + neue Zeile bei n Elemente
#define SIZE 5
int numbers[SIZE] = {1, 2, 3, 4, 5};
int n = 3; // neue Zeile bei jedem dritten Element
for (int i = 0; i < SIZE; i++) {
if (i % n == 0 && i != 0) {
printf("\n");
}
printf("%d", numbers[i]);
}