Ir ao conteúdo

C Problema em Programa com Vetores


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado
/*Construa um programa que permita fazer a estatística das notas de uma turma :

• A média das notas
• A nota mais baixa
• A nota mais alta
• Quantas notas com mais de 10 valores

O programa deverá pedir inicialmente o número de notas(máximo 10) que o utilizador pretende inserir e
as notas deverão ser guardadas num vector.*/

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()

{
	float nota[10] = { 10, 12, 11, 8, 5, 14, 11, 12, 9, 18 };
	float media = 0;
	float soma = 0;
	float max = nota[0];
	float min = nota[0];
	int n = 0;
	int mais_de_10 = 0;
	char continuar = 'c';

	do
	{

		printf("\n Insira o numero de notas que pretender analisar. \n");
		scanf("%i", &n);

		while (n < 0 || n > 10)
		{
			printf("\n O numero de notas eh no maximo 10!!! \n");
			printf("\n Insira o numero de notas que pretender analisar. \n");
			scanf("%i", &n);
		}

		for (int i = 0; i < n; i++) // Para Calcular a mádia.
		{
			soma += nota[i];
		}

		media = soma / n;

		printf("\n A media das notas eh de %1.1f", media);


		for (int i = 1; i < n; i++) //  Para ver a nota mais alta.
		{
			if (nota[i] > max)
			{
				max = nota[i];
			}
		}

		printf("\n A nota mais Alta eh %1.1f", max);


		for (int i = 1; i < n; i++) //  Para ver a nota mais Baixa.
		{
			if (nota[i] < min)
			{
				min = nota[i];
			}
		}

		printf("\n A nota mais Baixa eh %1.1f ", min);


		for (int i = 1; i < n; i++) //  Para ver quantas notas com mais de 10 valores.
		{
			if (nota[i] > mais_de_10)
			{
				mais_de_10 = nota[i];
			}
		}

		printf("\n Existem %1.0f notas com mais de 10 valores. \n", mais_de_10);

	}

	while (continuar == 's');

	system("pause");
}

Boa tarde, estou com um problema no ultimo objectivo deste programa ( "Quantas notas com mais de 10 valores" ). O resto funciona tudo, só não estou a conseguir implementar o ultimo ciclo for de maneira correta. Alguém pode ajudar?

  • Amei 1
Postado

@Infante98    o for está tudo bem , mas dentro do if sim , tem um errinho , pois você está atribuindo o valor da maior notas a variável mais_de_10 , e o que precisa é ir incrementando essa mesma variável assim  :

if (nota[i] > 10){
    //mais_de_10 = nota[i];
    mais_de_10++;
}

 

  • Curtir 1
Postado

 

@Infante98    desculpe , eu não testei e ficou outro erro  , ali , no if :

if (nota[i] > mais_de_10)    /* precisa comparar com o valor 10 */
  
assim :

if(nota[i] > 10)
    mais_de_10++;

e também para imprimir os tipo int , use %d , pois o mais_de 10 é int e não float nem long float nem double ,  e seu código com algumas modificações poderia ser assim  :

/*Construa um programa que permita fazer a estatística das notas de uma turma :

• A média das notas
• A nota mais baixa
• A nota mais alta
• Quantas notas com mais de 10 valores

O programa deverá pedir inicialmente o número de notas(máximo 10) que o utilizador pretende inserir e
as notas deverão ser guardadas num vector.*/

#define _CRT_SECURE_NO_WARNINGS
#define _WIN32_WINNT 0X0501
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <conio.h>
#include <windows.h>
#define cls system("cls");
#define H GetStdHandle(STD_OUTPUT_HANDLE)
void textcolor_2(int l, int f){SetConsoleTextAttribute(H,l+(f<<4));}
int main(){
    float nota[10] = { 10, 12.5, 11.7, 8.9, 5.8, 14, 11, 12, 9.3, 18.1 };
    float media,soma,max,min;
    int n,i,mais_de_10;
    char continuar='S';
    do{
        cls
        do{
            textcolor_2(11,0);
            printf("\nInsira o numero de notas que pretender analisar : ");
            scanf ("%d",&n);
            if(n<1 || n>10){
                textcolor_2(12,15);
                printf("\n  O numero de notas eh no maximo 10!!!  \n");
            }
        }while(n<1 || n>10);
        soma=0;
        for(i=0; i<n; i++){   // Para Calcular a mádia.
            soma += nota[i];
        }
        mais_de_10=0;
        max=0;
        min=nota[0];
        media = soma / n;
        textcolor_2(14,9);
        printf("\n  A media das notas %c de %.2f  \n\n",130,media);
        for(i=0; i<n; i++){
            if(nota[i] >= max)    /*  Para ver a nota mais alta. */
                max = nota[i];
            else
                min = nota[i];    /*  Para ver a nota mais baixa. */
        }
        textcolor_2(12,15);
        printf("  A nota mais Alta  %c    %.2f  \n\n",130,max);
        textcolor_2(11,12);
        printf("  A nota mais Baixa %c     %.2f  \n\n",130,min);
        for(i=0;i<n;i++)          /* Para ver quantidade de  nota maior que 10 . */
            if(nota[i] > 10)
               mais_de_10++;
        textcolor_2(11,0);
        printf("Existem %d notas com o valor Maior Que 10. \n\n",mais_de_10);
        textcolor_2(14,0);
        printf("Quer Fazer Outra M%cdia S/N ",130);
        continuar = (char)getch();
    }while(toupper(continuar) == 'S');
    printf("\n\n");
    system("pause");
    printf("\n\n\n");
    textcolor_2(10,12);
    return 0;
}

 

  • Obrigado 1

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