A maior rede de estudos do Brasil

Como criar o programa sugerido?

Esta atividade consiste em criar um programa que seja capaz de adivinhar o número pensado pelo usuário, apenas perguntando ao mesmo, se o número é PAR ou IMPAR. Os passos a serem seguidos programaticamente são: 1. Perguntar ao usuário se o número pensado é par ou ímpar. Após a resposta, se for par, pedir ao usuário que divida o número por 2. Se for ímpar, pedir ao usuário que subtraia 1, e que então divida o resultado por 2. 2. Perguntar então se o novo resultado obtido é par ou ímpar. 3. O procedimento continua com cada novo resultado. Isto é, sistema pergunta se o número resultante é par ou ímpar e, após a resposta, deve pedir para o usuário repetir o procedimento descrito no item 1. 4. O sistema deve parar quando o usuário responder que o número é impar e igual a 1, encerrando as perguntas, e revelar imediatamente o número pensado pelo usuário, e por curiosidade informar como este número é representado em base binária. Dica: Utilize a soma de potências de 2, ao encontrar os números impares, será explicado em detalhes em sala.


4 resposta(s) - Contém resposta de Especialista

User badge image

RD Resoluções Verified user icon

Há mais de um mês

#include <stdio.h>

#include <string.h>

int main()

{

char var, num;

int n=1, i=0, j, k, aux;

int binario[20];

do{

printf("\nO numero eh par ou impar (P-I)? ");

do{

scanf("%c", &var);

fflush(stdin);

var=toupper(var);

}while(var!='P' && var!='I');

if(var=='P'){

printf("\nDivida o numero por 2!");

n=n*2;

}

else{

printf("\nSubtraia 1 e entao divida por 2!");

n=n*2;

i++;

}

printf("\n\nO numero eh 1?(S-N): ");

do{

scanf("%c", &num);

fflush(stdin);

num=toupper(num);

}while(num!='N' && num!='S');

}while(num=='N');

if(i==1)

n++;

printf("\n\nO numero que voce pensou foi: %d", n);

printf("\nNumero na base binaria: ");

i=0;

while(n!=0){

binario[i]=n%2;

i++;

n=n/2;

}

k=i-1;

for(j=0;j<k;j++){

aux=binario[j];

binario[j]=binario[k];

binario[k]=aux;

k--;

}

for(j=0;j<i;j++){

printf("%d", binario[j]);

}

return 0;

}


A lógica para descobrir o número é bem simples, basta contar quantas vezes ocorre a divisão e caso haja subtração é feita a adição ao final dos cálculos. Para continuar no loop de verificação foi utilizada a estrutura do while.

Para a conversão do número da base decimal para a binária foi realizada em loop a divisão do número pela base e extraído o resto e armazenado em um vetor. Como o número em binário é representado do bit menos significativo para o mais significativo, então é preciso inverter a ordem em que salvamos os restos da divisão, para isso utilizamos a estrutura for para correr o vetor e inverter os valores. Após a inversão são impressos os números na tela para o usuário.

#include <stdio.h>

#include <string.h>

int main()

{

char var, num;

int n=1, i=0, j, k, aux;

int binario[20];

do{

printf("\nO numero eh par ou impar (P-I)? ");

do{

scanf("%c", &var);

fflush(stdin);

var=toupper(var);

}while(var!='P' && var!='I');

if(var=='P'){

printf("\nDivida o numero por 2!");

n=n*2;

}

else{

printf("\nSubtraia 1 e entao divida por 2!");

n=n*2;

i++;

}

printf("\n\nO numero eh 1?(S-N): ");

do{

scanf("%c", &num);

fflush(stdin);

num=toupper(num);

}while(num!='N' && num!='S');

}while(num=='N');

if(i==1)

n++;

printf("\n\nO numero que voce pensou foi: %d", n);

printf("\nNumero na base binaria: ");

i=0;

while(n!=0){

binario[i]=n%2;

i++;

n=n/2;

}

k=i-1;

for(j=0;j<k;j++){

aux=binario[j];

binario[j]=binario[k];

binario[k]=aux;

k--;

}

for(j=0;j<i;j++){

printf("%d", binario[j]);

}

return 0;

}


A lógica para descobrir o número é bem simples, basta contar quantas vezes ocorre a divisão e caso haja subtração é feita a adição ao final dos cálculos. Para continuar no loop de verificação foi utilizada a estrutura do while.

Para a conversão do número da base decimal para a binária foi realizada em loop a divisão do número pela base e extraído o resto e armazenado em um vetor. Como o número em binário é representado do bit menos significativo para o mais significativo, então é preciso inverter a ordem em que salvamos os restos da divisão, para isso utilizamos a estrutura for para correr o vetor e inverter os valores. Após a inversão são impressos os números na tela para o usuário.

User badge image

Andre

Há mais de um mês

#include <stdio.h>

#include <string.h>

int main()

{

char var, num;

int n=1, i=0, j, k, aux;

int binario[20];

do{

printf("\nO numero eh par ou impar (P-I)? ");

do{

scanf("%c", &var);

fflush(stdin);

var=toupper(var);

}while(var!='P' && var!='I');

if(var=='P'){

printf("\nDivida o numero por 2!");

n=n*2;

}

else{

printf("\nSubtraia 1 e entao divida por 2!");

n=n*2;

i++;

}

printf("\n\nO numero eh 1?(S-N): ");

do{

scanf("%c", &num);

fflush(stdin);

num=toupper(num);

}while(num!='N' && num!='S');

}while(num=='N');

if(i==1)

n++;

printf("\n\nO numero que voce pensou foi: %d", n);

printf("\nNumero na base binaria: ");

i=0;

while(n!=0){

binario[i]=n%2;

i++;

n=n/2;

}

k=i-1;

for(j=0;j<k;j++){

aux=binario[j];

binario[j]=binario[k];

binario[k]=aux;

k--;

}

for(j=0;j<i;j++){

printf("%d", binario[j]);

}

return 0;

}


A lógica para descobrir o número é bem simples, basta contar quantas vezes ocorre a divisão e caso haja subtração é feita a adição ao final dos cálculos. Para continuar no loop de verificação foi utilizada a estrutura do while.

Para a conversão do número da base decimal para a binária foi realizada em loop a divisão do número pela base e extraído o resto e armazenado em um vetor. Como o número em binário é representado do bit menos significativo para o mais significativo, então é preciso inverter a ordem em que salvamos os restos da divisão, para isso utilizamos a estrutura for para correr o vetor e inverter os valores. Após a inversão são impressos os números na tela para o usuário.

User badge image

Ricardo

Há mais de um mês


#include<stdio.h>
#include<string.h>
#include<locale.h>

int main(int argc, char *argv[]){
int i,num=0;
char cond[1000][6];
char cond2[4];
setlocale(LC_ALL,"portuguese");
for(i=0; ;i++){
printf("O numero é par ou impar? :");
scanf("%s", cond[i]);
if(strcmp(cond[i],"par")==0){
printf("Divida por 2\n");
}
if(strcmp(cond[i],"impar")==0){
printf("O numero é 1?: ");
scanf("%s", cond2);
if(strcmp(cond2,"sim")==0){

break;
}
else{

printf("Subtraia 1\n");
}
}

}

for( ;i>=0;i--){
if(strcmp(cond[i],"par")==0){
num=num*2;
}
if(strcmp(cond[i],"impar")==0){
num=num+1;

}

}

printf("%d\n",num);


}

User badge image

Andre

Há mais de um mês

Como criar o programa sugerido?

Esta atividade consiste em criar um programa que seja capaz de adivinhar o número pensado pelo usuário, apenas perguntando ao mesmo, se o número é PAR ou IMPAR. Os passos a serem seguidos programaticamente são: 1. Perguntar ao usuário se o número pensado é par ou ímpar. Após a resposta, se for par, pedir ao usuário que divida o número por 2. Se for ímpar, pedir ao usuário que subtraia 1, e que então divida o resultado por 2. 2. Perguntar então se o novo resultado obtido é par ou ímpar. 3. O procedimento continua com cada novo resultado. Isto é, sistema pergunta se o número resultante é par ou ímpar e, após a resposta, deve pedir para o usuário repetir o procedimento descrito no item 1. 4. O sistema deve parar quando o usuário responder que o número é impar e igual a 1, encerrando as perguntas, e revelar imediatamente o número pensado pelo usuário, e por curiosidade informar como este número é representado em base binária. Dica: Utilize a soma de potências de 2, ao encontrar os números impares, será explicado em detalhes em sala.


#include <stdio.h>

#include <string.h>

int main()

{

char var, num;

int n=1, i=0, j, k, aux;

int binario[20];

do{

printf("\nO numero eh par ou impar (P-I)? ");

do{

scanf("%c", &var);

fflush(stdin);

var=toupper(var);

}while(var!='P' && var!='I');

if(var=='P'){

printf("\nDivida o numero por 2!");

n=n*2;

}

else{

printf("\nSubtraia 1 e entao divida por 2!");

n=n*2;

i++;

}

printf("\n\nO numero eh 1?(S-N): ");

do{

scanf("%c", &num);

fflush(stdin);

num=toupper(num);

}while(num!='N' && num!='S');

}while(num=='N');

if(i==1)

n++;

printf("\n\nO numero que voce pensou foi: %d", n);

printf("\nNumero na base binaria: ");

i=0;

while(n!=0){

binario[i]=n%2;

i++;

n=n/2;

}

k=i-1;

for(j=0;j<k;j++){

aux=binario[j];

binario[j]=binario[k];

binario[k]=aux;

k--;

}

for(j=0;j<i;j++){

printf("%d", binario[j]);

}

return 0;

}


A lógica para descobrir o número é bem simples, basta contar quantas vezes ocorre a divisão e caso haja subtração é feita a adição ao final dos cálculos. Para continuar no loop de verificação foi utilizada a estrutura do while.

Para a conversão do número da base decimal para a binária foi realizada em loop a divisão do número pela base e extraído o resto e armazenado em um vetor. Como o número em binário é representado do bit menos significativo para o mais significativo, então é preciso inverter a ordem em que salvamos os restos da divisão, para isso utilizamos a estrutura for para correr o vetor e inverter os valores. Após a inversão são impressos os números na tela para o usuário.

Essa pergunta já foi respondida por um dos nossos especialistas