Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida


Rafael Cezario

Pergunta

Boa noite pessoal,

 

Estou cursando ciência da computação e precisava resolver um exercício onde preciso: criar um algoritmo com um vetor de 50 números, e pedir ao usuário para digitar um numero aleatório, e esse numero aleatório irá comparar com os números dentro o vetor, caso seja igual, ele zera o numero dentro do vetor e depois mostra para o usuário quais números foram zerados, eu fiz um algorítimo mas não funcionou, se alguém puder dar uma olhada e me ajudar a ver o que há de errado agradeço:

 

#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
    
    int vetor[10], i, num;
    
        for (i=0; i<10; i++) {
            printf("Digite o numero %d:", i+1);
            scanf("%d", &vetor);
        }
        
        printf("Digite um numero aleatorio: ");
        scanf("%d", &num);
        
        for (i=0; i<10; i++){
            if (num==vetor) vetor==0;
            
            for (i=0; i<0; i++){        
            printf("%d", vetor);
        }
        }
    return 0;
}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

primeiro quero dizer que você poderia ter um vetor predefinido para realizar provas e assim não ter que preencher o vetor cada vez que rodar o código, isso vai lhe economizar em tempo e esforço. Vamos ver um exemplo:
O seguinte código ilustra como poderia ter um vetor preenchido de forma previa em tempo de compilação ou ter um vetor que será preenchido em tempo de execução.

int main ( int argc, char** argv ) {
    const unsigned int TAM = 50;
    //#define MANUALMENTE //DEScomentar essa linha para pedir o vetor por teclado manualmente em tempo de execução. Ou comentar essa linha para que o vetor seja preenchido em tempo de compilação
    #ifdef MANUALMENTE
    int vetor[TAM];
    for ( i = 0; i < TAM; i++ ) {
        printf ( "Digite o numero %d:", i + 1 );
        scanf ( "%d", &vetor[i] );
    }
    #else
    int vetor[TAM] = {
        {  1,  2,  3,  4,  5,  6,  7,  8,  9, 10},
        { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20},
        { 22, 22, 23, 24, 25, 26, 27, 28, 29, 30},
        { 33, 32, 33, 34, 35, 36, 37, 38, 39, 40},
        { 44, 42, 43, 44, 45, 46, 47, 48, 49, 50}
    };
    #endif // MANUALMENTE

Se a linha a palavra "MANUALMENTE" estiver definida(#ifdef MANUALMENTE) antes de "#ifdef MANUALMENTE" se executará o código seguinte, que pedirá os números por teclado porem pode cansar de tanto digitar, sobretudo se o vetor for de grande tamanho como no seu caso:

    int vetor[TAM];
    for ( i = 0; i < TAM; i++ ) {
        printf ( "Digite o numero %d:", i + 1 );
        scanf ( "%d", &vetor[i] );
    }

Caso contrario se executará o seguinte código e se ignora o anterior(como se não existisse):

    int vetor[TAM] = {
        {  1,  2,  3,  4,  5,  6,  7,  8,  9, 10},
        { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20},
        { 22, 22, 23, 24, 25, 26, 27, 28, 29, 30},
        { 33, 32, 33, 34, 35, 36, 37, 38, 39, 40},
        { 44, 42, 43, 44, 45, 46, 47, 48, 49, 50}
    };

É muito útil agilizar na hora de realizar provas no seu programa pois ou estará definido uma parte ou a outra. Pense nisso.

Agora bem...
Como você falou, seu programa deve pedir um numero e comparar se esta no vetor, caso seja assim esse numero fica zerado, mas logo você diz que o programa deve informar os numeros que foram zerados, isso da a entender que o programa pede varios numeros e não somente um. Sendo assim acho que seria algo como isso:

    unsigned int i; 
    int num;
    while(true){
        printf ( "Digite um numero aleatorio: " );
        scanf ( "%d", &num );
        if ( num != -1 ){
            for ( i = 0; i < TAM; i++ ) {
                if ( num == vetor[i] ) vetor[i] = 0;
            }
            
        }else break;
    
    }

O programa pedirá números até que o usuário digite -1, quando digitar -1 vai sair do laço caindo na parte que imprime o vetor e o programa termina.

O código completo seria esse:

#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main ( int argc, char** argv ) {
    const unsigned int TAM = 50;
    //#define MANUALMENTE //DEScomentar essa linha para pedir o vetor por teclado manualmente  
    #ifdef MANUALMENTE
    int vetor[TAM];
    for ( i = 0; i < TAM; i++ ) {
        printf ( "Digite o numero %d:", i + 1 );
        scanf ( "%d", &vetor[i] );
    }
    #else
    int vetor[TAM] = {
         1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 
        11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 
        22, 22, 23, 24, 25, 26, 27, 28, 29, 30, 
        33, 32, 33, 34, 35, 36, 37, 38, 39, 40, 
        44, 42, 43, 44, 45, 46, 47, 48, 49, 50 
    };
    #endif // MANUALMENTE

    unsigned int i; 
    int num;
    while(true){
        printf ( "Digite um numero aleatorio: " );
        scanf ( "%d", &num );
        if ( num != -1 ){
            for ( i = 0; i < TAM; i++ ) {
                if ( num == vetor[i] ) vetor[i] = 0;
            }
            
        }else break;
    
    }
    
    
    for (i=0; i<TAM; i++){        
        printf("%d, ", vetor[i]);
    }
    
    getchar();
    return 0;
}


Basicamente onde você errou foi em não por a parte que pede o numero dentro de um laço, pois seu programa pediria um só numero e não vários.

De uma boa estudada nesse código, você pode aprender muitas coisas úteis. Se tiver duvida pergunte.
 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...