Ir ao conteúdo
  • Cadastre-se

C++ problema com vetores em c++


Bcam

Posts recomendados

eu sei que da forma que estou fazendo só vai imprimir na tela a posição que eu colocar no printf... mas não sei como fazer para mostrar a posição de onde ta a matricula do maior e do menor aluno.

 

 

 

#include <stdio.h>
main(){
int vetm[3],vetal[3],i,menor,maior,mmenor,mmaior;

for(i=0;i<3;i++){
printf("insira a matricula do aluno\n ");
scanf("%d",&vetm);
printf("insira a altura do aluno \n");
scanf("%d",&vetal);}
    
       maior = vetal[0];
    for(i=1;i<3;i++){
    if(vetal > maior){
    maior = vetal;    
       }
                   printf("\n altura do maior aluno: %d \n  ",maior);

//mostrar a matricula da posição certa.
                printf("matricula do maior aluno: %d\n",vetm[0]);
        }
        
                menor=vetal[1];
    for(i=1;i<3;i++){
    if(vetal < menor){
        menor = vetal;}
        }
            printf("\n altura do menor aluno: %d \n  ",menor);
            printf("matricula do menor aluno: %d\n",vetm[1]);
        
}

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

@Bcam Olá. A princípio é preciso fazer a leitura dos valores de maneira adequada

Para a altura você está usando um vetor de inteiros. Recomendo fazer uso de um vetor de um tipo flutuando (float ou double)

Logo, como gosto de frisar esse ponto quando o assunto é vetores, recomendo fazer uso de uma constante que pode ser criada com a diretiva define:

#define TAM 3

Em seguida, fazendo uso de um vetor de float para armazenar as alturas, suas variáveis poderiam ficar assim:

int vetm[TAM], i;
float menor, maior; // menor e maior altura
int m_menor, m_maior; 
float vetal[TAM]; // vetor para a altura

Em seguida, a leitura dos valores seriam dessa forma:

for (i = 0; i < TAM; i++) {
    printf("insira a matricula do aluno: ");
    scanf("%d", &vetm[i]);
    printf("insira a altura do aluno: ");
    scanf("%f", &vetal[i]);
}

E, para finalizar, para você encontrar a maior altura, seria isso:

maior = menor = vetal[0];
for (i = 0; i < TAM; i++) {
    if (vetal[i] > maior) {
        maior = vetal[i];        
    }
    if (vetal[i] < menor) {
        menor = vetal[i];       
    }
}

Só que na parte de fazer a associação entra a maior altura e número da matrícula vou deixar para você fazer

Não seria nada adequado eu passar a resposta completa para esse exercício!

Se deu para entender a lógica, ok!

Caso tiver dúvidas é só perguntar 

Link para o comentário
Compartilhar em outros sites

@Bcam     para postar seu código é melhor usar o botão   <>  que está lá na barra de ferramentas da janela de postar , pois senão seu código fica faltando alguns caracteres como os  [ i ]   que sumiram do seu código ,  e seu código está bom , a lógica não está muito boa ,  então seu código com algumas modificações poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
int main(){
    int vet_m[3],vet_al[3],i,menor,maior=0,cont,cont2;
    for(i=0;i<3;i++){
        printf("insira a matricula do aluno -: ");
        scanf("%d",&vet_m[i]);
        printf("insira a altura do aluno ----: ");
        scanf("%d",&vet_al[i]);
        if(i==0)menor=vet_al[i];
        if(maior < vet_al[i]){maior=vet_al[i];cont=i;}
        if(menor > vet_al[i]){menor=vet_al[i];cont2=i;}
    }
    printf("\n");
    printf("altura do maior aluno -----: %d\n"  ,maior       );
    //mostrar a matricula da posição certa.
    printf("matricula do maior aluno --: %d\n\n",vet_m[cont] );
    printf("altura do menor aluno -----: %d\n"  ,menor       );
    printf("matricula do menor aluno --: %d\n\n",vet_m[cont2]);
    system("pause");
} 

 

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