Ir ao conteúdo
  • Cadastre-se

C Solicitar 10 idades e mostrar todas maiores ou igual a 18


Posts recomendados

No caso eu quero que ele solicite 10 idades e mostre todas >=18. 

#include<stdio.h>
#include<stdlib.h>

int main()

{
    int idade;
    int count;


        for(count=1; count<=10; count++){

               printf("Informe 10 idades para o sistema: \n");
                    scanf("%i", &idade);
                    count++;

                 if (idade>=18){
                       printf("%i", idade);

            }
            }

 return 0;

}

 


 

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • DiF alterou o título para Solicitar 10 idades e mostrar todas maiores ou igual a 18

@Thaianny Oliveira   no primeiro código você está incrementando a variável que controla o loop for e assim vai pular de dois em dois , e lerá apenas cinco números , 

scanf("%i", &idade);
/// count++; já incrementada pelo "for" 

e no segundo você colocou um loop "while" dentro do "for" sem necessidade ,  e se que apenas mostrar as idades maior ou igual a 18 então só precisa de uma comparação " if "

 

printf("Informe 10 idades para o sistema:\n");
for(int count=0; count<10; count++)
{
    /// while(count<10)
    /// {
    printf("Informe a %d idade -: ",count+1);
    scanf("%i", &idade);
    /// count++;
    if ( idade >= 18 )
    {
        printf("\n%i Idade -> %d\n\n",count+1, idade);
    }
    /// }
}

e outro modo mais elaborado seria usar um vetor para armazenar todas as idades com um loop "for" indo de zero até enquanto for menor que 10 , e depois outro loop para fazer a comparação e mostrar tais idades ,  e outra coisa também é que o mais comum é começar o loop em zero "0"  pois na linguagem c os vetores se iniciam pela posição zero mesmo , apesar de que não terá erro se começar em " 1 " , mas se assim o fizer vai perder duas posições do vetor,  a primeira e a última posição  , pois essa última posição não estará reservada . 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Em 18/04/2024 às 19:27, Thaianny Oliveira disse:

No caso eu quero que ele solicite 10 idades e mostre todas >=18.

Entendo...

 

E será durante o prompt que produz a saída ou não? Neste caso, depois que memoriza ('bufferiza') 10 idades?

 

Teu código-fonte, inspira-me ser durante; ou seja, ler 10 idades, e o seu enunciado não; ou seja, solicitar 10 idade(s).

 

Há diferença entre as ações.

 

 

Concordo👍

Em 18/04/2024 às 20:41, devair1010 disse:

outro modo mais elaborado seria usar um vetor para armazenar

Supostamente, se há vetores no apontamento, então esse é o modo.

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Portanto,

 

#include <stdio.h> /* Include the header file for input and output */
int main (){
    int sep= 0;
    printf("Informe \"Até\" 10 idades para o sistema:\n");
    for (int count= 1 ; count<=10 ; ) {

         int c= getchar ();
         if ('\n'==c || c==EOF) break;

         ungetc (c,stdin);

         int idade= -1;
         c= scanf("%d",&idade);
         if (idade>=18) {
             printf("%c%d",sep,idade);
             sep= ' ';
         }
         if (idade>=0) ++count;
         if (c!=1) getchar ();
    }
    putchar ('\n');
    return 0;
}

 

Além disso, talvez algum refinamento, aplique-os se julgas necessário, porém, para mim, ele confere com solicitar 10 idades…

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

... Já com leitura de 10 idades, assume-se que 10 é uma informação (nem mais, nem menos) — somente 10 satisfaz.

/*
* UM EXEMPLO DE LEITURA (e produz durante)
*/
#include <stdio.h> /* Include the header file for input and output */
#include <stdlib.h>/*     ...memory management and other algorthms */
int main (){
  int idade;
  int count;

  for (count= 1 ; count<=10 ; count++) {
    printf ("%c%s%d%s",'\r',"Entre com ",count,"ª idade: ");
    count-= 1;

    int c= getchar ();
    if (EOF==c) break;
    if ('\n'==c) continue;

    ungetc (c,stdin);

    idade= -1;
    scanf ("%i",&idade);
    if (idade>=0) {
      if (idade>=18) printf ("%i\n",idade);
      count++;
      }
    while (EOF!=(c= getchar ()) && '\n'!=c);
    }
  putchar ('\n');
  return 0;
  }

 

Aqui, diferentemente, a [Enter] não encerra suas 10 leituras.

E repeito, se consegue refinar alguma coisa, então, faça-o. Para mim, ele já confere com 10 leituras.

  • Obrigado 1
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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!