Ir ao conteúdo

Posts recomendados

Postado

eu estou com problema calcular media do vetor que se encontra no switch case 3

 

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

int main()
{
    int tamanho_vetor;
    printf("Digite o Numero de Elementos do Vetor: ");
    scanf("%d", &tamanho_vetor);
    system("cls");
    float soma=0, media;
    int vetor[tamanho_vetor], maior, menor, i, x, resp;
    for(i=0; i<tamanho_vetor;i++)
        {
        printf("Digite os Valores do Vetor: ");
        scanf("%d", &vetor);
        }
    system ("cls");
    do{
        printf("\nDigite '1' Para Mostrar o Maior Elemento do Vetor\n");
        printf("\nDigite '2' Para Mostrar o Menor Elemento do Vetor\n");
        printf("\nDigite '3' Para Mostrar a Media do Vetor\n");
        scanf("%d", &x);
        switch(x)
        {    
            case 1: 
                maior=vetor[0];
                for(i=1;i<tamanho_vetor; i++)
                {
                if(vetor>maior)
                {
                    maior=vetor;
                }
                }
                printf("\nMaior Elemento: %i", maior);
                break;
            case 2:
                menor=vetor[0];
                for(i=1;i<tamanho_vetor;i++)
                {
                    if(vetor<menor){
                        menor=vetor;
                    }
                    
                }
                printf("\nMenor Elemento: %i", menor);
                break;
            case 3:
                float vetor_tamanho=tamanho_vetor;
                for(i=1;1<tamanho_vetor; i++)
                {
                    
                }
                for(i=1; i<tamanho_vetor; i++){
                    soma+=vetor;
                    
                }
                media=soma/tamanho_vetor;
                printf("\nMedia dos Valores do Vetor: %2.f", media);
                break;
        }
    printf("\n\nPara Voltar ao Menu Tecle '1', Para Sair Tecle 0: ");
    scanf("%d", &resp);
    system("cls");
    }while(resp==1);
    system("cls");
    system("pause");
    return 0;
    

}

  • Curtir 1
Postado

@Sr.Bincow @Sr.Bincow  no seu case 3 tem dois loop for  um não tem nada dentro dele , mas na verdade tem algo dentro dele e é isso que está bugando tudo ,  sugiro comentar essas Quatro linhas desse loop for , e creio que seu código vai compilar e rodar certo .experimente . 

/*float vetor_tamanho=tamanho_vetor;
//for(i=1;1<tamanho_vetor; i++)
//{
//                
//}

 

Postado
11 minutos atrás, devair1010 disse:

@Sr.Bincow @Sr.Bincow  no seu case 3 tem dois loop for  um não tem nada dentro dele , mas na verdade tem algo dentro dele e é isso que está bugando tudo ,  sugiro comentar essas duas linhas desse loop for , e creio que seu código vai compilar e rodar certo .experimente . 

obrigado corrigi isso, mas ele continua dando problema e não calculando a media

  • Curtir 1
Postado
#include <stdlib.h>
#include<stdio.h>
#include <limits.h>

int main() {
    int tamanho_vetor = 0;
    int *vetor = NULL;
    int maior = INT_MIN;
    int menor = INT_MAX;
    int opcao = 0;
    
    double media = 0.0;

    printf("Digite o Numero de Elementos do Vetor: ");
    scanf(" %i%*c", &tamanho_vetor);
//    system("cls");

    vetor = malloc(tamanho_vetor * sizeof(int));

    for (int i = 0; i < tamanho_vetor; i++) {
        printf("Digite o valor [ %i de %i ]: ", (i + 1), tamanho_vetor);
        scanf(" %i%*c", &vetor[i]);
    }

    do {
//        system("cls");
        printf("Digite '1' Para Mostrar o Maior Elemento do Vetor \n");
        printf("Digite '2' Para Mostrar o Menor Elemento do Vetor \n");
        printf("Digite '3' Para Mostrar a Media do Vetor \n");
        printf("> ");
        scanf(" %i%*c", &opcao);

        switch (opcao) {
            case 1:
                for (int i = 0; i < tamanho_vetor; i++) {
                    if (vetor[i] > maior) {
                        maior = vetor[i];
                    }
                }
                printf("Maior Elemento: %i \n", maior);
                break;
            case 2:
                for (int i = 0; i < tamanho_vetor; i++) {
                    if (vetor[i] < menor) {
                        menor = vetor[i];
                    }

                }
                printf("Menor Elemento: %i \n", menor);
                break;
            case 3:
                for (int i = 0; i < tamanho_vetor; i++) {
                    media += vetor[i];
                }
                media /= tamanho_vetor;
                printf("Media dos Valores do Vetor: %2.f \n", media);
                break;
        }
        printf("Para Voltar ao Menu Tecle '1', Para Sair Tecle 0: ");
        scanf(" %i%*c", &opcao);
//        system("cls");
    } while (opcao == 1);

//    system("cls");
//    system("pause");

    return 0;
}

 

  • Curtir 2
Postado

@AdrianoSiqueira

6 minutos atrás, AdrianoSiqueira disse:

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

int main() {
    int tamanho_vetor = 0;
    int *vetor = NULL;
    int maior = INT_MIN;
    int menor = INT_MAX;
    int opcao = 0;
    
    double media = 0.0;

    printf("Digite o Numero de Elementos do Vetor: ");
    scanf(" %i%*c", &tamanho_vetor);
//    system("cls");

    vetor = malloc(tamanho_vetor * sizeof(int));

    for (int i = 0; i < tamanho_vetor; i++) {
        printf("Digite o valor [ %i de %i ]: ", (i + 1), tamanho_vetor);
        scanf(" %i%*c", &vetor[i]);
    }

    do {
//        system("cls");
        printf("Digite '1' Para Mostrar o Maior Elemento do Vetor \n");
        printf("Digite '2' Para Mostrar o Menor Elemento do Vetor \n");
        printf("Digite '3' Para Mostrar a Media do Vetor \n");
        printf("> ");
        scanf(" %i%*c", &opcao);

        switch (opcao) {
            case 1:
                for (int i = 0; i < tamanho_vetor; i++) {
                    if (vetor[i] > maior) {
                        maior = vetor[i];
                    }
                }
                printf("Maior Elemento: %i \n", maior);
                break;
            case 2:
                for (int i = 0; i < tamanho_vetor; i++) {
                    if (vetor[i] < menor) {
                        menor = vetor[i];
                    }

                }
                printf("Menor Elemento: %i \n", menor);
                break;
            case 3:
                for (int i = 0; i < tamanho_vetor; i++) {
                    media += vetor[i];
                }
                media /= tamanho_vetor;
                printf("Media dos Valores do Vetor: %2.f \n", media);
                break;
        }
        printf("Para Voltar ao Menu Tecle '1', Para Sair Tecle 0: ");
        scanf(" %i%*c", &opcao);
//        system("cls");
    } while (opcao == 1);

//    system("cls");
//    system("pause");

    return 0;
}

 

caramba cara muito obrigado, eu não sabia que existia esse tipo de função v = malloc(tamanho_vetor * sizeof(int));. E ainda melhorou meu codigo, obrigado por dedica seu tempo me ajudando

  • Curtir 1
Postado
6 minutos atrás, Sr.Bincow disse:

caramba cara muito obrigado, eu não sabia que existia esse tipo de função v = malloc(tamanho_vetor * sizeof(int));. E ainda melhorou meu codigo, obrigado por dedica seu tempo me ajudando

não quero ser chato mas sempre que aloca memoria o aconselhável não é usar o free para liberar a memoria?

 

  • Curtir 1
  • Obrigado 1
Postado
1 minuto atrás, herbertbahia disse:

não quero ser chato mas sempre que aloca memoria o aconselhável não é usar o free para liberar a memoria?

 

cara eu sinceramente não sei, eu sou bem leigo

  • Curtir 1
Postado

Segue uma versão mais robusta:

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

#if defined(_WIN32)
#define esperar system("pause")
#define limparTela system("cls")
#elif defined(__linux__)
#define esperar system("read null")
#define limparTela system("clear")
#endif

int menu();

void preencherVetor(int *vetor, int tamanho);

void preencherVetorAutomaticamente(int *vetor, int tamanho, int valorMinimo, int valorMaximo);

int getMaior(const int *vetor, int tamanho);

int getMenor(const int *vetor, int tamanho);

double getMedia(const int *vetor, int tamanho);

void exibirVetor(const int *vetor, int tamanho);

int main() {
    int *vetor = NULL;
    int tamanho = 0;
    int opcao = 0;

    limparTela;
    printf("Digite o numero de elementos do vetor: ");
    scanf(" %i%*c", &tamanho);

    vetor = malloc(tamanho * sizeof(int));
    preencherVetorAutomaticamente(vetor, tamanho, 0, 10);

    do {
        opcao = menu();
        limparTela;
//        exibirVetor(vetor, tamanho);

        switch (opcao) {
            case 0:     // Sair
            default:    // Opcao invalida
                break;
            case 1:     // Mostrar maior
                printf("Maior elemento: %i \n", getMaior(vetor, tamanho));
                esperar;
                break;
            case 2:     // Mostrar menor
                printf("Menor elemento: %i \n", getMenor(vetor, tamanho));
                esperar;
                break;
            case 3:     // Mostrar media
                printf("Media dos elementos: %.2f \n", getMedia(vetor, tamanho));
                esperar;
                break;
        }
    } while (opcao != 0);

    free(vetor);
    return EXIT_SUCCESS;
}

int menu() {
    int opcao = 0;

    limparTela;
    printf(">> Menu Principal \n");
    printf("[ 1 ] - Exibir o maior elemento \n");
    printf("[ 2 ] - Exibir o menor elemento \n");
    printf("[ 3 ] - Exibir a media dos elementos \n");
    printf("[ 0 ] - Sair \n");
    printf("> ");
    scanf(" %i%*c", &opcao);

    return opcao;
}

void preencherVetor(int *vetor, int tamanho) {
    for (int i = 0; i < tamanho; ++i) {
        printf("Digite o valor [ %i de %i ]: ", (i + 1), tamanho);
        scanf(" %i%*c", &vetor[i]);
    }
}

void preencherVetorAutomaticamente(int *vetor, int tamanho, int valorMinimo, int valorMaximo) {
    srandom(time(NULL));

    for (int i = 0; i < tamanho; ++i) {
        vetor[i] = (int) random() % (valorMaximo + 1 - valorMinimo) + valorMinimo;
    }
}

int getMaior(const int *vetor, int tamanho) {
    int maior = INT_MIN;

    for (int i = 0; i < tamanho; ++i) {
        if (vetor[i] > maior) {
            maior = vetor[i];
        }
    }

    return maior;
}

int getMenor(const int *vetor, int tamanho) {
    int menor = INT_MAX;

    for (int i = 0; i < tamanho; ++i) {
        if (vetor[i] < menor) {
            menor = vetor[i];
        }
    }

    return menor;
}

double getMedia(const int *vetor, int tamanho) {
    double media = 0.0;

    for (int i = 0; i < tamanho; ++i) {
        media += vetor[i];
    }

    return media / tamanho;
}

void exibirVetor(const int *vetor, int tamanho) {
    printf("[");

    for (int i = 0; i < tamanho; ++i) {
        printf("%i", vetor[i]);

        if (i + 1 < tamanho) {
            printf(", ");
        }
    }

    printf("] \n");
}

@herbertbahia Bem lembrado.

  • Curtir 2

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!