Jump to content
darthmagus

Me ajudem a resolver um exercício, por favor! E se possível, me mostrem como entender melhor estruturas de repetição.

Recommended Posts

Escreva um programa que calcule a média dos números digitados pelo usuário, se eles forem pares. O programa deve terminar a leitura se o usuário digitar zero.

 

Isso foi o que fiz até agora, mas não deu muito certo:

 

  main(void){
        setlocale(LC_ALL,"Portuguese");
        int n1, n2, n3;
        float media;
        int i;

        printf("Digite o 1º número: ");
        scanf("%d", &n1);

        printf("Digite o 2º número: ");
        scanf("%d", &n2);

        printf("Digite o 3º número: ");
        scanf("%d", &n3);

        while (n1%2 ==0 && n2%2 ==0 && n3%2 == 0) {
            media = (n1 + n2 + n3)
        }

        printf("%d", media);

    return 0;
    system ("pause");
}
 

Share this post


Link to post
Share on other sites

@darthmagus,  nessa situação não faz muito sentido usar o while. Tu poderia fazer 3 if's pra testar se são pares e ir somando numa variável. Depois, dividiria pelo total. Mas e se tu salvasse esses números dentro de um vetor? Aí sim tu poderia usar uma estrutura de repetição pra iterar nele. 

int main(){
    int numeros[3], somaGeral = 0;
    float media;

    for(int i=0; i<3; i++){
        printf("Digite o %d numero: ", i+1);
        scanf("%d", &numeros[i]);
            
        if(numeros[i] % 2 == 0)
            somaGeral += numeros[i];
    }

    media = somaGeral / 3;

    printf("%.2f", media);

    return 0;
}

Olha como a estrutura de repetição nos fez poupar linhas de código. Antes, precisávamos escrever três vezes "Insira nº número". Eram apenas três, ok, mas imagina que fossem 1000 números... 

Share this post


Link to post
Share on other sites

Dado Enunciado:

Em 10/05/2018 at 19:41, darthmagus disse:

Escreva um programa que calcule a média dos números digitados pelo usuário, se eles forem pares. O programa deve terminar a leitura se o usuário digitar zero.

 

 

 

O programa termina a leitura se quando ler 0, se não então continua o laço e a condição de soma.

Por questões didática vou portar solução:

#include <stdio.h>    /* incluir as funções: scanf; printf.                   */

int main( void )
{
  int numero= 0;      /* Para todas as entradas do usuario                    */
  float media= 0;     /* Para média                                           */
  int elemento= 0;    /* Quantidade de elementos do conjunto de números       */
  int somatorio= 0;   /* Soma de todos os números do conjunto que são pares   */
  
  printf( "%s","Informe todos os numeros e 0 quando terminar?\n" );
  do {
    
    printf( "%s%d%s","[",elemento,"]: " );
    scanf( " %i",&numero );
    
    if (0 == (numero % 2)) { /* o resto (%) da divisão de um número par por 2 é 
    igual 0, inclusive 0 que também é par                                     */
      
      elemento+= 1;
      somatorio+= numero; 
    }
    
  }while (0 != numero); /* somente se numero é diferente continua o laço      */

  media= ((float)somatorio) / elemento;
  printf( "%s%g%s","Media:= ",media,"\n" );/* mostra resultado                */
  return 0;/* fim do programa                                                 */
}

 

 

*** Até

Share this post


Link to post
Share on other sites
#include<stdio.h>
int main(void){
    int valor;
    int divisor;
    int media;
    int soma;
    do{
        printf("Valor:");
        scanf("%d",&valor);
        if(valor !=0 && valor % 2 == 0){
            soma += valor;
            divisor++;
            media = soma/divisor;
        }
    }while(valor !=0);
    printf("Média: %d",media);
}

 

  • Haha 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By cgm2k7
      Boa noite!
      Bom preciso de uma dica/ajuda em uma problema...
      tenho duas structs, LIST e NO.  lista duplamente encadeada.
      //insiro/crio 100.000 nos.
       
      struct no{ char *nome; char sexo; float nota; float media; int id; struct no *next, *prev; }; struct list{ long int size_list; struct no *begin, *end; }; typedef struct no NO; typedef struct list LIST; for(int y = 0; y < 100000; y++) inserir_inicio(*list); void CreateNo(NO **no) { *no = (NO*)calloc(1,sizeof(NO)); if (*no) { (*no)->nome = "cicero"; (*no)->sexo = 'M'; (*no)->nota = 0.0; (*no)->media = 1; (*no)->id++; (*no)->next = NULL; (*no)->prev = NULL; is_Ok = true; } else { printf("ERRO: Ao alocar memoria em 'void CreateNo(NO **no)'\n"); is_Ok = false; return; } } void inserir_inicio(LIST *list) { NO *no; CreateNo(&no); if (is_Ok) { no->next = list->begin; list->begin = no; list->size_list++; } } // destroy os nos void DestoyList(LIST **list) { if ((*list)->begin == NULL) { free(*list); printf("Lista vazia!\n\n"); } else { NO *p = (*list)->begin, *tmp = NULL; while (p != NULL) { tmp = p; p = p->next; /*tmp->nome = "0"; tmp->sexo = '\0'; tmp->id = 0; tmp->media = 0;*/ free(tmp); } free(p); (*list = NULL); } } o problema é o seguinte:
      quando inicio o aplicativo ele começão com 512kb, quando criando  100.000  na memoria heap, aumenta para mais ou menos uns 7,8mb, bom ate aqui tudo oks
      mas quando delete este nos com o free() esperava eu q retornasse para os mesmo 512kb inicias do aplicativo, mas isso não acontece, ele retorna para 1,3mb.
      minha pergunta é: porque não deleta tudo, já setei zeros e para todos os membros da struct no mas mesmo assim não deleta tudo.
      Se alguém poder meda da uma dica. OBS: não quero código  pronto eu quero apenas dicas se possível bem explicada porque sou meio novato em c kkk.
    • By Sharank
      Strcat Function In C++
       
      I'm new to C and C++ programming, can anyone give me a hint on what I'm doing wrong here. I'm trying to write to concat function that takes to pointers to chars and concatenates the second to the first. The code does do that, but the problem is that it adds a bunch of junk at the end.
       
      For instance, when passing the arguments - "green" and "blue", the output will be "greenblue" plus a bunch of random characters. I also wrote the strlen function that strcat uses, which I will provide below it for reference. I'm using the online compiler at InterviewBit The exact instructions and specification is this:
       
      int main(int argc, char** argv)
      {
      const int MAX = 100;
       
      char s1[MAX];
      char s2[MAX];
       
      cout << "Enter your first string up to 99 characters. ";
      cin.getline(s1, sizeof(s1));
      int size_s1 = strlen(s1);
      cout << "Length of first string is " << size_s1 << "\n";
       
      cout << "Enter your second string up to 99 characters. ";
      cin.getline(s2, sizeof(s2));
      int size_s2 = strlen(s2);
      cout << "Length of second string is " << size_s2 << "\n";
      cout << " Now the first string will be concatenated with the second
      string ";
      char* a = strcat(s1,s2);
       
      for(int i = 0; i<MAX; i++)
      cout <<a;
       
      // system("pause");
      return 0;
      }
       
      //strcat function to contatenate two strings
      char* strcat(char *__s1, const char *__s2)
      {
      int indexOfs1 = strlen(__s1);
      int s2L = strlen(__s2);
      cout <<s2L << "\n";
      int indexOfs2 = 0;
      do{
      __s1[indexOfs1] = __s2[indexOfs2];
      indexOfs1++;
      indexOfs2++;
      }while(indexOfs2 < s2L);
       
       
      return __s1;
      }
       
      //Returns length of char array
      size_t strlen(const char *__s)
      {
      int count = 0;
      int i;
      for (i = 0; __s != '\0'; i++)
      count++;
      return (count) / sizeof(__s[0]);
       
      }
    • By Elizandro Veloso
      Preciso de ajuda em um projeto, esse projecto , precisa alterar, guardar as fichas, como  faço para alterar, guardar etc ?
       
      switch(menu) { case 'c': case 'C': printf("\n-----------------------------------------------------------\n"); printf("\t\t Ficha de Componentes\n"); printf("-----------------------------------------------------------\n"); componente = inserirComponente(componente); break; case 'p': case 'P': printf("\n-----------------------------------------------------------\n"); printf("\t\t Posto de Trabalho\n"); printf("-----------------------------------------------------------\n"); posto = inserirPostoTrabalho(posto); break; case 'f': case 'F': printf("\n-----------------------------------------------------------\n"); printf("\t\t Ficha de Funcionário\n"); printf("-----------------------------------------------------------\n"); funcionario = inserirFuncionario(funcionario); break; case 'o': case 'O': printf("\n-----------------------------------------------------------\n"); printf("\t\t Ficha das Operações\n"); printf("-----------------------------------------------------------\n"); operacao = inserirOperacao(operacao); break; case 'e': case 'E': printf("\n-----------------------------------------------------------\n"); printf("\t\t Ficha de Empresa\n"); printf("-----------------------------------------------------------\n"); empresa = inserirEmpresa(empresa); break; case 's': case 'S': printf("\n-----------------------------------------------------------\n"); printf("\t\t Obrigado e volte sempre\n"); printf("-----------------------------------------------------------\n"); break; default: printf("\n---------------------------------------------------------------\n"); printf("\t\t A instruçao inserida não existe no Menu!!\n\n\t\t Aguarde para digitar novamente...\n"); printf("-----------------------------------------------------------------\n"); sleep(4); system("cls"); } }while(menu != 'S' && menu != 's');
       
    • By roberson abalaid
      #include <stdio.h>
      #include <stdlib.h>
      int arr[3][5];
      int main(){
          
          printf("Favor inserir os dados...\n");
          
          for(int i = 0; i < 3; i++){
              for(int j = 0; j < 5; j++){
                  scanf("%d", &arr[j]);
              }
          }
          
            printf("os valores inseridos foram...\n");
          
          for(int i = 0; i < 3; i++){
              for(int j = 0; j < 5; j++){
                  printf("  %d  ", arr[j]);
              }
              printf("\n");
          }
          return 0;
      }
    • By marceloDiegues
      Olá, amigos.
      Por favor,  me ajude com a seguintes perguntas.
       
      Qual a complexidade de um projeto desse?
      Qual o preçp de um projeto desse tipo?
       
      Quero contratar algum profissional para criar um site que tenha as seguintes funcionabilidades:
       
      1- Cadastro de usuário;
      2- Login e senha;
      3- O site seria muito parecido com o www.qconcursos.com, o usuário resolveria questões online.
      Contudo, haveria a possibilidade de criar salas tipo aqueles bate-papo da &nbsp;UOL.
      Então, o usuário criaria salas de estudos, em que , resolveria questões e conseguiria se comunicar por chat com usuários que estejam na mesma sala.
       
      Exemplo em anexo:
       
       
       
       

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.