Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define TamMax 2021
- using namespace std;
- int algarismos(double i){
- int ret=0;
- while (i>1){
- ret++;
- i /=10;
- }
- return ret;
- }
- void somar(int *c, int *a, int *b, int tamA, int tamB){
- int tmnh;
- tmnh = (tamA>tamB)? tamA:tamB;
- for(int i = (tmnh-1); i>=0; i--){
- c[i]=a[i]+b[i];
- //printf(c[i]<<" ";
- }
- printf("\n");
- for(int i = 0; i<tmnh; i++){
- c[i+1]=c[i+1]+(c[i]/10);
- c[i]= c[i]%10;
- //printf(c[i]<<" ";
- }
- }
- void artribui(int val, int *num){
- int dig = algarismos(val);
- for(int i = dig; i>=0 ; i--){ //aqui acontece as
- num[dig-i] = val%10; //as aribuições de
- //de valores
- val = val/10;
- }
- }
- void imprimeNumerao(int *num, int tamNum){
- for(int i = tamNum; i>=0;i--){
- printf("%d", num[i]);
- }
- }
- int criaNumerao(long int n, int *num){
- int dig = algarismos(n);
- for(int i = dig; i>=0 ; i--){ //aqui acontece as
- num[dig-i] = n%10; //as aribuições de
- //de valores
- n = n/10;
- }
- printf("\n");
- for(int i = dig; i>=0; i--){
- printf("%d ", num[i]);
- }
- printf("\n");
- return(dig);
- }
- int soma(int *a, int tamA, int *b, int tamB){
- int tmnh;
- tmnh = (tamA>tamB)? tamA:tamB;
- for(int i = (tmnh-1); i>=0; i--){
- a[i]=a[i]+b[i];
- //printf(c[i]<<" ";
- }
- printf("\n");
- for(int i = 0; i<tmnh; i++){
- a[i+1]=a[i+1]+(a[i]/10);
- a[i]= a[i]%10;
- //printf(c[i]<<" ";
- }
- return(tmnh);
- }
- int main(){
- int a [TamMax];
- int b [TamMax];
- int c [TamMax];
- int tamA, tamB, decisao;
- long int na, nb;
- printf("digite 0 para soma normal e 1 para soma natural: ");
- scanf("%d", &decisao);
- if(decisao == 0){
- printf("digite o primeiro numero: ");
- scanf("%d", &na);
- printf("digite o segundo numero: ");
- scanf("%d", &nb);
- tamA = criaNumerao(na, a);
- tamB = criaNumerao(nb, b);
- printf("tamanho do primeiro numero: %d \n",tamA);
- printf("tamanho do segundo numero: %d",tamB);
- printf("\n");
- printf("\n");
- int tmn = soma(a,tamA,b,tamB);
- printf("tamanho do resultado: %d \n",tmn);
- if(a[tmn]==0){
- imprimeNumerao(a, (tmn-1));
- }
- if(a[tmn] > 0){
- imprimeNumerao(a, tmn);
- }
- }
- if(decisao == 1){
- printf("digite o numero: ");
- scanf("%d", &na);
- tamA = criaNumerao(na, a);
- long int aux;
- int tamres;
- for(int i = 0; i<na; i++){
- aux = criaNumerao(i, b);
- tamres = soma(a, tamA, b, aux);
- }
- for(int i = 0; i <tamres; i++){
- c[tamres-i] = a[tamres-i];
- }
- imprimeNumerao(c, tamres);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment