Ir ao conteúdo
  • Cadastre-se

C Maior e menor número e zeros não serão contados


Eduardo_Braz

Posts recomendados

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);

        }

        

    }

}

 

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

@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);
    }
}

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

//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

Link para o comentário
Compartilhar em outros sites

@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.. 

Link para o comentário
Compartilhar em outros sites

  • 4 anos depois...

@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.

 

***

Link para o comentário
Compartilhar em outros sites

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.

 

Link para o comentário
Compartilhar em outros sites

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...