Jump to content
Fórum Script Brasil
  • 0

Duvida


Question

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 to post
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to post
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
Answer this question...

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



  • Forum Statistics

    • Total Topics
      148885
    • Total Posts
      644942
×
×
  • Create New...