Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void BigInt_sudetiSkaicius (BigInt *demuo1, const BigInt *demuo2) {
- int sumosZenklas = 0;
- if (demuo1->zenklas == 1 && demuo2->zenklas == 1) {
- sumosZenklas = 1;
- } else if (demuo1->zenklas == 1 && demuo2->zenklas == 0) {
- sumosZenklas = 1;
- BigInt_atimtiSkaicius(demuo1, demuo2);
- return;
- } else if (demuo1->zenklas == 0 && demuo2->zenklas == 1) {
- sumosZenklas = 0;
- BigInt_atimtiSkaicius(demuo1, demuo2);
- return;
- }
- BigInt *suma = malloc(sizeof(BigInt));
- BigInt *didesnisSkaicius = malloc(sizeof(BigInt));
- BigInt *mazesnisSkaicius = malloc(sizeof(BigInt));
- if (BigInt_palygintiSkaicius(demuo1, demuo2) == 1) {
- didesnisSkaicius->skaicius = malloc(sizeof(char)*demuo2->ilgis);
- BigInt_kopijuotiSkaiciu(didesnisSkaicius, demuo2);
- mazesnisSkaicius->skaicius = malloc(sizeof(char)*demuo1->ilgis);
- BigInt_kopijuotiSkaiciu(mazesnisSkaicius, demuo1);
- suma->skaicius = calloc(demuo2->ilgis+1, sizeof(char));
- suma->ilgis = demuo2->ilgis+1;
- } else {
- didesnisSkaicius->skaicius = malloc(sizeof(char)*demuo1->ilgis);
- BigInt_kopijuotiSkaiciu(didesnisSkaicius, demuo1);
- mazesnisSkaicius->skaicius = malloc(sizeof(char)*demuo2->ilgis);
- BigInt_kopijuotiSkaiciu(mazesnisSkaicius, demuo2);
- suma->skaicius = calloc(demuo1->ilgis+1, sizeof(char));
- suma->ilgis = demuo1->ilgis+1;
- }
- int pernesimas = 0;
- int indeksasDS = didesnisSkaicius->ilgis-1;
- int indeksasMS = mazesnisSkaicius->ilgis-1;
- BigInt_isvestiSkaiciu(suma);
- for (int i = suma->ilgis-1; i >= 0; i--) {
- if (pernesimas == 1) {
- suma->skaicius[i] += 1;
- pernesimas = 0;
- }
- if (indeksasDS >= 0 && indeksasMS >= 0) {
- suma->skaicius[i] += didesnisSkaicius->skaicius[indeksasDS] + mazesnisSkaicius->skaicius[indeksasMS];
- } else if (indeksasDS >= 0) {
- suma->skaicius[i] += didesnisSkaicius->skaicius[indeksasDS];
- }
- if (suma->skaicius[i] > 9) {
- pernesimas = 1;
- suma->skaicius[i] %= 10;
- }
- indeksasDS--;
- indeksasMS--;
- }
- BigInt_sunaikintiSkaiciu(&didesnisSkaicius);
- BigInt_sunaikintiSkaiciu(&mazesnisSkaicius);
- demuo1->skaicius = realloc(demuo1->skaicius, suma->ilgis*sizeof(char));
- BigInt_kopijuotiSkaiciu(demuo1, suma);
- BigInt_sunaikintiSkaiciu(&suma);
- BigInt_pastumtiSkaiciu(&demuo1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement