Um exercício de strings bem interessante chamado "Zero vale zero" foi resolvido e aqui estou para postar a solução! Na verdade fiz uma solução em C e duas em C++, sendo uma delas com a mesma estrutura da solução feita em C. Confira na sequência!
Plataforma: URI (BEECROWD)
Problema: 1871
Enunciado:
Um dia o Prof. Humberto José Roberto fez o seguinte questionamento: Se o zero a esquerda de um número não tem valor algum, por que teria em outras posições de um número? Analisando da seguinte forma, ele pede sua ajuda para, ao somar dois valores inteiros, que o resultado seja exibido segundo o raciocínio dele, ou seja, sem os Zeros. Por exemplo, ao somar 15 + 5, o resultado seria 20, mas com esta nova ideia, o novo resultado seria 2, e, ao somar 99 + 6, o resultado seria 105, mas com esta nova ideia, o novo resultado seria 15. Escreva um programa que, dado dois números inteiros, sem o algarismo zero, some os mesmos e, caso o resultado tenha algum algarismo zero, que os retire antes de exibir.
Linguagens: C e C++
Solução:
Código em C:
A estratégia aqui foi ler os valores, somá-los e salvar esta soma em forma de string. Depois disso, basta percorrer a string como um array à procura do caractere '0'. Caso o caractere seja diferente de '0', imprime.
#include <stdio.h> int main() { int n, m, resultado, indice; char *resposta = (char *) malloc(sizeof(char) * 11); while (1) { scanf("%i %i ", &n, &m); if (n == 0 && m == 0) exit(0); resultado = n + m; snprintf(resposta, 11, "%d", resultado); indice = 0; while (resposta[indice] != '\0') { if (resposta[indice] != '0') printf("%c", resposta[indice]); indice++; } printf("\n"); } return 0; }
#include <iostream> using namespace std; int main() { int n, m, resultado, indice; string resposta; while (1) { cin >> n >> m; if (n == 0 && m == 0) exit(0); resultado = n + m; resposta = to_string(resultado); indice = 0; while (resposta[indice] != '\0') { if (resposta[indice] != '0') cout << resposta[indice]; indice++; } cout << endl; } return 0; }
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 | #include <iostream> #include <vector> using namespace std; int main() { long a, b; long sum; int digit; cin >> a >> b; while(a!=0 or b!=0){ sum = a + b; vector<int> numFinal; while(sum > 0){ digit = sum%10; //cout << "Digito" << digit << endl; if(digit!=0){ numFinal.push_back(digit); } sum = sum/10; } for(int i = numFinal.size()-1;i>=0;i--){ cout << numFinal[i]; } cout << endl; cin >> a >> b; } return 0; } |
Nenhum comentário:
Postar um comentário