Ir ao conteúdo

Posts recomendados

Postado

João tem um irmão mais novo, José, que começou a ir à escola e já está tendo problemas com números.
Para ajudá-lo a pegar o jeito com a escala numérica, sua professora escreve dois números de três dígitos
e pede a José para comparar esses números. Mas em vez de interpretá-los com o dígito mais significativo
à esquerda, ele deve interpretá-lo com o dígito mais significativo à direita. Ele tem que dizer à professora
qual o maior dos dois números. Escreva um programa que irá verificar as respostas de José.

Entrada:

A entrada conterá um inteiro T , o número de casos de testes, e, para cada caso de teste, uma única linha
com dois números de três dígitos, A e B, os quais não serão iguais e não conterão zeros.
 

Saída:

A saída deve conter, numa linha para cada caso de teste, com o maior dos números na entrada, comparados como descrito no enunciado da tarefa. O número deve ser escrito invertido, para mostrar a José como
ele deve lê-lo.
 

Exemplo:

 

Entrada:

 

3
734 893
221 231
839 237

 

Saída:

437
132
938

 

Código

#include <stdio.h>



int main(){



    int t, A, B, Ainverso, Binverso;



    scanf("%d", &t);



    while (t--)

    {

        scanf("%d %d", &A, &B);

        if (>= 0) {

            do{

                Ainverso = A % 10;

                A /= 10;

            } while (!= 0);

            printf("\n");

        }

        else if(>= 0){

            do{

                Binverso = B % 10;

                A /= 10;

            } while (!= 0);

            printf("\n");

        }

        

        if(Ainverso > Binverso){

            printf("%d", Ainverso);

        }

        else

        {

            printf("%d", Binverso);

        }

        

    }

}

 

Postado

Olá

 

Acho que não deve perder seu tempo lendo os números ou testando para os 3. Não acrescenta nada. Resolva antes o problema em si. já tem alguns exemplos. Faça isso primeiro. Inverter os números é trivial: o primeiro dígito mais o segundo vezes 10 mais o terceiro vezes 100. Não precisa ler como números, pode ler um a um como letra mesmo. Mas se leu como número:

int     i = 734;                // exemplo
int     digito1 = i/100;        // 7
int 	digito2 = i%100 / 10;	// 34 / 10 = 3
int     digito3 = i % 10;       // 4
// c = a % b faz c = resto da divisao de a por b (módulo) do ensino fundamental

Exemplos para o testa já estão lá :D 

/*
734 893
221 231
839 237
 */

Teste

  • Amei 1
Postado

@arfneto Assim?

#include <stdio.h>
 
int main(){
 
    int t, A, B, Ainverso, Binverso, iA, iB, digito1A, digito2A, digito3A;
 
    scanf("%d", &t);
 
    while (t--)
    {
        scanf("%d %d", &A, &B);
        iA = A;
        digito1A = iA / 100;
        digito2A = iA % 100 / 10;
        digito3A = iA % 10;
        printf("%d%d%d", digito3A, digito2A, digito1A);
    }
}

Postado

não entendi a dúvida. Inverta os números e compare usando um if

 

Sobre o processo veja essa saída

porque a gente desconfia...
A 734 novoA 7
A 734 novoA 3
A 734 novoA 4
agora que deu certo...
A 734 novoA 437

Desse programa

#include "stdio.h"
int main(int argc, char** argv)
{
    int        A;
    int        novoA;
    A = 734;
    printf("porque a gente desconfia...\n");
    novoA = A / 100;
    printf("A %d novoA %d\n", A, novoA);
    novoA = A % 100 / 10;
    printf("A %d novoA %d\n", A, novoA);
    novoA = A % 10;
    printf("A %d novoA %d\n", A, novoA);
    printf("agora que deu certo...\n");
    novoA = (A % 10) * 100 + (A % 100 / 10) * 10 + A / 100;
    printf("A %d novoA %d\n", A, novoA);
    return 0;
}

 

adicionado 3 minutos depois
2 minutos atrás, arfneto disse:

novoA = (A % 10) * 100 + (A % 100 / 10) * 10 + A / 100;

 

Essa é a conta afinal

  • Amei 1
Postado

//Programa 21

 

#include <stdio.h>

 

int main(){

    int i, A, B, iA, iB, digito1A, digito2A, digito3A, digito1B, digito2B, digito3B, aux, cont;

 

    scanf("%d", &i);

 

    while (cont < i)

    {

        scanf("%d %d", &A, &B);

        iA = A;

        digito1A = iA / 100;

        digito2A = iA % 100 / 10;

        digito3A = iA % 10;

        

        iB = B;

        digito1B = iB / 100;

        digito2B = iB % 100 / 10;

        digito3B = iB % 10;

 

        if(digito3A > digito3B){

            printf("%d%d%d\n", digito3A, digito2A, digito1A);

        }

        else

        {

            printf("%d%d%d\n", digito3B, digito2B, digito1B);

        }

        

        cont ++;

    }

    

    return 0;

    

}

 

Tem algo errado o sistema não aceitou 

adicionado 8 minutos depois
8 minutos atrás, Eduardo_Braz disse:

//Programa 21

 

#include <stdio.h>

 

int main(){

    int i, A, B, iA, iB, digito1A, digito2A, digito3A, digito1B, digito2B, digito3B, aux, cont;

 

    scanf("%d", &i);

 

    while (cont < i)

    {

        scanf("%d %d", &A, &B);

        iA = A;

        digito1A = iA / 100;

        digito2A = iA % 100 / 10;

        digito3A = iA % 10;

        

        iB = B;

        digito1B = iB / 100;

        digito2B = iB % 100 / 10;

        digito3B = iB % 10;

 

        if(digito3A > digito3B){

            printf("%d%d%d\n", digito3A, digito2A, digito1A);

        }

        else

        {

            printf("%d%d%d\n", digito3B, digito2B, digito1B);

        }

        

        cont ++;

    }

    

    return 0;

    

}

 

Tem algo errado o sistema não aceitou 

@arfneto

Postado

Entendi

Apenas confira a saída para os testes que já tem. Tem que estar idêntico. Só isso. Nem um espaço a mais ou a menos. Nem pular linhas a mais. é Um sistema automatizado e precisa ler exatamente o que foi pedido

  • Amei 1
Postado

@arfneto Isso mais não está aceitando de forma alguma já revisei o código de ponta a ponta mais nada.

 

Porém tem uma condição na entrada que eu não sei se tem algo haver é que os números não pode serem igual ou conter zero em alguma casa.

 

Tentei fazer isso mais não sei como.. 

  • 4 anos depois...
Postado

@Eduardo_Braz

Bom dia!

 

Resolveu?

Spostamente, é um exercício de expressões lógicas–em laço sobre strings; mas subverteste

a operações aritméticas sobre inteiro (“int”).

 

 

 

O Problema

 

   João tem um irmão mais novo, José,  que  começou a ir  à escola e já está tendo
problemas com números.  Para   ajudá-lo   a pegar o jeito com a  escala  numérica, 
sua professora escreve dois números de três dígitos e pede a José  para comparar
esses números. Mas em vez de interpretá-los  com  o  dígito   mais   significativo  à 
esquerda, ele deve interpretá-lo com o  dígito  mais  significativo  à  direita.  Ele tem

que dizer à professora qual  o  maior  dos  dois  números.   Escreva  um   programa 
que irá verificar as respostas de José.

 

 

Uma análise

 

   No sistema os números são strings.

   O fato tem 2 termos e cada termo 3 elementos, que sugere uma comparação de conjuntos.

   

   Sem pensar muito:

           Solicitar um decimal, depois capturarr strings com duas iterações de índice

           decrescente, em seguida, chamar a função strcmp e elas nos

           argumentos que definirão a valorosa e imprimir.

 

           O decimal é o quantia de testes; cada teste é duas capturas, uma compração

           e uma impressão, ou seja, é um laço.

 

 

 

char numeros[] [4]= {{0} , {0}};/* Os números da professora */

 

Capturar: um exemplo de laço

    size_t i= 3UL;
    while (i) {
      int r= getchar ();
      if (EOF==r) break;
      if (isgraph (r)) numeros[0][--i]= (char) r;
      }

 

Talvez isso inspira o suficiente para uma solução.

 

***

Postado

Caso não fique satisfeito com o uso da função e biblioteca strings, tudo bem.

Compare após casting: já que nos sistemas atuais, 4 bytes são a estrutura de um “int”!

Mas, suponho que esse não seja o exercício da questão.

 

O exercício é de strings.

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...