Data z jednej liczby: dzień i miesiąc przez wskaźniki

Wskaźniki i napisy w tablicach char - Podstawy C++ (C++)

W temacie świąt data była jedną liczbą miesiąc * 100 + dzień. splitDate rozbija ją na dwie zmienne wywołującego: dzień i miesiąc.

#include <iostream>
using namespace std;

// funkcja dostaje ADRES zmiennej, wiec moze ja zmienic
void addPoint(int *score) {
  *score = *score + 1;
}

// zamiana dwoch zmiennych: bez wskaznikow funkcja zmienilaby tylko kopie
void swap(int *a, int *b) {
  int temp = *a;
  *a = *b;
  *b = temp;
}

// dwa wyniki naraz: najmniejszy i najwiekszy element trafiaja pod podane adresy
void minMax(int t[], int n, int *low, int *high) {
  *low = t[0];
  *high = t[0];
  for (int i = 1; i < n; i++) {
    if (t[i] < *low) {
      *low = t[i];
    }
    if (t[i] > *high) {
      *high = t[i];
    }
  }
}

// data z tematu swiat (miesiac * 100 + dzien) rozbita na dwie zmienne
void splitDate(int code, int *day, int *month) {
  *day = code % 100;
  *month = code / 100;
}

int main() {
  int x = 5;
  int *p = &x; // p przechowuje adres zmiennej x
  cout << "x = " << x << endl;
  *p = 7; // zapis pod ten adres zmienia x
  cout << "x = " << x << ", *p = " << *p << endl;

  int points = 0;
  addPoint(&points);
  addPoint(&points);
  cout << "punkty = " << points << endl;

  int a = 3, b = 8;
  swap(&a, &b);
  cout << "a = " << a << ", b = " << b << endl;

  int t[5] = {4, 9, 1, 7, 3};
  int low, high;
  minMax(t, 5, &low, &high);
  cout << "min = " << low << ", max = " << high << endl;

  int day, month;
  splitDate(405, &day, &month);
  cout << "Wielkanoc 2026: " << day << "." << (month < 10 ? "0" : "") << month << 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.