Preciso de ajuda nesse exercício:
Escreva um programa em C que leia números inteiros no intervalo [0-50] e os armazene em um vetor com 10 posições. Preencha um segundo vetor apenas com os números ímpares do primeiro vetor. Imprima os dois vetores, 2 elementos por linha(um de cada vetor).
Resposta:
#include stdio.h>
#include stdlib.h>
int main()
{
int h, i = 0, j = 0, num[10], impar[10];
printf("Digite 10 números inteiros no intervalo de 0 a 50:\n");
for (h = 0; h < 9; h++)
{
scanf(" %d ", &num [h]);
if (num [h] % 2 == 0);
else impar [j++] = num [h];
}
printf("\nNúmeros digitados: ");
for (h = 0; h < 10; h++)
printf(" %d ", num [h]);
printf("\nNúmeros impares digitados: ");
for(i = 0; i < j ; i++)
printf(" %d ", impar [i]);
}
PS: Na a hora de dar os números digitados em printf("\nNúmeros digitados: "); todos os números com 0 não aparecem, por exemplo: se a minha sequência é 1, 2, 3, 4, 5, 6, 7, 8, 9 e 10; em printf("\nNúmeros digitados: "); a resposta dada é: 1, 2, 3, 4, 5, 6, 7, 8, 9 e 0. gostaria de ajuda pra resolver isso.
Respostas
respondido por:
0
Idetifiquei alguns erros na sua resolução, então irei citar alguns deles abaixo e deixar um código que atenda a todos os critérios da questão.
ERROS.
Após uma análise do seu código, precebi um erro de lógica em:
O código deveria estar executando apenas 9 vezes, mas nos testes ele executa 10 vezes. O problema foi causado por:
Esses espaços em " %d " e &num [h] devem ser removidos:
Visto que o loop executava apenas 9 vezes, o último valor não era atualizado, sendo impresso 0.
ALGORITMO.
Abaixo você encontra um código otimizado e que atende a todos os requisitos da questão.
- #include <stdio.h>
- #include <stdlib.h>
- int main(void) {
- // declaramos as variáveis
- int c, num;
- int impares = 0;
- int nums[10], nums_imp[10];
- // recebemos os valores
- printf("Informe 10 números entre 0 e 50.\n");
- for(c=0; c<10; c++){
- while(1){
- printf("%d de 10: ", c+1);
- scanf("%d", &num);
- // Verifica se o valor está no intervalo
- if(num > 0 && num <= 50){
- break; // sai do while
- }else{
- printf("O valor está fora do itervalo! Tente novamente.\n");
- }
- }
- // adiciona o valor no vetor
- nums[c] = num;
- // verificamos se o número é ímpar
- if(num % 2 != 0){
- nums_imp[impares++] = num;
- }
- }
- // Imprimimos os dois vetores
- printf("\nOs resultados foram:\n");
- for(c=0; c<10; c++){
- // verifica se há números ímpares
- if(c < impares){
- printf("%d, %d\n", nums[c], nums_imp[c]);
- }else{
- // mostra apenas o primeiro vetor
- printf("%d\n", nums[c]);
- }
- }
- return 0;
- }
Veja mais questões sobre Linguagem C:
- https://brainly.com.br/tarefa/20289505
- https://brainly.com.br/tarefa/20250802
- https://brainly.com.br/tarefa/20265822
Anexos:
Perguntas similares
5 anos atrás
5 anos atrás
7 anos atrás
7 anos atrás
8 anos atrás
8 anos atrás
8 anos atrás