Ir ao conteúdo

Posts recomendados

Postado

estou tendo um problema no final da execução do meu programa. quando chega em uma linha de codigo especifica ele para e da erro.

aparece uma msg do windows e fecha o executor. msg do windows: "o windows esta procurando uma solução para o problemas. um problema fez com que o programa parasse....".

segue o codigo: problema la no final do codigo.

#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[]){
    float pesoAltura[4][1], somaM=0, somaF=0, mediaPeso=0, maisAlta=0;
    char nomeSexo[4][1];
    char nomeAlta; 
    int contM=0, contF=0;
    
    
    for (int lin = 0; lin < 2; lin++){
        for (int col = 0; col < 2; col++){
            
            printf("digite seu nome:");
            scanf("%s",&nomeSexo[lin][col]);
            
            printf("digite sua altura:");
            scanf("%f",&pesoAltura[lin][col]);
            
            if(pesoAltura[lin][col] > maisAlta){
                maisAlta = pesoAltura[lin][col];
                nomeAlta = nomeSexo[lin][col];
                printf("asdfasdfasdfasdfasdfasdfasdfasdf \n");
            }
            
            printf("digite seu peso:");
            scanf("%f",&pesoAltura[lin][col+1]);
            mediaPeso = mediaPeso + pesoAltura[lin][col];
            
            printf("digite M para masculino ou F para feminino:");
            scanf("%s",&nomeSexo[lin][col+1]);
            
            
            if(nomeSexo[lin][col+1] == 'm'){
               contM++ ;
               printf("%d \n",contM);
               
            }else{
                contF++ ;
                   printf("%d \n",contF);
            }
        }
    }
    somaM = contM*100/4;
    somaF = contF*100/4;
    mediaPeso = mediaPeso/4;
    printf("a porcetagem de homens e: %f, e de Mulheres sao %f  \n", somaM, somaF);
    printf("a media de peso: %f\n",mediaPeso);
    printf("a pessoa mais alta e %s com %f", nomeAlta, maisAlta);  -- nessa linha que acontece o erro, que para a execução. fiz alguns teste, quando tiro o %s ou troco por %c da certo mais com String da erro
    
    
    return 0;
}

 

Postado

Nas variáveis "pesoAltura" e "nomeSexo", você está definindo 4 linhas e 1 coluna, e na rotina, você está fazendo a leitura de 2 linhas e 2 colunas.

Outro problema, é que você está definindo apenas 1 char para armazenar o nome.

Esses dois problemas resultarão em buffer overflow.

 

Para o código ficar mais limpo, aconselho separar as variáveis em:

 

float peso[4];

float altura[4];

char nome[4][128]; // 4 linhas com 127 caracteres em cada (desconsiderando o finalizador de string)

char sexo[4];

 

Desta forma, precisará apenas fazer a leitura por linha:

 

"for (int lin = 0; lin < 4; lin++)"

Visitante
Este tópico está impedido de receber novas respostas.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!