Ir ao conteúdo
  • Cadastre-se

C soma sobrenatural em vetor


James_Mulder

Posts recomendados

o problema ocorre no case 4. caso algum numero digitado foi igual a 50, ele deve mostrar em que posição se encontra. mas só  funciona se for digitado 50 na posicao 0, de resto ele mostra a posicao em que foi digitado (por exemplo "50 na posicao 2") e em seguida mostra a a mensagem do else "\n50 nao aparece no vetor" a qnt de vezes igual a posicao do valor 50 (eu sei, ficou dificl de entender)

 

o problema é so no case 4, desconsiderem o resto porque ainda está em produção 

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

int main()
{
    int vetorA[10], vetorB[10];
    int i, x, soma10=0;
    int op;

    for (i=0; i<10; i++){
    printf("Valor %d do vetor: ", i+1);
    scanf("%d", &vetorA[i]);
    }
    printf("opção: ");
    scanf("%d", &op);

    switch(op){

        case 1:
            for(i=0; i<10; i++){
                vetorB[i]=vetorA[i];
                printf("\n%d", vetorB[i]);}
                break;
        case 2:

        case 3:
            printf("posicao 7 %d\nposicao 9 %d", vetorA[7], vetorA[9]);
            break;

        case 4:
            for(i=0; i<10; i++){
                if(vetorA[i]==50){
                    printf("\n50 na posicao %d", i);
                break;}
                else
                    printf("\n50 nao aparece no vetor");
                    }break;
        case 5:
            for(i=0; i<10; i++){
                if(vetorA[i]==10){
                    soma10++;}}
                if(soma10==1){
                    printf("10 aparece uma vez no vetor A");
                        break;}
                else if(soma10>=2){
                    printf("\n10 aparece %d vezes no vetor A", soma10);
                        break;}
                else{
                    printf("10 nao aparece nenhuma vez no vetor A");
                    break;}

}}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@James_Mulder      ele está imprimindo o else por que toda vez que não é igual a 50 ele vai no else ,  assim em todas as posições iniciais que estiverem sem o valor 50 , essa mensagem será impressa na tela , e quando encontra o 50 ele imprime que está em tal posição ,  então seria melhor usar uma variável para informar que encontrou esse 50 , e em seguida sair do loop for ,  e aí sim imprimir a mensagem correta ,  comparando a informação daquela variável    , então seu código poderia ser assim  :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
int main(){
    system("color ec");/* hexadecimal cor da tela cor da letra */
    int vetorA[10],vetorB[10];
    int i,x,op,soma10=0,flag;
    for(i=0; i<10; i++){
        printf("Valor %d do vetor: ",i+1);
        scanf("%d",&vetorA[i]);
    }
    do{
        printf("\nOpcoes -> 1  2  3  4  5  terminar\n");
        printf("opção: ");
        /*scanf("%d",&op);*/
        op=getch()-48;/* sem teclar enter */
        switch(op){
        case 1:
            for(i=0; i<10; i++){
                vetorB[i]=vetorA[i];
                printf("\n%d",vetorB[i]);
            }
            break;
        case 2:
            break;
        case 3:
            printf("posicao 7 %d\nposicao 9 %d",vetorA[7], vetorA[9]);
            break;
        case 4:
            flag=0;
            for(i=0; i<10; i++){
                if(vetorA[i]==50){
                    flag=1;
                    break;
                }
            }
            if( flag ){
                printf("\n\n50 na posicao %d\n",i);
            }
            else
                printf("\n\n50 nao aparece no vetor\n");
            break;
        case 5:
            for(i=0; i<10; i++){
                if(vetorA[i]==10){
                    soma10++;
                }
            }
            if(soma10==1){
                printf("10 aparece uma vez no vetor A");
                break;
            }
            else
                if(soma10>1){
                    printf("\n10 aparece %d vezes no vetor A",soma10);
                }
                else{
                    printf("10 nao aparece nenhuma vez no vetor A");
                }
            break;
        default :
            if(op!=68&&op!=36)printf("\nOpcao Invalida !\n");
        }
    }while(op!=68&&op!=36);
    printf("\n\n     Tecle !\n\n\n");
    while( ! kbhit());
    return 0;
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!