Ir para conteúdo
Fórum Script Brasil

brunnorodrigues

Membros
  • Total de itens

    5
  • Registro em

  • Última visita

Posts postados por brunnorodrigues

  1. Pessoal, meu desafio é esse: Dado um vetor, imprimir maior, menor, mediana e moda. Creio que isso estou conseguindo fazer corretamente (talvez algum errinho aqui outro ali), mas entendi a lógica de como resolver esses problemas. O que não estou conseguindo é fazer com que a inserção de elementos no vetor seja encerrada quando digito -1, que é o que o professor quer. Como podem observar, da forma como está, o primeiro valor que insiro, sinaliza o tamanho do vetor. E não é dessa forma que ele quer. Como então fazer como ele quer? Desde já obrigado, e abaixo, o código.

    #include<stdio.h>
    #include<stdlib.h>
    
    int main(){
    	int *vetor,tamanho,i,j,menor,maior,mediana,contador1=0,contador2=-1,moda;
    	
    	scanf("%i",&tamanho);
    	vetor=(int*)calloc(tamanho,sizeof(int));
    	
    	for(i=0;i<tamanho;i++)
    		scanf("%i",&vetor[i]);
    
        maior=vetor[0]; 
        menor=vetor[0];
    
    	for(i=0;i<tamanho;i++){
    		if(vetor[i]<menor)
    			menor=vetor[i];
    		if(vetor[i]>maior)
    			maior=vetor[i];
    	}
    	
    	mediana=vetor[tamanho/2];
    	
    	for(i=0;i<tamanho-1;i++){
    		for(j=i+1;j<tamanho;j++){
    			if(vetor[i]==vetor[j])
    				contador1++;
    			if(contador1>contador2)
    				moda=vetor[i];
    			contador2=contador1;
    			contador1=0;
    		}
    	}
    	
    	printf("%i %i %i %i",menor,maior,mediana,moda);
    
    	return 0;
    }

     

  2. Já ando bem bugado com esses exercícios, viu? (rsrs) Este é o número 5 de uma lista de strings que tenho que apresentar na faculdade. Não consigo sair dos erros que ele está apontando. No meu entendimento, funcionaria assim. Alguém poderia dar uma olhada e me apontar o que errei, por favor? Desde já, obrigado.

    /*
    5) Foi realizada uma pesquisa de algumas características físicas da população de uma 
    certa região, a qual coletaram os seguintes dados referentes a cada habitante para serem 
    analisados: 
    - sexo (masculino e feminino) 
    - cor dos olhos (azuis, verdes ou castanhos) 
    - cor dos cabelos (louros, castanhos, pretos) 
    - idade 
    Faça um algoritmo que determine e escreva: 
    a) a maior idade dos habitantes; 
    b) a quantidade de indivíduos do sexo feminino cuja idade está entre 18 e 35 anos, 
    inclusive; 
    c) a quantidade de indivíduos que tenham olhos verdes e cabelos louros; 
    O final do conjunto de habitantes é reconhecido pelo valor -1 informado como idade. 
    */
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<locale.h>
    
    	int habitantes=0,contador=1,idade,maioridade=0,mulheresentre18e35,olhosverdesecabeloslouros;
    	char sexo[10],corolhos[10],corcabelos[10];
    
    void cadastra(){
    	for(habitantes=0;habitantes<contador;habitantes++){
    		printf("Cadastrando o %iº habitante:\n",habitantes+1,contador=contador+1);
    		printf("Idade (digite -1 para parar os cadastros): ");
    		scanf("%i",&idade);
    		if(idade<0){
    			system("cls");
    			break;
    		}
    		printf("Sexo (masculino ou feminino): ");
    		fflush(stdin);fgets(sexo,10,stdin);
    		printf("Cor dos olhos (azuis, verdes ou castanhos): ");
    		fflush(stdin);fgets(corolhos,10,stdin);
    		printf("Cor dos cabelos (louros, castanhos, pretos): ");
    		fflush(stdin);fgets(corcabelos,10,stdin);
    		system("cls");
    	}
    }
    
    void processa(){
    	for(habitantes=0;habitantes<contador;habitantes++){
    		if(idade>maioridade){
    			maioridade=idade;
    		}
    		if(sexo[habitantes]=='mulher'||idade>=18||idade<=35){
    			mulheresentre18e35=strlen(habitantes);
    			mulheresentre18e35=mulheresentre18e35+1;
    		}
    		if(corolhos[habitantes]=='verdes'||corcabelos[habitantes]=='louros'){
    			olhosverdesecabeloslouros=strlen(habitantes);
    			olhosverdesecabeloslouros=olhosverdesecabeloslouros+1;
    		}
    	}
    }
    
    void exibe(){
    	printf("Relatório de dados dos habitantes desta região:\n");
    	for(habitantes=0;habitantes<contador;habitantes++){
    	printf("%i é a maior idade entre eles;\n",maioridade);
    	printf("%i pessoas são mulheres, com idade entre 18 e 35 anos; e\n",mulheresentre18e35);
    	printf("%i indivíduos tem olhos verdes e cabelos louros.",olhosverdesecabeloslouros);
    	}
    }
    
    main(){
    setlocale(LC_ALL,"Portuguese");
    
    	cadastra();
    	processa();
    	exibe();
    
    return 0;
    }

     

  3. Já ando bem bugado com esses exercícios, viu? (rsrs) Este é o número 5 de uma lista de strings que tenho que apresentar na faculdade. Não consigo sair dos erros que ele está apontando. No meu entendimento, funcionaria assim. Alguém poderia dar uma olhada e me apontar o que errei, por favor? Desde já, obrigado.

    /*
    5) Foi realizada uma pesquisa de algumas características físicas da população de uma 
    certa região, a qual coletaram os seguintes dados referentes a cada habitante para serem 
    analisados: 
    - sexo (masculino e feminino) 
    - cor dos olhos (azuis, verdes ou castanhos) 
    - cor dos cabelos (louros, castanhos, pretos) 
    - idade 
    Faça um algoritmo que determine e escreva: 
    a) a maior idade dos habitantes; 
    b) a quantidade de indivíduos do sexo feminino cuja idade está entre 18 e 35 anos, 
    inclusive; 
    c) a quantidade de indivíduos que tenham olhos verdes e cabelos louros; 
    O final do conjunto de habitantes é reconhecido pelo valor -1 informado como idade. 
    */
    #include<stdio.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<locale.h>
    
    	int habitantes=0,contador=1,idade,maioridade=0,mulheresentre18e35,olhosverdesecabeloslouros;
    	char sexo[10],corolhos[10],corcabelos[10];
    
    void cadastra(){
    	for(habitantes=0;habitantes<contador;habitantes++){
    		printf("Cadastrando o %iº habitante:\n",habitantes+1,contador=contador+1);
    		printf("Idade (digite -1 para parar os cadastros): ");
    		scanf("%i",&idade);
    		if(idade<0){
    			system("cls");
    			break;
    		}
    		printf("Sexo (masculino ou feminino): ");
    		fflush(stdin);fgets(sexo,10,stdin);
    		printf("Cor dos olhos (azuis, verdes ou castanhos): ");
    		fflush(stdin);fgets(corolhos,10,stdin);
    		printf("Cor dos cabelos (louros, castanhos, pretos): ");
    		fflush(stdin);fgets(corcabelos,10,stdin);
    		system("cls");
    	}
    }
    
    void processa(){
    	for(habitantes=0;habitantes<contador;habitantes++){
    		if(idade>maioridade){
    			maioridade=idade;
    		}
    		if(sexo[habitantes]=='mulher'||idade>=18||idade<=35){
    			mulheresentre18e35=strlen(habitantes);
    			mulheresentre18e35=mulheresentre18e35+1;
    		}
    		if(corolhos[habitantes]=='verdes'||corcabelos[habitantes]=='louros'){
    			olhosverdesecabeloslouros=strlen(habitantes);
    			olhosverdesecabeloslouros=olhosverdesecabeloslouros+1;
    		}
    	}
    }
    
    void exibe(){
    	printf("Relatório de dados dos habitantes desta região:\n");
    	for(habitantes=0;habitantes<contador;habitantes++){
    	printf("%i é a maior idade entre eles;\n",maioridade);
    	printf("%i pessoas são mulheres, com idade entre 18 e 35 anos; e\n",mulheresentre18e35);
    	printf("%i indivíduos tem olhos verdes e cabelos louros.",olhosverdesecabeloslouros);
    	}
    }
    
    main(){
    setlocale(LC_ALL,"Portuguese");
    
    	cadastra();
    	processa();
    	exibe();
    
    return 0;
    }

     

  4. 7 horas atrás, rickayron disse:

    Boa noite, comentei o que achei necessário e fiz algumas correções.

    até mais.

    
    /*
    4. Elaborar um programa que armazene o nome e a altura de 15 pessoas com o uso de
    registros. O programa deve usar um menu que execute as seguintes etapas: 
    a) Cadastrar os 15 registros. 
    b) Apresentar os registros (nome e altura) das pessoas com 1.5m ou menores. 
    c) Apresentar os registros (nome e altura) das pessoas com mais de 1.5m. 
    d) Apresentar os registros (nome e altura) das pessoas com mais de 1.5m e menos de
    2.0m. 
    e) Apresentar todos os registros com a média extraída de todas as alturas armazenadas. 
    f) Sair do programa de cadastro. 
    */
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<locale.h>
    
    
    int opcao,encontrou=0;
    typedef struct cadastro{
     char nome[41];
     float altura; //,media; ->A média é apenas a soma de todas as alturas e divisão desse resultado pelo quantidade de itens, por isso não faz sentido algum o cadastro conter um campo média para cada indivíduo.
    }Cadastro;
    
    
    
    
    Cadastro cad[3]; //criar variaveis globais não e muito indicado nos patterns mais usuais no mercado.
    int j=0;
    float alturas=0;
    
    void menu(){
     fflush(stdin);
     printf("Opções:\n");
     printf("1 - cadastrar as pessoas e suas alturas\n");
     printf("2 - relação das pessoas com 1,5m ou menores\n");
     printf("3 - relação das pessoas com 1,5m\n");
     printf("4 - relação das pessoas com mais de 1,5m e menos de 2m\n");
     printf("5 - exibir relação completa de todos os cadastrados\n");
     printf("6 - sair\n");
    }
    void cadastros(){
     for(j=0;j<3;j++){
      printf("Cadastro da %iª pessoa:\n",j+1);
      printf("Nome: ");
      fflush(stdin);fgets(cad[j].nome,41,stdin);
      printf("Altura: ");
      scanf("%f",&cad[j].altura);
      alturas=alturas+cad[j].altura;
      printf("\n");
      system("cls");
     }
    }
    void listaalturasmenos15(){
    	/*
     if(cad[j].altura<=1,5){ ->isso deveria estar dentro do for e não fora ddele. E seria 1.5 e não 1,5 pois a linguagem obdece o padrão americano.
      printf("Lista com a relação das pessoas com 1,5m ou menores:\n\n");
      for(j=0;j<3;j++){
       if(cad[j].altura!='\0'){
        encontrou=1;
        printf("Registro %i:\n",j+1);
        printf("Nome: %s",cad[j].nome);
        printf("Altura: %.2f\n\n",cad[j].altura);
        }
       }
      if(!encontrou){
       printf("Não há, cadastradas nesta lista, pessoas com 1,5m ou menores!\n\n");
      }
     }
     */
     encontrou=0;
     for(j=0; j<3; j++){
     	
     	if(cad[j].altura<1.5){
     		printf("Registro %i:\n Nome: %s Altura: %.2f\n\n", j+1, cad[j].nome, cad[j].altura);
     		encontrou++;
    	 }
     }
     if( !encontrou){
     	printf("Não há, cadastradas nesta lista, pessoas com 1,5m ou menores!\n\n");
     }
     
    }
    void listaalturascom15(){
    	encontrou=0;
      for(j=0; j<3; j++){
     	
     	if(cad[j].altura==1.5){
     		printf("Registro %i:\n Nome: %s Altura: %.2f\n\n", j+1, cad[j].nome, cad[j].altura);
     		encontrou++;
    	 }
     }
       if(!encontrou){
        printf("Não há, cadastradas nesta lista, pessoas com 1,5m!\n\n");
       }
     
    }
    void listaalturasmais15(){
     /*if(2<=cad[j].altura>1,5){ Não sei se era a sua intenção criar uma expressão de programação funcional, mas de qualquer forma isso em c não vai rolar.
      printf("Lista com a relação das pessoas com mais de 1,5m e menos de 2m:\n\n");
      for(j=0;j<3;j++){
       if(cad[j].altura!='\0'){
        encontrou=1;
        printf("Registro %i:\n",j+1);
        printf("Nome: %s",cad[j].nome);
        printf("Altura: %.2f\n\n",cad[j].altura);
        }
       }
       */
       encontrou=0;
         for(j=0; j<3; j++){
     	
     	if(cad[j].altura>1.5){
     		printf("Registro %i:\n Nome: %s Altura: %.2f\n\n", j+1, cad[j].nome, cad[j].altura);
     		encontrou++;
    	 }
     }
       if(!encontrou){
        printf("Não há, cadastradas nesta lista, pessoas com mais de 1,5m e menos de 2m!\n\n");
       }
      
    }
    void exibe(){
     printf("Lista com a relação completa de todos os cadastrados e média das alturas:\n");
     for(j=0;j<3;j++){
      if(cad[j].nome[0]!='\0'){
       encontrou=1;
       printf("Registro %i:\n",j+1);
       printf("Nome: %s",cad[j].nome);
       printf("Altura: %.2f\n\n",cad[j].altura);
      }
     }
     float media=alturas/(3*1.0);
     printf("Média: %.2f\n\n",media);
      if(!encontrou){
       printf("Nada foi cadastrado ainda. Utilize a opção 1 do Menu e cadastre!\n\n");
      }
    }
    main(){
    setlocale(LC_ALL,"Portuguese");
     while(opcao!=6){
          menu();
          printf("Escolha a opcão: ");
          scanf("%i",&opcao);
          system("cls");
          switch(opcao){
             case 1:cadastros();
       break;
             case 2:listaalturasmenos15();
       break;
             case 3:listaalturascom15();
       break;
             case 4:listaalturasmais15();
       break;
             case 5:exibe();
       break;
             case 6:exit(0);
       break;
             default: printf("A opção é inválida. Informe corretamente.\n\n");
             break;
          }
       }
     cadastros();
     listaalturasmenos15();
     listaalturascom15();
     listaalturasmais15();
     exibe();
    return 0;
    }

     

    Muito obrigado, rickayron, sem dúvidas sua colaboração me ajudou bastante.

  5. Estou há dias preso nesse exercício da lista de Matrizes Heterogêneas, acredito que por um detalhe, que não encontro solução. É o seguinte: o que não funciona bem é as opções de mostrar o grupo de pessoas com determinada altura (opções 2, 3 e 4 do menu). Eu cadastro todos corretamente, mas na hora de exibir só quem tem 1,5m ou menos, ele exibe todos os cadastrados, e assim acontece com quem tem 1,5m e com quem tem entre 1,5m e menos de 2m. Ao invés de filtrar a opção solicitada, ele me mostra tudo que cadastrei, entendeu? Segue abaixo código:

    /*
    4. Elaborar um programa que armazene o nome e a altura de 15 pessoas com o uso de
    registros. O programa deve usar um menu que execute as seguintes etapas: 
    a) Cadastrar os 15 registros. 
    b) Apresentar os registros (nome e altura) das pessoas com 1.5m ou menores. 
    c) Apresentar os registros (nome e altura) das pessoas com mais de 1.5m. 
    d) Apresentar os registros (nome e altura) das pessoas com mais de 1.5m e menos de
    2.0m. 
    e) Apresentar todos os registros com a média extraída de todas as alturas armazenadas. 
    f) Sair do programa de cadastro. 
    */
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<locale.h>
    int opcao,encontrou=0;
    typedef struct cadastro{
     char nome[41];
     float altura,media;
    }Cadastro;
    Cadastro cad[15];
    int j=0;
    float alturas=0;
    void menu(){
     fflush(stdin);
     printf("Opções:\n");
     printf("1 - cadastrar as pessoas e suas alturas\n");
     printf("2 - relação das pessoas com 1,5m ou menores\n");
     printf("3 - relação das pessoas com 1,5m\n");
     printf("4 - relação das pessoas com mais de 1,5m e menos de 2m\n");
     printf("5 - exibir relação completa de todos os cadastrados\n");
     printf("6 - sair\n");
    }
    void cadastros(){
     for(j=0;j<3;j++){
      printf("Cadastro da %iª pessoa:\n",j+1);
      printf("Nome: ");
      fflush(stdin);fgets(cad[j].nome,41,stdin);
      printf("Altura: ");
      scanf("%f",&cad[j].altura);
      alturas=alturas+cad[j].altura;
      printf("\n");
      system("cls");
     }
    }
    void listaalturasmenos15(){
     if(cad[j].altura<=1,5){
      printf("Lista com a relação das pessoas com 1,5m ou menores:\n\n");
      for(j=0;j<3;j++){
       if(cad[j].altura!='\0'){
        encontrou=1;
        printf("Registro %i:\n",j+1);
        printf("Nome: %s",cad[j].nome);
        printf("Altura: %.2f\n\n",cad[j].altura);
        }
       }
      if(!encontrou){
       printf("Não há, cadastradas nesta lista, pessoas com 1,5m ou menores!\n\n");
      }
     }
    }
    void listaalturascom15(){
     if(cad[j].altura=1,5){
      printf("Lista com a relação das pessoas com 1,5m:\n\n");
      for(j=0;j<3;j++){
       if(cad[j].altura!='\0'){
        encontrou=1;
        printf("Registro %i:\n",j+1);
        printf("Nome: %s",cad[j].nome);
        printf("Altura: %.2f\n\n",cad[j].altura);
        }
       }
       if(!encontrou){
        printf("Não há, cadastradas nesta lista, pessoas com 1,5m!\n\n");
       }
     }
    }
    void listaalturasmais15(){
     if(2<=cad[j].altura>1,5){
      printf("Lista com a relação das pessoas com mais de 1,5m e menos de 2m:\n\n");
      for(j=0;j<3;j++){
       if(cad[j].altura!='\0'){
        encontrou=1;
        printf("Registro %i:\n",j+1);
        printf("Nome: %s",cad[j].nome);
        printf("Altura: %.2f\n\n",cad[j].altura);
        }
       }
       if(!encontrou){
        printf("Não há, cadastradas nesta lista, pessoas com mais de 1,5m e menos de 2m!\n\n");
       }
      
     }
    }
    void exibe(){
     printf("Lista com a relação completa de todos os cadastrados e média das alturas:\n");
     for(j=0;j<3;j++){
      if(cad[j].nome[0]!='\0'){
       encontrou=1;
       printf("Registro %i:\n",j+1);
       printf("Nome: %s",cad[j].nome);
       printf("Altura: %.2f\n\n",cad[j].altura);
      }
     }
     cad[j].media=alturas/3;
     printf("Média: %.2f\n\n",cad[j].media);
      if(!encontrou){
       printf("Nada foi cadastrado ainda. Utilize a opção 1 do Menu e cadastre!\n\n");
      }
    }
    main(){
    setlocale(LC_ALL,"Portuguese");
     while(opcao!=6){
          menu();
          printf("Escolha a opcão: ");
          scanf("%i",&opcao);
          system("cls");
          switch(opcao){
             case 1:cadastros();
       break;
             case 2:listaalturasmenos15();
       break;
             case 3:listaalturascom15();
       break;
             case 4:listaalturasmais15();
       break;
             case 5:exibe();
       break;
             case 6:exit(0);
       break;
             default: printf("A opção é inválida. Informe corretamente.\n\n");
             break;
          }
       }
     cadastros();
     listaalturasmenos15();
     listaalturascom15();
     listaalturasmais15();
     exibe();
    return 0;
    }

     

×
×
  • Criar Novo...