Advertisement
Guest User

Untitled

a guest
Dec 11th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.15 KB | None | 0 0
  1. /** @brief Program symuluje dodawanie dwóch liczb "tabelkowo"
  2.  * to jest wersja, gdzie program myśli jak człowiek, czyli zaczynami od najmniej znaczących liczb z samej prawej
  3.  * (na samym końcu) i przesuwamy się do lewej dodając ewentualnae przeniesienie\
  4.  * gdyby coś było niejasne to pisz
  5. */
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <time.h>
  9.  
  10. #define TABSIZE 50
  11.  
  12.  
  13. int i_rand(int min, int max); //deklaracja funkcji
  14.  
  15. int main(void){
  16.   int cyfryPierwszaLiczba[TABSIZE] = {0};
  17.   int cyfryDrugaLiczba[TABSIZE] = {0};
  18.   int cyfrySuma[TABSIZE+1] = {0};
  19.   int przeniesienie = 0;
  20.   srand(time(0));
  21.  
  22.  //jak sobie tworzymy tutaj to bez znaczenia czy od poczatku czy od konca bo i tak losowe
  23.   printf("\n ");
  24.   for (int i = 0; i < TABSIZE; ++i) {
  25.     cyfryPierwszaLiczba[i] = i_rand(0, 9);
  26.     printf("%d", cyfryPierwszaLiczba[i]);
  27.   }
  28.   printf("\n+");
  29.   for (int i = 0; i < TABSIZE; ++i) {
  30.     cyfryDrugaLiczba[i] = i_rand(0, 9);
  31.     printf("%d", cyfryDrugaLiczba[i]);
  32.   }
  33.  
  34.  
  35.  
  36.   //teraz dodajemy sobie od prawej do lewej, srodek analogiczny ale iterujemy inaczej, ostatnia cyfra w sumie jest jakby przesunieta w prawo o jeden
  37.   //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)
  38.   //oraz pierwszym indeksie (bo o jeden w prawo) dla tablicy  z suma, to wystarczy na koncu tylko dac przeniesienie w ew zeroweindeks sumy
  39.   for (int i = TABSIZE -1; i >= 0; --i ) { //wazne by zmniejszac i
  40.     cyfrySuma[i+1] = przeniesienie + cyfryPierwszaLiczba[i] + cyfryDrugaLiczba[i];
  41.  
  42.     if (cyfrySuma[i+1] > 9) {
  43.       przeniesienie = 1;
  44.       cyfrySuma[i+1] -= 10;
  45.     }
  46.     else
  47.       przeniesienie = 0;
  48.   }
  49.   cyfrySuma[0] = przeniesienie; //dodajemy na poczatek (najbardziej znaczaca cyfra) przeniesienie, o ile zostalo
  50.   //wazne jest to ze przeniesienie deklrarowane jest poza petla, wiec wartosc ta przezywa razem z petla
  51.  
  52.   printf("\n=============\n");
  53.   for (int i = 0; i <= TABSIZE; ++i) {
  54.     printf("%d", cyfrySuma[i]);
  55.   }
  56.     printf("\n");
  57.  
  58.   return 0;
  59. }
  60.  
  61.  
  62. //definicja funkcji
  63. int i_rand(int min, int max){
  64.     return rand() % (max-min+1) + min;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement