Jump to content
Fórum Script Brasil
  • 0

Duvidas "C'


Emerson111

Question

Estou fazendo uns exercícios e estou com algumas dificuldades, gostaria que o pessoa me auxiliasse:

"Supondo uma classe de 15 alunos, fazer um programa que recebe e armazena em vetores 2 notas de cada aluno. Verificar se as notas estão no intervalo de 0 a 10. Se não estiverem, insistir para que o usuário digite a nota correta. Calcular a média das notas dos 15 alunos e verificar :

se media >= 7, então imprimir APROVADO

se 4 <= media < 7, então imprimir EXAME

se media < 4, então imprimir REPROVADO."

Fiz o programa abaixo mas não estou sabendo como corrigir os erros:

#include <stdio.h>

int main()
{
{
int not1[15],not2[15],media[15],i=0;

for(i=0;i<15;i++)
{
do{
printf("Digite a primeira nota do aluno numero %d: ",i+1);
scanf("%d",&not1[i]);
if (not1[i]>10 || not1[i]<0)
printf ("Nota invalida, digite novamente novamente.\n");
(not1[i]>10 || not1[i]<0);
}while (not1[i]>10 || not1[i]<0);

do{
printf("Digite a segunda nota do aluno numero %d: ",i+1);
scanf("%d",&not1[i]);
if (not2[i]>10 || not2[i]<0)
printf ("Nota invalida, digite novamente novamente.\n");
(not2[i]>10 || not2[i]<0);
}while (not2[i]>10 || not2[i]<0);
}

{
media[i]=(not1[i]+not2[i])/2;
printf("%d ",media[i]);
}

printf("A media foi: \n %f \n",media);
if(media >= 7){
printf("\nO aluno esta APROVADO\n");
}
if(media >=5){
printf("\no aluno devera fazer novo EXAME\n");
}
else {
printf("\nO aluno esta REPROVADO\n");
}
}

return (0);
}
Preciso fazer um programa para colocar os números na ordem inversa em que foram digitados. Fiz o programa abaixo, ele está funcionado quase que satisfatoriamente. Está colocando os números na ordem inversa, mas o primeiro número que ele colocar é o 12, e só depois ordena os demais números, penso que o erro esteja nessa linha for(num=12;i>=0;i--)
#include <stdio.h>


int main()
{
int num[12];
int i;

for(num[i]=0;i<12;i++)
{
printf ("Digite um numero: ", i);
scanf("%d",&num[i]);
}

printf ("Os numeros na ordem inversa são:\n");
for(num[i]=12;i>=0;i--)
{
printf ("%d\n", num[i]);
}

return (0);
}
Como fazer um programa que "Ler 10 elementos de um vetor e colocá-los na ordem crescente." Fiz um código, mas ele tem erro que não sei como corrigir.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main()
{

int num[10];
int i;
int aux;
int parar= 0;


for(num[i]=0;i<10;i++)
{
printf ("Digite um numero: ");
scanf("%d",&num[i]);
}

while (parar=0)
{
parar=1;

for(num[i]=0; i<9; i++)
{

if (num[i]>num[i+1])
{
parar=0;
aux=num[i];
num[i]=num[i+1];
num[i+1]=aux;
}
}
}
for(num[i]=0;i<10;i++)
printf ("A ordem dos numeros digitados é: %d", num[i]);

getch ();
return (0);

}
Destes, esse é o que eu menos sei como fazer: "Considerando como dados armazenadas num vetor, as notas de uma determinada turma em uma prova, escreva um programa que imprima as notas que estão acima da média das notas."
#include <stdio.h>

int main()
{
int media[10];
int nota[10];
int i=0;

{
    for(i=0;i<10;i++)
    {
        printf ("Digite uma nota: ");
        scanf("%d",&nota[i]);
    }

}
{
    media[1]=nota[1]/2;
    printf ("A média da turma é %d: ", media[10]);
}

        return (0);
}
Escreva um programa que (a) armazena (num vetor) um conjunto de 12 números inteiros, (B) lê e substitui todos os valores nulos por 1.
#include <stdio.h>

int main()
{
int a[5];
int b[5];
int i=0;

{
for(i=0;i<5;i++)
{
printf ("Digite um numero: ");
scanf("%d",&a[i]);
}

if (i=0){
i==1;
}

b[5]= a[5];
printf ("Os numeros digitados são: %d\n", b[i]);
}
return (0);
}

Edited by Emerson111
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

1º:

Está com dois abre-chavesapós a declaração da função main();

Após a verificação se o número digitado é válido, você colocou uma expressão lóica solta alí;

Ao verificar se o número é válido, você deve usar o '&&' ao invés de '||';

Você colocou chaves entre o cálculo de média sem motivo aparente, e tal cálculo está fora do laço;

O mesmo vale para a checagem das médias e exibição da aprovação/reprovação do aluno. Está fora de um laço.

2º:

O erro ocorre porque você inicializa num=12.

'i' é a variável de controle do laço anterior, ela possui o valor 12 ao chegar no segundo laço.

Ao inicializar num[12] com o número 12, além de não servir para seu propósito, você estará acessando um local não reservado da memória, pois vetores de 12 posições vão da posição zero até a posição onze.

O correto é inicializar a variável de controle ('i') com 11.

3º:

A leitura de dados está incorreta, o mesmo erro do exercício anterior:

for(num[i]=0;i<10;i++)
Quando você atribui um valor à num, você está atribuindo ao elemento 'i' do vetor. Não é isso que você quer. Você estará usando a variável 'i' para controlar o laço, portanto, deve inicializar ela. Além disso, quando você faz
while (parar=0)
você está atribuindo o valor zero à variável 'parar'. O operador de igualdade é o
==
Me parece um Bubble Sort, certo? A maneira correta de se fazer ele seria
while (parar == 0){
        parar = 1;
        for(i = 0; i < 9; i++){
            if(num[i] > num[i+1]){
                parar = 0;
                aux = num[i];
                num[i] = num[i+1];
                num[i+1] = aux;
            }
        }
    }

Obviamente, a variável 'parar' deve ser inicializada com zero antes dessa ordenação.

Corrija a inicialização das variáveis de controle dos laços.

4º:

O exercício não fala de quantas notas deve ser, mas consideremos 10.

Você deve descobrir qual a média aritmética das notas. Armazene-a em uma variável.

Após, percorra novamente o vetor de notas fazendo comparações. Se a nota for superior á média, exiba-a.

Lembre-se que provavelmente a média será float.

5º:

Valores nulos são iguais a zero. Portanto, leia os valores, e percorra novamente comparando.

Lembrando que o operador '=' é um operador de atribuição, não igualdade. O operador de igualdade é o '=='.

Em seu algoritmo, você sequer comparou o elemento do vetor... você comparou a variável 'i', que servia para controlar o laço. Além disso, o if irá comparar apenas um elemento se estiver fora de um laço.

Ah, e é um único vetor, não dois.

Poste o progresso.

Link to comment
Share on other sites

  • 0

Olá, segue a resolução do primeiro exercicio que você postou. Seria interessante que você colocasse da próxima vez, uma dúvida por tópico, ao invés de postar varios exercicios em um mesmo...

Você estava se perdendo na hora de fazer a média, precisava fazer um laço de repetição, pois do jeito que estava fazia apenas a media de 1 aluno.

Percebi também que tinha "chaves" a mais no seu código, Identação é fundamental para não se perder durante o desenvolvimento.

#include <stdio.h>
#include <stdlib.h>

int main(){

  int not1[15],not2[15],i,media[15],j;
  

  
//inseri 1 nota do aluno 
 for(i=0;i<15;i++)
 {  
        printf("Digite a primeira nota do aluno numero %d:",i+1);
        scanf("%d",&not1[i]);                
 }                        
                       
 //inseri 2 nota do aluno 
 for(i=0;i<15;i++)
 {  
       printf("Digite a segunda nota do aluno numero %d: ",i+1);
       scanf("%d",&not2[i]);                
 }      
                    
 //calcula media do aluno: 
 for(i=0;i<15;i++)
 {  
    printf("\n");              
    media[j]= (not1[i]+ not2[i]) /2;
    printf("Aluno: %d\n",i);
    printf("Media: %d\n",media[j]);
    if(media[j] >= 7){
       printf("Aprovado\n");}       
    if(media[j] >=4 || media[j] >=7){
       printf("Exame\n");}
    if(media[j] < 4){
       printf("Reprovado\n");}                       
    printf("\n");
 }

   system("pause"); 
   return (0);

}//main

Edited by Prog_Junior
Link to comment
Share on other sites

  • 0

Abaixo, segue resolução do exercicio numero 2 postado. Leia com atenção as dicas do mJi, que são sempre valiosas e construtivas.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    
int num[12];
int i;

for(i=0;i<12;i++)
{
   printf ("Digite %d numero: ",i+1);
   scanf("%d",&num[i]);
}

printf ("Os numeros na ordem inversa são:\n");

for(i=11;i>=0;i--)
{
  printf ("%d\n", num[i]);
}


system("pause");
return (0);

}//main

Edited by Prog_Junior
Link to comment
Share on other sites

  • 0

Segue abaixo uma das maneiras de fazer a ordenação dentro do vetor:

#include<stdio.h>
#include<stdlib.h>

 int main () {
     
     int vetor[10],aux,j,i;
          
     for(i=0;i<10;i++){
       printf("Digite %d valor:",i+1);
       scanf("%d",&vetor[i]);}
          
     
     for(i=0;i<10;i++)
     {
        for(j=0;j<9;j++)
        {
               if(vetor[j] > vetor[j+1])/*se a posição atual for maior que a posição posterior*/
               {
                  aux=vetor[j+1];//auxiliar recebe posição posterior
                  vetor[j+1]=vetor[j];//P.Posterior recebe P.Atual
                  vetor[j]=aux;//P.Atual
               }   
        }         
     }
        
      printf("vetor ordenado:");    
      for(i=0;i<10;i++){ 
      printf("\n");   
      printf("%d",vetor[i]);}
        
      printf("\n");
      system("pause");
     
} //main

Link to comment
Share on other sites

  • 0

Referente ao exercicio 4 postado, como você não informou a quantidade de notas da turma e nem a média, levei em conta, os seguinte dados:

total de notas = 5;

media = 6;

#include<stdio.h>
#include<stdlib.h>

int main (){
        
    int vetor[5] = {10, 8, 9, 7, 4};
    int i;
    
    for(i=0;i<5;i++)
    {
        if(vetor[i] > 6){
          printf("Notas Acima da Media: %d\n",vetor[i]);
          }
    } 

 system("pause");    
 return 0;   
    
}//main
E por ultimo o exercicio 5, espero que possa ter te ajudado. Feliz Natal.
#include<stdio.h>
#include<stdlib.h>


 int main() {
     
     
    int v[12],i; 
    
     //preenche o vetor 
     for(i=0;i<12;i++){
       printf("Informe %d numero:",i+1);
       scanf("%d",&v[i]);}    
    
        
     //verifica se existe numero nulo(zero) no vetor
     for(i=0;i<12;i++){
         if(v[i] == 0){
         v[i] = 1;}
     }
     
     //imprime vetor
        for(i=0;i<12;i++){
        printf("Vetor: %d\n",v[i]);}
        
   system("pause");
   return 0;     
        
}//main

Edited by Prog_Junior
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...