-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlab6-2-odejmowanie.c
139 lines (135 loc) · 2.93 KB
/
lab6-2-odejmowanie.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include <stdio.h>
main(void) {
int a=0,a1=0,b=0,c=0,temp,temp1,temp2,complete=0;
int tab[1000]={0},tab1[1000]={0},wynik[1000]={0},temptab[1000];
/*Podaje liczby jako znaki ASCII po czym rzutuje je i wartosci redukuje do normalnych liczb calkowitych*/
char znak,znak2;
printf("Podaj Liczbe 1");
znak=getchar();
//Podanie pierwszej liczby
while((int)znak>=48 && (int)znak<=57){
temptab[a]=(int)znak-48;
znak=getchar();
a++;
}
znak=0;
a--;
//Koniec podawania 1 liczby
//Przepisywanie tabeli w odwrotnej kolejnosci do tab
temp2=0;
for(temp1=a;temp1>=0;temp1--){
tab[temp2]=temptab[temp1];
temp2++;
}
//Pierwsza tabela odwrocona
//Podanie 2 liczby
printf("Podaj Liczbe 2");
znak=getchar();
while((int)znak>=48 && (int)znak<=57){
temptab[a1]=(int)znak-48;
znak=getchar();
a1++;
}
a1--;
//Koniec podawania 2 liczby
//Przepisywanie tabeli w odwrotnej kolejnosci do tab1
temp2=0;
for(temp1=a1;temp1>=0;temp1--){
tab1[temp2]=temptab[temp1];
temp2++;
}
//Druga tabela odwrocona
//DO USUNIECIA
//Print tabel w naturalnej ich kolejnosci
printf("Tabela 1\n");
for(temp=0;temp<=a;temp++){
printf("%i ",tab[temp]);
}
printf("\n");
printf("Tabela 2\n");
for(temp=0;temp<=a1;temp++){
printf("%i ",tab1[temp]);
}
printf("\n");
//Koniec printu
//DO USUNIECIA
//Porownanie leksykograficzne tabel - ktora wieksza liczba oraz
//Przepisanie wiekszej liczby do tabeli wynikowej
temp=0;
printf("aaa kotki dwa\n");
while(complete==0){
if(a>a1 || temp==1){
printf("Tabela pierwsza - wieksza/rowna\n\n");
for(temp1=0;temp1<=a;temp1++){
wynik[temp1]=tab[temp1];
}
complete=1;
}
else if(a<a1 || temp==2){
printf("Tabela druga - wieksza\n\n");
for(temp1=0;temp1<=a1;temp1++){
wynik[temp1]=tab1[temp1];
}
complete=1;
temp=2;
}
//Porownanie leksykograficzne jezeli ilosc podanych liczb jest taka sama
else if(a==a1){
for(temp1=0;temp1<=a;temp1++){
if(tab[temp1]>=tab1[temp1]){
temp=1;
}
else if(tab[temp1]<tab1[temp1]){
temp=2;
}
}
}
}
//DZIALANIE ODEJMOWANIA
complete=0;
while(complete==0){
if(a>a1 || temp==1){
for(temp1=0;temp1<=a;temp1++){
wynik[temp1]=wynik[temp1]-tab1[temp1];
if(wynik[temp1]<0){
wynik[temp1+1]=wynik[temp1+1]-1;
wynik[temp1]=wynik[temp1]+10;
}
}
complete=1;
}
else if(a<a1 || temp==2){
for(temp1=0;temp1<=a1;temp1++){
wynik[temp1]=wynik[temp1]-tab[temp1];
if(wynik[temp1]<0){
wynik[temp1+1]=wynik[temp1+1]-1;
wynik[temp1]=wynik[temp1]+10;
}
}
complete=1;
}
}
//Koniec dzialania odejmowania
//Drukowanie wyniku
printf("\n\n\nwynik\n");
if(temp==2){
printf("-");
}
for(temp2=0;wynik[temp2]==0;temp2++);
complete=0;
while(complete==0){
if(a>a1 || temp==1){
for(temp1=temp2;temp1<=a;temp1++){
printf("%i ",wynik[temp1]);
}
complete=1;
}
else if(a<a1 || temp==2){
for(temp1=temp2;temp1<=a1;temp1++){
printf("%i ",wynik[temp1]);
}
}
complete=1;
}
//KONIEC!
}