Ir ao conteúdo

Posts recomendados

Postado

Olá

Alguém sabe o porquê de o meu programa travar ao atribuir valor a variável, alguma forma de contornar?

segue primeiro o código rodando normal, depois o código onde atribuo valor a variável e trava.

 

#include<stdio.h>
int main(){

int qtdalun, *vet, i, nota[qtdalun], j, maior;           //Variáveis

printf("\nNumero de alunos: ");                   //Recebe a quantidade de posições do vetor qtd de alunos
scanf("%d", &qtdalun);

vet = (int*) malloc(qtdalun * sizeof(int));      //Aloca dinamicamente


for(i = 0, j=0; i < qtdalun; i++, j++){
        printf("%do. aluno ", i + 1);
        printf("\nNota: ");
        scanf("%d", &nota[j]);                           //Recebe a nota do aluno
        if(nota[j]<0 ||nota[j]>100){
            printf("\nValor da nota deve ser entre 0-100");
            i--;
        }
        }
}

 

 

 

 

#include<stdio.h>
int main(){

int qtdalun, *vet, i, nota[qtdalun], j, maior ;     //Variáveis

printf("\nNumero de alunos: ");             //Recebe a quantidade de posições do vetor qtd de alunos
scanf("%d", &qtdalun);

vet = (int*) malloc(qtdalun * sizeof(int)); //Aloca dinamicamente

 

maior=0;                //Quando atribuo ele trava!

for(i = 0, j=0; i < qtdalun; i++, j++){
        printf("%do. aluno ", i + 1);
        printf("\nNota: ");
        scanf("%d", &nota[j]);              //Recebe a nota do aluno
        if(nota[j]<0 ||nota[j]>100){
            printf("\nValor da nota deve ser entre 0-100");
            i--;
        }
        }
}
 

 

Postado

Dando uma olhada rápida, acredito que o problema está na declaração do vetor.

 

Você pode resolver isso modificando o local da declaração (int nota[qtdalun]), para ser logo abaixo do scanf... Ou então usar ponteiro, no lugar de vetor.

Postado

Obrigado @vangodp foi esclarecedor! 

Segue código rodando redondo:

 

#include<stdio.h>
int main(){

int qtdalun, *vet, i, j, nota[1000], maior=0, menor;             //Variáveis

 

printf("\nNumero de alunos: ");                                          //Recebe a quantidade de alunos
scanf("%d", &qtdalun);

 

vet = (int*) malloc(qtdalun * sizeof(int));                             //Aloca dinamicamente

 

for(i = 0, j=0; i < qtdalun; i++, j++){
        printf("\n%do. aluno ", i + 1);
        printf("\nNota: ");
        scanf("%d", &nota[j]);                                                  //Recebe a nota do aluno
        if(nota[j]<0 ||nota[j]>100){
            printf("\nValor da nota deve ser entre 0-100");
            i--;
        }
        if(nota[j]>maior) maior=nota[j];
        if(nota[j]<menor) menor=nota[j];
}

printf("\nMaior nota da turma: %d", maior);
printf("\nMenor nota da turma: %d", menor);

 

free(vet);                                                                              //Libera a memória!

 

}
 

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!