Ir ao conteúdo
  • Cadastre-se

DAVIFN

Membro Pleno
  • Posts

    57
  • Cadastrado em

  • Última visita

Reputação

5
  1. DAVIFN

    Vetor impossível?

    Obrigado pela sua resposta, @devair1010! Eu pensei que ao declarar v1 e v2 com [4] estava alocando 5 posições, pos 0, 1, 2, 3 e 4. No entanto agora sei que na declaração deve-se colocar o número exato de posições desejadas, e não este número subtraído de um. Dúvida resolvida.
  2. DAVIFN

    Vetor impossível?

    Estou quase desistindo deste código. Veja se pode me ajudar: eu inicializo três vetores (v1,v2 e vs que, supostamente, seria o vetor que armazenaria a soma dos dois números cujos algarismos estão armazenados em v1 e v2) e atribuo a cada elemento deles o valor -1. Depois, os exibo para confirmar que os elementos realmente estão todos -1 (parte deu tentando debugar). Então, peço ao usuário que entre com dois inteiros de até cinco dígitos, parte esta feita pela função getch(), que recebe carácter por carácter os números digitados pelo usuário em ASCII e os armazena um em cada posição do vetor, a começar pela esquerda. Após receber ambos os inteiros e armazená-los nos respectivos vetores, chega a surpresa: ao menos aqui, ao exibir os vetores, a última posição do segundo vetor "do nada" assume o valor da primeira posição do primeiro vetor. Exemplo: entrei com 2 para o v1 e 2 para o v2; supostamente, v1 e v2 teriam de estar "2 -1 -1 -1 -1", mas apenas v1 o está; v2 está "2 -1 -1 -1 2". Segue código desta loucura: #include<stdio.h> #include<conio.h> int main() { int v1[4],v2[4],vs[5]; int aux=0,ch=0; for(aux=0;aux<=4;aux++) { v1[aux]=-1; v2[aux]=-1; vs[aux]=-1; } vs[5]=-1; printf("\n\nv1 inicialmente:\n"); for(aux=0;aux<5;aux++) { printf("%d ",v1[aux]); } printf("\n\nv2 inicialmente:\n"); for(aux=0;aux<5;aux++) { printf("%d ",v2[aux]); } printf("\n\nvs inicialmente:\n"); for(aux=0;aux<6;aux++) { printf("%d ",vs[aux]); } printf("\n\nDigite o valor a ser armazenado em v1:\n"); aux=0; while(aux<5&&ch!=13) { ch=getch(); if(ch>47&&ch<58){v1[aux]=ch-48;aux++;} } printf("\n\nDigite o valor a ser armazenado em v2:\n"); ch=0; aux=0; while(aux<5&&ch!=13) { ch=getch(); if(ch>47&&ch<58){v2[aux]=ch-48;aux++;} } printf("\n\nOk, o v1 recebido foi:\n"); for(aux=0;aux<5;aux++) { printf("%d ",v1[aux]); } printf("\n\nE v2 ficou:\n"); for(aux=0;aux<5;aux++) { printf("%d ",v2[aux]); } getch(); } Alguma luz?
  3. DAVIFN

    C++ - Falha em loop

    Problema resolvido, pessoal! Não há mais necessidade de resposta e podem fechar o tópico, porém, não o deletem, assim caso mais alguém tenha a mesma dúvida que eu tive (algo meio difícil de acontecer) poderá solucioná-la. Segue o código contendo as linhas que alterei para que não houvessem mais "leaks":
  4. Problema resolvido, pessoal! Não há mais necessidade de resposta e podem fechar o tópico, porém, não o deletem, assim caso mais alguém tenha a mesma dúvida que eu tive (algo meio difícil de acontecer) poderá solucioná-la. Segue o código contendo as linhas que alterei para que não houvessem mais "leaks":
  5. Detalharei bem minha dúvida para que melhor seja respondida; o atual programa que estou desenvolvendo (que, por sinal, não possui fins comerciais, pois programo como um hobby), eventualmente, tira uma screenshot da tela de meu computador e a salva em um destino qualquer. O problema é que, após um tempo considerável de execução, o programa começa a apresentar algumas falhas que considero graves: As screenshots saem completamente pretas e o consumo de CPU aumenta significativamente. Pelo que até agora pesquisei, estou na pista de que, como não sou um profissional, devo ter deixado algum "leak" de memória em meu humilde código, coisa pouca, mas que, aos montes, causa os problemas acima citados. Achei um tópico no qual falavam que os tais "leaks" poderiam ser evitados usando uma série de if's ( if(talcoisa!=NULL) ), e apliquei alguns if's ao meu código. Mesmo assim, continua problemático. Elaborei um mini-programa para postar neste tópico aqui, e, quando ele estiver funcionando, aplicarei-o em meu projeto. Ele basicamente tira mil screenshots e salva na pasta "teste". Ou pior, na teoria. Ele só está tirando umas duzentas screenshots (ao menos aqui). Ajudem-me a corrigi-lo e ficarei extremamente grato. Segue o código do programa de testes: Obs: Meu objetivo é conseguir fazer com que o programa salve as mil screenshots.
  6. Ainda sem respostas... Pessoal, para ser mais exato, obtive apenas 171 screenshots das 1000 que teriam de ser tiradas.
  7. Olá, pessoal do Fórum do Clube do Hardware! Detalharei bem minha dúvida para que melhor seja respondida; o atual programa que estou desenvolvendo (que, por sinal, não possui fins comerciais, pois programo como um hobby), eventualmente, tira uma screenshot da tela de meu computador e a salva em um destino qualquer. O problema é que, após um tempo considerável de execução, o programa começa a apresentar algumas falhas que considero graves: As screenshots saem completamente pretas e o consumo de CPU aumenta significativamente. Pelo que até agora pesquisei, estou na pista de que, como não sou um profissional, devo ter deixado algum "leak" de memória em meu humilde código, coisa pouca, mas que, aos montes, causa os problemas acima citados. Achei um tópico no qual falavam que os tais "leaks" poderiam ser evitados usando uma série de if's ( if(talcoisa!=NULL) ), e apliquei alguns if's ao meu código. Mesmo assim, continua problemático. Elaborei um mini-programa para postar neste tópico aqui, e, quando ele estiver funcionando, aplicarei-o em meu projeto. Ele basicamente tira mil screenshots e salva na pasta "teste". Ou pior, na teoria. Ele só está tirando umas duzentas screenshots (ao menos aqui). Ajudem-me a corrigi-lo e ficarei extremamente grato. Segue o código do programa de testes: Obs: Meu objetivo é conseguir fazer com que o programa salve as mil screenshots.
  8. Para executar um programa externamente com a API do Windows, use a função execve()! Ela consiste em: #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <unistd.h> int main() { char *Local[]={"C:\\Arquivos de Programas\\Teste.exe",NULL}; execve("C:\\Arquivos de Programas\\Teste.exe",Local, NULL) MessageBox(NULL,"Executado com sucesso! \n\n Poderá mudar esta mensagem!","Título!",MB_OK); // Mude aqui! ou retire esta função! } Espero ter ajudado! Caso ainda tenha dúvidas só perguntar. OPA TINHA ESQUECIDO QUE TEM QUE USAR DOIS / FOI MAL COMPILA AGORA QUE FUNCIONA OK? Ah, mais uma coisa, o exemplo que o Matheus passou funciona sim, mas você teria que substituir... digamos assim: #include <stdlib.h> int main() { system(call \"C:\\Arquivos de Programas\\Teste.exe\""); //Este é o system, que abre a tela preta! } Ah e TAMBÉM PENSEI QUE O NOME DO EXECUTÁVEL ERA TESTE.exe! Mas Agora irá funcionar, compile isto! Está sem erro. #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <unistd.h> int main() { char *Local[]={"C:\\Arquivos de Programas\\Teste.exe",NULL}; execve("C:\\Arquivos de Programas\\Teste\\siman.exe",Local, NULL) MessageBox(NULL,"Executado com sucesso! \n\n Poderá mudar esta mensagem!","Título!",MB_OK); // Mude aqui! ou retire esta função! } Mais uma coisinha: A função MessageBox() exibe uma mensagem na tela, caso queira saber mais sobre ela pergunte neste tópico mesmo.
  9. Olá pedromss, o exemplo que nosso amigo Matheus Maldi citou acima funciona, porém ele abre uma tela preta do DOS além de executar o programa. Gostaria da resposta que não abrisse esta tela?

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