-
Posts
15 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Derleyvolt
-
-
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.
- 1
-
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.
- 1
-
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..
- 1
- 1
-
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..
- 1
-
de Fortaleza também hehe.. eu curto demais também essa parte da física na programação, esse site é ótimo para entusiastas da física na programação --> http://natureofcode.com/book/chapter-2-forces/
- 2
-
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 m fosse uma variável const, assim:
int main() { const int m = 10; int vetor[m]; return 0; }
- 1
-
Concordo, eu citei o livro porque considerei que ele fosse ler depois que terminasse de ler o livro "Começando a programar em C++ para leigos"
- 1
-
se você sabe um pouco de inglês, te recomendo ler esse, é do criador do C++ -->
https://is.muni.cz/www/408176/38744863/The_C__Programming_Language__Stroustrup_.pdf
- 1
-
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..
- 1
-
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..
- 1
-
você poderia usar um vetor, não ficaria mais rápido mas pouparia muitas linhas de código... sobre os travamentos, você poderia usar threads, o que seria bem complicado visto que você é iniciante. (não programo em c#, mas não creio que sua função faça o programa travar, a não ser que seja chamada em um loop curto).
- 1
-
gosto do VS 2017, possui muitas ferramentas de auxílio.
- 1
-
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
-
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
Não estou conseguindo zerar os valores do vetor
em C/C#/C++
Postado
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));