Jump to content

Vetor em C


LauraC

Recommended Posts

"Escreva um programa que leia 20 notas (valores reais entre 0 e 10), armazene-as em um vetor e então diga se uma determinada nota x digitada pelo usuário existe no vetor. O programa deve repetir o procedimento de leitura de x e busca de x no vetor até que o usuário digite um valor negativo".

Existe algum erro que não consigo reconhecer quando vai verificar se existe ou nao existe.

#include <stdio.h>

 

int main(){

 

    float notas[20],busca;

    int i = 0;

 

    do{

 

        scanf("%f",&notas[i]);

 

        if(notas[i]>=0.0 && notas[i]<=10){

        i++;

 

        }else{

        break;

        }

 

    }while(i<20);  

 

    for(i=0;i<20;i++){

        scanf("%f",&busca);

 

        if(notas[i] == busca){

            printf("existe\n");

        }else{

            printf("nao existe\n");

        }

    }

 

return 0;

}

es_t5a.c

Edited by LauraC
Link to comment
Share on other sites

Está parcialmente conforme os requesitos enunciado. Falhou  na parte do problema que busca x enquanto x é maior ou igual 0.

Na forma de algoritmo narrativo descritivo

Ler x, Enquanto 0<=x Faz:

           buscar de x em Notas 

           Ler x

 

 

 

Edited by mauro_b
  • Agradecer 1
Link to comment
Share on other sites

Eu corrigi essa parte mas quando eu executo em um teste a saida fica assim:

(teste com nota de 0 a 10 e depois verifiquei se existe o numero 1)

existe
nao existe
nao existe
nao existe
nao existe
nao existe
nao existe
nao existe
nao existe
nao existe
existe
nao existe
nao existe
nao existe
nao existe
nao existe
nao existe
nao existe
nao existe
nao existe

 

sendo que deveria aparecer só 1 vez

Edited by LauraC
Link to comment
Share on other sites

  • 2 weeks later...

@LauraC Existe duas coisas que você pode fazer nesse caso, levando em consideração esse código mais simples.

Pelo enunciado tá faltando coisa. Ele pede pra você pedir as notas ao usuário enquanto ele não digitar um número negativo. Nesse caso pode usar o do-while. pra ficar repetindo enquanto o valor digitado é positivo. Faltou no seu código iterar com um loop-for as notas. Você pode utilizar uma variavel de controle nesse caso, um CHAR resolve. Veja se entende o exemplo abaixo, qualquer coisa pode perguntar.

float valor;
char controle = 'f';
do {
	scanf(valor);
  	controle = 'f';
    for (int i=0; i<20; i++){
		if(nota[i]==valor){
			printf("existe");
          	controle = 'v';
          	break;
        }
	}
  	if (controle=='f'){
		printf("não existe");
    }
} while(valor > 0);
        



   
 

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
Reply to this topic...

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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...