Jump to content
TL_prog

Vetores

Recommended Posts

TL_prog

Boa Noite pessoal,

Agradecia, se possível, a vossa ajuda. Sou novo na área da programação mais nomeadamente no C.

Tenho um exercício para fazer que consiste em calcular o maior número, o menor número e a média que são indicados pelo utilizador e mostrar quais foram os valores. Neste momento, já consegui efectuar o cálculo da média, do maior e do menor valor, no entanto, não consigo fazer o código para indicar os valores que o utilizador introduziu, sei que tem de ser pelo método de vectores, mas esta a dar erro. Vou colocar abaixo o código, podem ajudar?

#include <stdio.h>
#include <stdlib.h>
#define MAX 10
int main()
{
    int NdNotas=0;
    float nota=0;
    int contador=0;
    float somatorio=0;
    float media=0;
    float maior=0;
    float menor=20;

    printf("quantas notas sao:");
    scanf("%d",&NdNotas);


    if (NdNotas>MAX){
        printf("no maximo %d notas",MAX);
    }

    else{
        contador=NdNotas;

        while (contador>0){

            do{
                printf("insira o valor da nota: ");
                scanf("%f",&nota);
            if(nota>maior){
                    maior=nota;
            }
            if(nota<menor){
                    menor=nota;
            }
            }while (nota<0 || nota> 20);

            somatorio=somatorio+nota;
            contador--;
        }
    }
    media = (somatorio/NdNotas) ;
   printf("Media do aluno = %f\n",media);

    return 0;
}

Obrigado!

Share this post


Link to post
Share on other sites
PsySc0rpi0n

Se o code está a funcionar, não será apenas fazer o printf das variáveis menor e maior ?

Eu não testei o código, estou apenas a assumir que funciona.

E para que é necessário um vector se queres apenas imprimir o menor e o maior? Ou queres imprimir todos os valor introduzidos?


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Share this post


Link to post
Share on other sites
TL_prog

Olá, 

Muito obrigado pela resposta.

O código está a funcionar e já fiz o Printf, queria imprimir os valores todos introduzidos pelo utilizador.

Cumprimentos

Share this post


Link to post
Share on other sites
PsySc0rpi0n
Em 13/11/2019 às 14:54, TL_prog disse:

Olá,

Muito obrigado pela resposta.

O código está a funcionar e já fiz o Printf, queria imprimir os valores todos introduzidos pelo utilizador.

Cumprimentos

Nesse caso tens que pedir valor a valor e guardá-los num vector. Usa um loop for para isso. Normalmente é a aboragem mais comum.


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Share this post


Link to post
Share on other sites
TL_prog
Em 13/11/2019 às 20:48, PsySc0rpi0n disse:

Nesse caso tens que pedir valor a valor e guardá-los num vector. Usa um loop for para isso. Normalmente é a aboragem mais comum.

Obrigado!

 

Neste caso eu corrigi o código, problema resolvido, muito obrigado pela ajuda!

 

Um outro problema que surge é o facto do programa ter de permitir a editar alguns dos registos:

 

void editar(){
    struct cliente clienteAGuardar;
system("cls");
int opcao=0;
char* pesquisa;

    printf("Indique o id do cliente:");
    fflush(stdin);
    scanf("%d", &pesquisa);

    FILE *fCliente ;
    fCliente = fopen(FileCliente, "rb+");
    fseek(fCliente,0,SEEK_SET);



    while (fread(&clienteAGuardar, sizeof(struct cliente), 1, fCliente)) {
        if (strcmp(&clienteAGuardar.IDcliente,&pesquisa) == 0) {

              do{
        system("cls");
        printf("\n---------MENU---------/\n");
        fflush(stdin);
        printf("\n Que variavel deseja alterar?: ");
        printf("Opcao 1\t- Nome");
        scanf("%d",&opcao);
        if(opcao==1){
                printf("Digite novo nome:");
                fflush(stdin);
                printf(clienteAGuardar.nome);
                fwrite (&clienteAGuardar, 1, sizeof(struct cliente), fCliente);


                    }


        printf("\n Digite 1 para continar e 0 para terminar");
        scanf("%d",&opcao);
    }while(opcao!=0);

            break;
        }
    }

    fclose(fCliente);


}

No entanto, como  não sei inventei um pouco e não consigo editar qualquer valor.

Podem, por favor, ajudar? Se possivel com código uma vez que ainda sou leigo em C.

 

Cumprimentos

Share this post


Link to post
Share on other sites
PsySc0rpi0n

Eu não sei se percebi o teu código mas se calhar era mais fácil se preparares primeiro um algoritmo e depois tentar implementar esse algoritmo.

Algo assim:

- Perguntar o que quer alterar

- Ler a opção

- processar a opção (ou seja, ver qual é e actuar conforme a opção escolhida. Normalmente usa-se um switch(){case}.

- o passo anterior deve chamar uma função que tem que fazer o seguinte:

   - pesquisar o dado que se quer alterar

   - depois de o encontrar, proceder à alteração

 

Eu sei que vais dizer "ah e tal, isso é muito bonito". Mas com as coisas assim, se calhar consegues pensar melhor em formas isoladas de resolver cada passo. E no fim, articular algumas linhas de cóigo e juntar tudo!

 

Pelo que vi, e se percebi o código, falta-te o mais importante que é a pesquisa do valor a substituir. Ou seja, pedes o que pretende alterar, e depois passas logo para o passo de proceder à alteração sem pesquisar o valor a alterar!


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.