Liczba z napisu i napis z liczby
Wskaźniki i napisy w tablicach char - Podstawy C++ (C++)
Cyfra w napisie to znak: '7' ma kod 55, a '0' kod 48, więc '7' - '0' = 7. toNumber składa liczbę z cyfr (razy 10 i dodaj cyfrę). toText robi odwrotnie: bierze cyfry od końca resztą z dzielenia przez 10 i na koniec odwraca napis.
#include <iostream>
#include <cstring>
using namespace std;
// dlugosc napisu: liczymy znaki do '\0'
int length(const char *s) {
int n = 0;
while (s[n] != '\0') {
n++;
}
return n;
}
// odwracanie w miejscu: zamiana pierwszego z ostatnim, drugiego z przedostatnim...
void reverse(char *s) {
int n = length(s);
for (int i = 0; i < n / 2; i++) {
char temp = s[i];
s[i] = s[n - 1 - i];
s[n - 1 - i] = temp;
}
}
// napis z cyframi -> liczba: kazda cyfra to znak, '7' - '0' = 7
int toNumber(const char *s) {
int value = 0;
for (int i = 0; s[i] != '\0'; i++) {
value = value * 10 + (s[i] - '0');
}
return value;
}
// liczba -> napis: cyfry od konca (reszta z dzielenia przez 10), potem odwrocenie
void toText(int n, char *out) {
int i = 0;
do {
out[i] = '0' + n % 10;
n = n / 10;
i++;
} while (n > 0);
out[i] = '\0';
reverse(out);
}
int main() {
char year[] = "2026";
int next = toNumber(year) + 1;
cout << next << endl;
char text[12];
toText(next * 3, text);
cout << text << " ma " << length(text) << " cyfry" << endl;
return 0;
}Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Podstawy C++·Zaloguj się, aby zapisać postęp na koncie.