Ir ao conteúdo

Resolver exercicio


ktoblepas

Posts recomendados

Postado

Oi galera!

Bom, estou tentando ajudar uma amiga que está aprendendo C, e me deparei com um exercício extremamente simples, mas que está me consumindo! rsrs

É o seguinte:

Criar um algoritmo para ler 30 números do teclado e mostrar na tela apenas os números pares.

#include <stdio.h>

int main()
{
int num, i, resto;

printf("digite um numero: ");
for(i = 1; i<=3;i++)
{
// printf("digite o %do numero: ", i);
scanf("%d",&num);

resto = num%2;

if(resto == 0)
printf("%d ", num);
}
}

o caso é que ao compilar, ele exibe o numero digitado, e se for par ele repete, então fica uma bagunça! E como ela ainda não aprendeu a mexer com arrays, achei melhor não usar. Pensei em criar uma string e concatenar em forma de texto toda vez que o número for par, mas como não entendo de C e não conheço os comandos e funções resolvi recorrer a vocês pra ver se existe uma solução mais simples que não percebi.

Estamos usando um app chamado Code::Blocks

Agradeço desde já a quem puder ajudar!

Postado

Olá,

Se a ideia é primeiro ler os 30 valores e depois imprimir apenas os pares, a melhor forma é utilizar um array. Se você for criar uma string e concatenar os valores, também estará trabalhando com arrays, pois uma string não é nada mais do que um array de caracteres.

Minha sugestão é que leia os valores para um array de 30 inteiros e após a leitura dos dados percorra o array e, caso o elemento seja par, imprima na tela.

Segue o código para ilustrar:


#include <stdio.h>

#define TAMANHO 30

int main() {
int entrada[TAMANHO], i;

for(i = 0; i < TAMANHO; i++) {
printf("digite o %do numero: ", i + 1);
scanf("%d", &entrada[i]);
}

printf("\npares digitados:\n");

for (i = 0; i < TAMANHO; i++) {
if (entrada[i] % 2 == 0) {
printf("%d ", entrada[i]);
}
}

printf("\n");

return 0;
}

Na minha opinião essa é a forma mais simples de resolver esse problema.

Existem outras formas de fazer isso, como por exemplo utilizar um array apenas para guardar os valores pares que forem sendo digitados, bastando depois apenas percorrer esse vetor e ir imprimindo os valores.

Espero ter ajudado.

Postado

Ai que tá cara! Como ela ainda não aprendeu arrays, queria evitar de usa-los, por isso garrei! Apesar de strings serem arrays de chars, a estrutura da pra ser "diferente", dando a impressão de ser somente uma variável sem necessidade de usar comandos para ler cada array.

Pensei em usar também algum comando que forçe o cursor a se manter na linha 0 coluna 0 na função scan, e mandar o printf para outra linha, assim daria certo, apesar de ser bem trabalhoso!!!

Alguma outra dica?

Valeu de qualquer forma!!!

Postado

meio mais simples é usando vetor/array

outro é beem chato, que seria criar variavel por variavel,

par1,par2,par3,...,...

e assim vai,

array é o mais simples possível, de se armazenar varios resultados

Pensei em usar também algum comando que forçe o cursor a se manter na linha 0 coluna 0 na função scan, e mandar o printf para outra linha, assim daria certo, apesar de ser bem trabalhoso!!!

Alguma outra dica?

Valeu de qualquer forma!!!

para alocar o cursor em algum lugar use o gotoxy(coluna,linha);


void gotoxy( int x, int y )
{
COORD coord;
coord.X = (short)x;
coord.Y = (short)y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

para usar a função só fazer assim

gotoxy(0,0);printf()... vai pra linha e coluna 0

gotoxy(0,10)scanf()... vai pra coluna 0 e linha 10

Postado

Bom, você precisa armazenar os 30 valores de alguma forma para depois verificar e imprimir os pares.

A forma mais simples de fazer isso é usando arrays. Você pode utilizar 30 variáveis diferentes para fazer isso, como o colega acima falou, mas aí você terá que codificar 30 scanf's e depois fazer 30 if's para ver se cada variável possui um valor par, ou seja, você terá um trabalho considerável para fazer isso.

Espero ter ajudado.

Postado

Valeu as dicas pessoal, mas no fim das contas vou entregar mais ou menos como coloquei no inicio, só dando uma melhoradinha na formatação da tela...

O exercício é justamente para treinar o uso de laços, então criar muitas variáveis não seria uma solução, e as dicas de acabaram sendo muito avançadas para ela usar agora.

Mas vou usa-las como exemplo de solução quando ela estiver nessa fase.

Valeu mesmo a atenção pessoal!!! Abraço!!!

  • Moderador
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!