Jump to content

Recommended Posts

Os habitantes do planeta Uno possuem um terrível problema de detecção de números com mais de um algarismo, de modo que, para tudo que vão fazer, transformam qualquer valor inteiro em um número de um algarismo, realizando somas sucessivas do número até o mesmo ser reduzido a um algarismo. Por exemplo, o número 999999999991, no planeta Uno, soma-se todos os algarismos, resultando em 9+9+9+9+9+9+9+9+9+9+9+1 = 100. Como o número 100 tem mais de um algarismo, o processo se repete, resultando em 1+0+0 = 1

Uma das grandes dificuldades que os habitantes possuem está em comparar dois números e verificar qual deles é o maior, segundo as regras do planeta.

Escreva um programa que, dados dois números inteiros, identifique qual deles é o maior número de um algarismo.

Entrada

Haverá diversos casos de teste. Cada caso de teste inicia com dois inteiros N e M (0 ≤ N ≤ 10100, 0 ≤ M ≤ 10100), indicando os dois números a serem comparados.

O último caso de teste é indicado quando N = M = 0, sendo que este caso não deverá ser processado.

Saída

Para cada caso de teste, imprima uma linha, contendo um inteiro, indicando 1 se o primeiro número for o maior de um algarismo, 2 se o segundo número for o maior de um algarismo ou 0 se ambos os números possuírem o mesmo valor de um algarismo.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Eu sou iniciante em programação e já refiz varias vezes esse exercício, mas não da certo. Se puderem ajudar, agradeço desde já!

Share this post


Link to post
Share on other sites

Poste o que tentou, o objetivo do fórum é orientar =D

 

Att,

Wilber quitZAUMMM

Share this post


Link to post
Share on other sites

Para realizar a soma, basta você pegar o número e ir realizando o modulo dele por 10 e pegar esse resultado e ir somando:

Ex: 999 MOD 10 = 9, pegue esse 9 e some, depois realize a divisão do número 999 por 10, ficando 99 e realize o mesmo procedimento até que esse número seja menor que 10.

Share this post


Link to post
Share on other sites
Em 10/05/2017 at 11:04, rodrigomarden disse:

Para realizar a soma, basta você pegar o número e ir realizando o modulo dele por 10 e pegar esse resultado e ir somando:

Ex: 999 MOD 10 = 9, pegue esse 9 e some, depois realize a divisão do número 999 por 10, ficando 99 e realize o mesmo procedimento até que esse número seja menor que 10.

 

Exatamente. Dividindo um número pela sua base, o quociente dessa divisão novamente por essa mesma base, fazendo assim por diante até que o quociente seja menor do que essa base e pegando-se esse último quociente juntamente com todos os restos das divisões anteriores obtém-se todos os algarismo individuais de um número:

int vetor[50];/*Vetor de algarismos. Cada posicao desse vetor guarda um dos algarismos 
do numero original*/

int i=0;

void limpaalgarismos(){//serve para limpar o vetor de algarismos
  i=0;
}

void algarismos(int num){/*Funcao que armazena somente 1 algarismo do numero por vez no
vetor de algarismos*/  
  int quociente,resto;
  if(num<10)
    vetor[i]=num;
  else{
    quociente=num/10;
    resto=num%10;
    vetor[i]=resto;
    i++;
    algarismos(quociente);    
  }
}

int umalgarismo(){
  int j,soma=0;
  for(j=i;j>=0;j--)
    soma=soma+vetor[j];
  while(soma>=10){
    limpaalgarismos();    
    algarismos(soma);
    soma=umalgarismo();
  }
  return soma;  
}

int main(){  
  int N=1,M=1;
  for(;;){
    scanf("%d",&N);  
    scanf("%d",&M);
    if((N==0)&&(M==0))
      return;  
    algarismos(N);
    N=umalgarismo();
    limpaalgarismos();
    algarismos(M);
    M=umalgarismo();
    limpaalgarismos();
    if(N>M)
      printf("1");
    else if(N<M)
      printf("2");
    else
      printf("0");
    printf("\n");
  }    
}

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By MikeDaUmbrella
      Olá, boa noite.
      Alguém aqui pode me ajudar em fazer uma function ou um codigo simples para gerar e checar senhas usando o bcrypt.
      Agradeço.
      Um código para GERAR onde o resultado sai para uma varável (assim posso fazer para salvar no banco de dados)
      Um código para pegar via POST a senha e checar se é igual a senha salva do bcrypt.
    • By IgorExtreme
      Olá estou com problema nesta questão: "Escreva um programa que leia e armazene em um vetor os dados de 30 pessoas. Estes dados são o nome da pessoa, sua idade, e os nomes completos do pai e da mãe. A seguir, o programa deve identificar (e mostrar os índices) das pessoas que estão relacionadas por um parentesco avô-neto e irmão-irmão. No caso dos irmãos, deve ser informado ainda qual é o mais novo dos dois." O código é esse
      #include<stdio.h> #include<string.h> #define NUM 4 struct pessoa { char nome[20]; char mae[20]; char pai[20]; int idade; }; main() { struct pessoa vetorPessoas[NUM]; int i; printf("Digite os dados de %d pessoas:\n", NUM); for (i = 0; i < NUM; i++) { printf("Digite o nome da pessoa %d: ", i); fflush(stdin); gets(vetorPessoas[i].nome); printf("%s\n", vetorPessoas[i].nome); printf("Digite o nome da mae da pessoa %d: ", i); fflush(stdin); gets(vetorPessoas[i].mae); printf("%s\n", vetorPessoas[i].mae); printf("Digite o nome do pai da pessoa %d: ", i); fflush(stdin); gets(vetorPessoas[i].pai); printf("%s\n", vetorPessoas[i].pai); printf("Digite a idade da pessoa %d: ", i); fflush(stdin); scanf("%d", &vetorPessoas[i].idade); printf("%d\n", vetorPessoas[i].idade); if(!strcmp(vetorPessoas[0].pai, vetorPessoas[1].nome)){ printf("%s e avo de %s\n", vetorPessoas[1].pai, vetorPessoas[0].nome); } if(!strcmp(vetorPessoas[2].pai, vetorPessoas[3].nome)){ printf("%s e avo de %s\n", vetorPessoas[3].pai, vetorPessoas[2].nome); } } /*if(!strcmp(vetorPessoas[i].pai, vetorPessoas[i].nome)){ printf("%s e pai de %s\n", vetorPessoas[i].pai, vetorPessoas[i].pai); }*/ if(!strcmp(vetorPessoas[0].pai, vetorPessoas[1].pai)){ printf("Eles sao irmaos\n"); if(vetorPessoas[0].idade > vetorPessoas[1].idade){ printf("%s mais velho\n", vetorPessoas[0].idade); } else{ printf("%s e mais novo\n", vetorPessoas[1].idade); } } if(!strcmp(vetorPessoas[2].pai, vetorPessoas[3].pai)){ printf("Eles sao irmaos\n"); if(vetorPessoas[2].idade > vetorPessoas[3].idade){ printf("%s mais velho\n", vetorPessoas[2].idade); } else{ printf("%s e mais novo\n", vetorPessoas[3].idade); } } } O problema é que ele mostra quase tudo menos a parte se tal irmão é mais velho que o outro
    • By ricardo Oliv3ira
      Um cano cilíndrico de raio R1 vai ser usado para guardar outros dois canos de raio R2 e R3. Caso os dois últimos canos caibam dentro do primeiro, seu programa deve imprimir “Coube”. Caso contrário imprima “Não coube”.
      #include <stdio.h> int main(void) { float R1,R2,R3; printf("digite o 1º tamanho:"); scanf("%f",R1); printf("digite o 2º tamanho"); scanf("%f",R2); printf("digite o 3º tamanho"); scanf("%f",R3); if(R2,R3<R1){ printf("Coube"); } else(R2,R3>R1){ printf("Não Coube"); } return 0; }  
    • By Hodol
      Boa tarde, estou começando a programar e ainda não sei qual linguagem de programação eu devo iniciar. Me de uma luz, Obrigado!
    • By mtwzim
      Olá pessoal, recentemente eu venho desenvolvendo um app para pagamentos/cartões pré-pago, e estou procurando alguma empresa/api que forneça um serviço apara emissão de cartões pré-pagos (e que seja possível customizar os cartões: por a minha própria logo, etc), alguém pode me informar alguma empresa que faz isso aqui no brasil? Já encontrei soluções como stripe mas eles não oferecem esse serviço para o brasil?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.