Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /** @brief Program symuluje dodawanie dwóch liczb "tabelkowo"
- * to jest wersja, gdzie program myśli jak człowiek, czyli zaczynami od najmniej znaczących liczb z samej prawej
- * (na samym końcu) i przesuwamy się do lewej dodając ewentualnae przeniesienie\
- * gdyby coś było niejasne to pisz
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #define TABSIZE 50
- int i_rand(int min, int max); //deklaracja funkcji
- int main(void){
- int cyfryPierwszaLiczba[TABSIZE] = {0};
- int cyfryDrugaLiczba[TABSIZE] = {0};
- int cyfrySuma[TABSIZE+1] = {0};
- int przeniesienie = 0;
- srand(time(0));
- //jak sobie tworzymy tutaj to bez znaczenia czy od poczatku czy od konca bo i tak losowe
- printf("\n ");
- for (int i = 0; i < TABSIZE; ++i) {
- cyfryPierwszaLiczba[i] = i_rand(0, 9);
- printf("%d", cyfryPierwszaLiczba[i]);
- }
- printf("\n+");
- for (int i = 0; i < TABSIZE; ++i) {
- cyfryDrugaLiczba[i] = i_rand(0, 9);
- printf("%d", cyfryDrugaLiczba[i]);
- }
- //teraz dodajemy sobie od prawej do lewej, srodek analogiczny ale iterujemy inaczej, ostatnia cyfra w sumie jest jakby przesunieta w prawo o jeden
- //bo tablica z suma ma wiecej elementow, nie musimy juz int i dawac na zewnatrz bo i tak skonczymy na zerowym indeksie (dla tablic z cyframi)
- //oraz pierwszym indeksie (bo o jeden w prawo) dla tablicy z suma, to wystarczy na koncu tylko dac przeniesienie w ew zeroweindeks sumy
- for (int i = TABSIZE -1; i >= 0; --i ) { //wazne by zmniejszac i
- cyfrySuma[i+1] = przeniesienie + cyfryPierwszaLiczba[i] + cyfryDrugaLiczba[i];
- if (cyfrySuma[i+1] > 9) {
- przeniesienie = 1;
- cyfrySuma[i+1] -= 10;
- }
- else
- przeniesienie = 0;
- }
- cyfrySuma[0] = przeniesienie; //dodajemy na poczatek (najbardziej znaczaca cyfra) przeniesienie, o ile zostalo
- //wazne jest to ze przeniesienie deklrarowane jest poza petla, wiec wartosc ta przezywa razem z petla
- printf("\n=============\n");
- for (int i = 0; i <= TABSIZE; ++i) {
- printf("%d", cyfrySuma[i]);
- }
- printf("\n");
- return 0;
- }
- //definicja funkcji
- int i_rand(int min, int max){
- return rand() % (max-min+1) + min;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement