Ir ao conteúdo
  • Cadastre-se

Derleyvolt

Membro Júnior
  • Posts

    15
  • Cadastrado em

  • Última visita

posts postados por Derleyvolt

  1. Okay.. primeiro, a variável contadora, c, precisa ser zerada..

               

    segundo, dependendo do seu compilador, o vetor virá com lixo de memória, você precisa zerar ele, assim ->

     

    int vetor[100] = {}; // isso zera o vetor. se tiver usando uma versão mais antiga, provavelmente não vai funcionar

    ou 

    int vetor[100];
    
    memset(vetor, 0, sizeof(vetor));

     

    • Curtir 1
  2. o código está correto, primeiro ele mostra o conteúdo do vetor, ou seja, joga o conteúdo na tela e depois zera o valor.. essa seria a sua intenção, não? caso não, eu ainda entendi qual a real dúvida, a dúvida inicial era como zerar o conteúdo de um array/vetor.. poste o código completo com as alterações que você fez, e me diga como você espera/quer que ele funcione. tenho a noite toda, sem pressa.

    • Curtir 1
  3. int main()
    {
    	int vetor[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    
    	memset(vetor, 0, sizeof(vetor));
    
    	for ( size_t i = 0; i < sizeof(vetor) / 4; i++ )
    	{
    		std::cout << vetor[i] << std::endl;
    	}
    
    	system("pause");
    	return 0;
    }

    compile isso e verá que o vetor é zerado.. o problema provavelmente é na sua implementação, mostre o source desse seu segundo exemplo, se puder.

     

     

    • Curtir 1
  4. pra zerar um vetor/array você pode fazer assim --> 

     

    ZeroMemory(vetor, 10); // o vetor a ser zerado e o tamanho dele em bytes

    ou 

    memset(vetor, 0, 10); // o vetor a ser preenchido, o vetor será preenchido com esse valor (0 no caso)
                          // e o tamanho do vetor em bytes

     

    ambos fazem exatamente a mesma coisa, ZeroMemory é implementado com memset..

    • Curtir 1
    • Amei 1
  5. como você não sabe o valor que o usuário vai digitar, ou seja, o valor é dinâmico.. então você precisa usar alocação dinâmica, assim:

    scanf("%d",tamanho); 
    
    int* vetor = new int[tamanho]; // alocação dinâmica
    
    código aqui..
    
    delete[] vetor; // lembre-se sempre de liberar a memória

    ou poderia usar o std::vector, mas creio que você ainda não conheça..

    • Curtir 1
  6. Diogo não olhei o código todo, mas você não pode fazer isso --> 

     

    int vetor[m],verifica[m];

     

    esse m dentro dos colchetes não é permitido neste caso, pois m é uma variável não constante. Isso só seria possível se as variáveis vetor e verificar fossem ponteiros e você as inicializa-se com o operador new, assim:

     

    int m = 10;
    
    int* vetor = new int[m], *verificar = new int[m];

     

    ou se m fosse um define, assim:

     

    #define m 10
    
    int main()
    {
        int vetor[m];
        return 0;
    }

     

    ou se fosse uma variável const, assim:

     

    int main()
    
    {
        const int m = 10;
        int vetor[m];
        return 0;
    
    }

     

     

    • Curtir 1
  7. não conheço seu nível em C, mas tenta inicialmente resolver problemas como :

     

    criar um algoritmo que retorne o maior valor desse vetor:  {  1, 6, 7, 2, 4, 8, 9, 12, 17, 3, 5 }

     

    faça um loop de 0 até 99 e imprima todos os valores que são múltiplos de 3 e de 5.

     

    encontre a soma de todos os números primos abaixo de 1000.

     

    se quiser algo mais complicadinho, tem esse site em inglês https://projecteuler.net/archives

     

    não posso te recomendar nenhum livro em C pois programo em C++ e os livros que leio são

    todos em inglês e não envolvem lógica de programação..

    • Curtir 1
  8.  Primeiro, uma variável do tipo char só suporta 1 byte, um short suporta 2 bytes, então se você jogasse 2 bytes

     em uma variável do tipo char, 1 byte seria escrito em endereço desconhecido.. mas se mesmo assim você quiser

     fazer isso, você faz assim :

        char* a = new char();
    
        scanf_s("%d", a);
        
        // 'força' o compilador a interpretar o endereço retornado pela 
        // variável 'a' como sendo do tipo short
        short* c = reinterpret_cast<short*>(a);
          
        cout << *c << endl;

    não analisei a função scanf internamente, mas provavelmente ela guarda o input do usuário em uma variável do tamanho

    do formato passado e joga o input no endereço apontado pelo ponteiro sem verificar o tipo do ponteiro.. mas como foi dito antes, neste caso, será jogado 4 bytes dentro de uma variável (que está no heap) que suporta 1 byte, 3 bytes serão escritos em endereços desconhecidos..

    • Curtir 1
  9. Existe uma leve diferença na declaração de um vetor e na atribuição dele, quando você vai declarar ->

    char letra[1]; // isso significa que o vetor, neste caso, só suporta um caractere.
    char letra[2]; // neste caso, ele suporta 2 caracteres.

     

    quando você for atribuir um valor a ele com o operador = , o primeiro valor começará sempre da posição 0 -> 

    letra[0] = 'a'; // se você fizer letra[1], você estará escrevendo em uma
                    // região de memória que não pertence ao vetor letra.

     

    o vetor resp mostrava o mesmo valor porque você estava indiretamente escrevendo em resp[0], pois neste
    caso aí, o endereço de memória inicial do vetor resp estava situado logo após o fim do vetor letra.

     

    neste caso, você até pode acessar os campos de resp através do vetor letra, assim ->

     

     

    letra[2] = 'b'; // escrevendo em 2 bytes acima do domínio da variável 
    cout << resp[1] << endl; // isso vai mostra o 'b' , pois os campos do vetor 
                             // resp estão logo acima do vetor letra

     

    Cheers

  10. Então , galera , estou com problema em converter numero em caractere , eu até consigo , mas só mostra a primeira letra da palavra , já tentei com Wchar , WideChar , PWidechar , AnsiString , Pchar , entre outros , alguns dão erro , outros funcionam mas , como eu disse , aparece apenas a primeira Letra da palavra... 

     

    o codigo é esse , Label17.Caption:=Wchar(buf); 

     

    onde buff é um integer....

     

    Desde já , Obrigado.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!