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.