Ir para conteúdo
Fórum Script Brasil

Risadão

Membros
  • Total de itens

    44
  • Registro em

  • Última visita

Tudo que Risadão postou

  1. Risadão

    Programa Monitorar CPU

    quintelab, achei um site (http://www.groupsrv.com/dotnet/post-411602.html) que fala a respeito de uma ferramenta do windows que até então eu desconhecia. Com essa ferramenta chamada wbemtest.exe, é possível verificar todas as classes que estão disponíveis para o PC. Achei isso aki no PC da empresa e fiz o teste nele, e aki, não são todas as propriedades das classes de temperatura e fan que estão disponíveis, apenas algumas propriedades das classes podem ser utilizadas. Muito provavelmente é isso que está acontecendo, por isso não consigo pegar os dados... Mas por exemplo, o everest consegue pegar todos esses dados, quando entra no setup tb aparece, então a palca-mãe possui esses sensores, mas como pegar essas informações? você sabe de outra maneira sem ser pelas classes Win32? Abraços e até mais...!!!
  2. Risadão

    Programa Monitorar CPU

    Boa tarde quintelab, Agradeço pela atenção e resposta, mas infelizmente ainda não consegui fazer o prog. Olhei nesse site que você passou, realmente tem bastante coisa interessante, até outros sites que fui direcionado através desse que você postou, tem bastante coisa bacana. Procurei em outros sites tb, pesquisei no Google, mas até agora sem sucesso. Já tentei fazer de umas 10 maneiras diferentes e nd até agora... Caso saiba de outros sites peço que por favor poste aki. E mais uma vez obrigado! Abraço
  3. Boa noite pessoal, Estou já a um tempo tentando implementar um programa para monitorar o CPU, quero primeiramente coisinhas mais básicas como por exemplo, pegar a temperatura do processador, velocidade Fan, etc... Estou utilizando o Microsoft Visual Studio e estou desenvolvendo em C#. Gostaria de capturar essas informações através das classes win32. Segue uma parte do código, onde a intenção seria pegar a velocidade do fan: ManagementObjectSearcher MOS = new ManagementObjectSearcher("SELECT * FROM Win32_Fan"); ManagementObjectCollection MOC = MOS.Get(); foreach (ManagementObject MO in MOC) { Fan_Caption += MO["Caption"].ToString(); } ...porém, isso não retorna nada. Já procurei no site: http://msdn.microsoft.com mas não adiantou muita coisa. Alguém sabe como conseguir essas informações através das classes WMI Win32 ou de alguma outra forma? Qualquer ajuda é bem vinda. Grato desde já!
  4. Bom dia anderson. Desculpe mas não intendi direito o que você tem que fazer. Só uma coisa: você tem 5 elementos e deve move-los, como você disse, vai ter os blocos 0, 1, 2, 3 e 4. você quer por exemplo pegar o elemento da posição 1 e colocar na posição 3 é isso? Se for isso você não pode usar LISTA? Com lista você consegue isso facilmente implementando algumas funções utilizando ponteiros. Eu já fiz um braço robótico tb mas o meu era controlado pelo pc através da porta paralela e ele possuia movimentos pan tilt e uma "garra" de eletroímã. Também programei em C++ pelo DEV. Desculpe se não ajudei em nada mas... ficou meio confuso o que você quer fazer. Até mais...
  5. Olá, Obrigado pela ajuda. Baixei o arquivo aki, vou dar uma olhada. Grato!
  6. E aí pessoal, Estou no 4º período de Engenharia de Controle e Automação, e já tive as matérias de Algoritmos e Técnicas de Programação e Algoritmos e Estruturas de Dados, porém esse semestre estou tendo Sistemas Digitais, e o prof mandou a gente implementar o algoritmo de QUINE-MCCLUSKEY alguém conhece? É um algoritmo para simplificação de expressões booleanas. O exercício fala pra implementar um programa que realize as seguintes tarefas: 1º. Agrupar os minitermos obtidos de uma expressão booleana ou tabela verdade, classificando quanto ao número de variáveis 1s. 2º. Compare os elementos de um grupo com N 1s com os elementos de um grupo com N + 1 1s. 3º. Na comparação dos elementos se apenas 1 bit variar, então elimine a variável associada a este bit, coloque os elementos simplificados em uma nova coluna. 4º. Marque os elementos já combinados. 5º. Volte ao passo 2 e repita o procedimento até que todas as combinações dos elementos dos grupos sejam feitas. 6º. Os elementos não marcados são os minitermos resultantes. Alguém tem alguma dica, ou sabe como posso pelo menos começar o algoritmo, algumas idéias, já até procurei no google mas não achei nada. Se alguém puder ajudar ficarei muito grato. (Lembrando que o programa deve ser feito em C/C++). Agradeço desde já! Até mais...
  7. Os operadores lógicos bit-a-bit só podem ser usados pelos tipos char, int e long int. São os operadores: & - "E" | - "Ou" ^ - "Ou Exclusivo" ~ - "Não" >> - "Deslocamento de bits à direita" << - "Deslocamento de bits à esquerda" Eles ajudam os programadores a trabalharem em "baixo nível". Por exemplo, tenho uma variável "x" com o número 3. Em binário de 8 bits seria: 00000011. Se eu escrevo "~x", o número se transformará para 11111100. Pode-se observar estes operadores por exemplo em um código-fonte qualquer que sirva para controlar a porta paralela do pc. A porta paralela (LPT) possui 8 pinos de DADOS, 4 de CONTROLE e 5 de STATUS. Os pinos de DADOS e CONTROLE são saídas e os de STATUS são entradas. Os pinos de DADOS por exemplo funciona com 8 bits. Cada bit é um pino da porta paralela, como ela é de 8 bits, se eu escrevo o número 11111111, eu vou estar enviando um sinal em todos os 8 pinos de DADOS da porta paralela. Se eu mando o número 2, 00000010, eu vou estar enviando um sinal somente no pino referente ao bit 2. Muitos projetos que são controlados pela porta paralela funcionam desta forma, e os operadores lógicos bit a bit ajuda na programação deste tipo de coisa. Não sei se ficou bem claro, mas é isso aí, se alguém tiver alguma explicação mais elabora, mais detalhada, posta aí. falou... Até mais!
  8. Risadão

    Porta Paralela

    Olá Beto. Eu faço Engenharia de Controle e Automação e programo em C/C++ tanto para PC quanto pra PIC, já fiz vários trabalhos utilizando a LPT, o que seu programa tem que fazer? Se quiser me add no MSN, dá pra conversar melhor: hebert.samuel@hotmail.com Se eu puder ajudar estou à disposição...!!! Até mais.
  9. Boa noite dmanauara, - malloc: forma abreviada de escrever "mass memory allocation" (alocação de memória). Pode ser usada por exemplo quando você quer criar um vetor sem tamanho pré-definido, como se a cada vez que você rodasse o programa o tamanho do vetor mudasse. Ex.: int main() { int *VET, V; cout << "Digite o tamanho do vetor: "; cin >> V; VET = (int *)malloc(V * sizeof(int)); } Neste exemplo o usuário digita o tamanho do vetor a ser criado, e a cada vez que o prog. rodar este número poderá mudar. - calloc: Também é usado para alocação dinâmica. Gera um array de memória e o preenche com 0 (zero). calloc vem do termo "cleared memory allocation". Ex.: int main() { int *p, t; cout << "Digite um valor: "; cin >> t; p = calloc(t, sizeof(int)); } - realloc: Abreviação de "Resizing arrays", serve para realocar ponteiros já alocados anteriormente. Ex.: p = realloc(20 * sizeof(int)); - free: Do termo "Freeing Dynamic Memory", libera o espaço allocado na memória. Ex.: free(VET); Obs.: No caso do malloc, é necessário fazer um cast antes do malloc para informar o tipo de bytes que será usado, neste caso como estamos utilizando int, ficou da seguinte forma: VET = (int *)malloc(V * sizeof(int)) Se estivesse utilizando um char por exemplo ficaria: VET = (char *)malloc(V * sizeof(char)). Já em calloc este cast não é necessário. Quando se aloca um espaço da memória, este espaço ainda não foi inicializado e pode conter lixo no buffer, para resolver este problema utilizamos a menset que inicializa o array e o preenche com 0 (zero). memset() subistitiu a antiga bzero(). Espero ter ajudado! Até mais...
  10. Risadão

    Ordem

    Olá Loolo, você pode usar funções de ordenação do tipo por seleção ou inserção, ou usar funções mais elaboradas como QuickSort, etc..., ou simplesmente colocar um if e fazer a comparação entre os números. Funções para ordenação: //OrdenaçãoSeleção-------------------------------------------------------------- int ordSEL(int vetor[], int tam) { int menor, i, j, temp; for (i = 0; i < (tam - 1); i++) { for (j = i + 1, menor = i; j < tam; j++) if (vetor[j] < vetor[menor]) menor = j; temp = vetor[menor]; vetor[menor] = vetor[i]; vetor[i] = temp; } } //OrdenaçãoInserção------------------------------------------------------------- int ordINS(int vetor[], int tam) { int menor, i, j, temp; for (i = 1; i < tam; i++) { temp = vetor[i]; for (j = i; j > 0 && temp < vetor[j - 1]; j--) vetor[j] = vetor[j - 1]; vetor[j] = temp; } } As funções descritas acima colocam os números em ordem crescente. Exemplo de como usar as funções: int VET[10] = {52, 36, 45, 28, 3, 57, 44, 68, 96, 31}; ordSEL(VET); //ou ordINS(VET); Respondendo a pergunta, se usar apenas uma variável e usa-lá como entrada mais de uma vez, os valores anteriores serão perdidos. Era essa a dúvida? Espero ter ajudado, depois posta aí se deu certo! Abraço...
  11. Olá Carlos, Como nosso amigo Jeferson disse, você pode usar funções de LISTA. As funções podem ser feitas das seguintes formas: #include <malloc.h> typedef struct NODO { int dado; struct NODO *proximo; } LISTA; LISTA *crialista() { struct NODO *cabeca; cabeca = (LISTA *)malloc(sizeof (LISTA)); cabeca -> proximo = NULL; return cabeca; } int incluir(LISTA *cabeca, int posicao, int elemento) { struct NODO *p, *q = cabeca; int i; for (i = 0; i < posicao && q != NULL; i++) q = q -> proximo; if (q == NULL) return 0; p = (struct NODO *)malloc(sizeof (struct NODO)); p -> dado = elemento; p -> proximo = q -> proximo; q -> proximo = p; return 1; } int excluir(LISTA *cabeca, int posicao) { struct NODO *p = cabeca, *anterior; int aux, i; for (i = 0; i <= posicao && p != NULL; i++) { anterior = p; p = p -> proximo; } if (p == NULL) return 0; aux = p -> dado; anterior -> proximo = p -> proximo; free(p); return aux; } int listar(LISTA *cabeca) { LISTA *q = cabeca; for (q = q -> proximo; q != NULL; q = q -> proximo) cout << q -> dado << " "; } você pode fazer um registro contendo todas as informações. Como usar as funções: LISTA L1; //Declarou uma lista L1 = crialista(); //criou espaço na memória para gerar a lista inserir(L1, 0, VAGOES); //inserir(lista declarada, posição que deseja inserir, elemento que deve ser inserido) retirar(L1, 0); //retirar(lista declarada, posição que deseja retirar); listar(L1); //listar(lista declarada) Espero ter ajudado, ficou meio confuso, pra você intender assim como funciona as funções vai ser meio difícil, é meio complicado, mas não é nada de mais. Depois posta aí se deu certo. Até mais!
  12. E ai cara, tranquilo? Foi mal, fiquei meio sumido aí, mas é que voltou as aulas e faculdade você sabe como que é né, só correria, ainda ralano aí acaba ficando sem tempo, mas aki, eu baixei a biblioteca lá e tem pastas pra caramba né, eu faria o seguinte, colocaria o conteúdo das pastas bin, include e lib dentro das pastas do compilador com os mesmos nomes. Não sei se ia dar, não tentei usar porque não sei nada sobre essa biblioteca GTK então tem nem como eu testar aki. Se conseguir aí posta aí. =D falou t+ Abraços...!!!
  13. E aí cara, tranquilo? você deve copiar o arquivo com extensão .h não tem aí não? Por exemplo, se eu baixei uma biblioteca que se chama "Medici.h" eu pego esse arquivo e coloco na pasta C:\Dev-Cpp\include. Depois basta eu incluir essa biblioteca no meu código normalmente, colocando no início do programa #include "Medici.h", isso no Dev C++ né, no Visual C++ não sei como é. Onde você baixou essa GTK+? Me passa aí pra eu ver quais arquivos tem, ver se consigo utilizar ela aki... Se conseguir posta aí! falou T+ Abraços...
  14. E aí Medici, cara, no Visual C++ eu não sei, mas no Dev C++ basta apenas colocar o arquivo da biblioteca na mesma pasta das outras bibliotecas e depois incluir ela no seu programa normalmente. Tente aí, não sei se dá mas... Depois posta se conseguiu cara! falou abraço.
  15. E aí pessoal, galera, uso bastante o Dev e pelo que sei a função é _sleep(tempo) - tem um underline antes do sleep e a biblioteca é <windows.h> Ex.: . . . #include <windows.h> int main() { . . . _sleep(5000); //Espera 5 segundos (tempo em ms). . . . }[/CODEBOX] Agora sobre a outra função nunca usei. Espero ter ajudado. falou!!!
  16. Risadão

    Struct

    E aí pessoal, Você está certo Beraldo, é que olhei o código muito rapidamente e acabei vacilando nessa aí, achei que tivesse colocado gets(pessoa.nome[k]), ainda bem que você viu meu erro, e foi mal aí! Sinceras desculpas... :P
  17. Risadão

    Struct

    Olá Isabella, não olhei direito ainda seu código, mas ví duas coisa que podem atrapalhar seu programa além do que o Beraldo já disse tb: . . . } pessoa[15]; . . . while (op != 'n') . . . printf("\n\nDeseja inserir outro aluno? [s/n]: "); scanf("%c%*c", &op); k++;[/CODEBOX] ...sua variável pessoa só pode guardar o cadastro de 15 pessoas, e do jeito que está fazendo, se o usuário teclar sim no final várias vezes ele vai cadastrar mais de 15 pessoas, sendo que sua variável só suporta o máximo de 15, e também, do jeito que está fazendo, por exemplo no gets(pessoa[k].nome), você está tentando guardar mais de um caracter em um único índice, vamos supor que k seje 1, logo índice 1 no vetor, é um único "espaço" e você quer guardar o nome Isabella por exemplo, seria impossível porque cada letra ocuparia um índice, e desse jeito você está tentando guardar vários caracteres em um único índice. O mesmo acontece para idade e matrícula. Bom, o que percebi a primeira vista foi isso, vou dar uma olhada no seu código com mais calma e ver se tem mais algum erro. T+ falou, depois posta aí se conseguiu fazer :D
  18. E aí GabrielCardelli, você deve usar a função strcpy para atribui uma string a outra. Ex.: strcpy(string1, string2); Aí o conteúdo da string1 vai ser atribuído à string2. Não sei se te ajudou e se é isso mesmo sua dúvida, mas posta aí depois se conseguiu resolver o problema. falou T+!!!
  19. Risadão

    String

    Boa noite viciado, fiz o programinha aki, vê se é isso mesmo que você quer. Obs.: Fiz em c++, mude cout por printf e retire a biblioteca <iostream.h>. #include <iostream.h> #include <stdio.h> int main() { int i, x; char VET[30]; gets(VET); x = strlen(VET); cout << "\n"; for (i = 0; i < x; i++) cout << VET[i] << VET[i]; system("PAUSE >= nul"); }[/CODEBOX] falou cara, Abraços . . . ! ! !
  20. Risadão

    Vetor

    Boa noite viciado, cara, fiz o programa aki mas fiz em c++, neste caso a única diferença entre c++ e c é que no lugar de cout você deve colocar printf e no lugar de cin você coloca scanf. Também estou usando a biblioteca <iostream.h> mas no seu caso use <stdio.h>. Outra coisa é que fiz sem utilizar funções, fiz td no programa principal. Dê uma olhada e vê se você consegue aproveitar alguma coisa do programa que fiz. Está aí: #include <iostream.h> int main() { int VET[30], VETA[30], VETB[30], i, CONT1 = 0, CONT2 = 0; for (i = 0; i < 30; i++) { cout << "Digite o " << i + 1 << " numero: "; cin >> VET[i]; if (VET[i] > 0) { CONT1++; VETA[CONT1 - 1] = VET[i]; } if (VET[i] <= 0) { CONT2++; VETB[CONT2 - 1] = VET[i]; } } cout << "\n\nVETA > 0: "; for (i = 0; i < CONT1; i++) cout << VETA[i] << " "; cout << "\n\nVETB < 0: "; for (i = 0; i < CONT2; i++) cout << VETB[i] << " "; system("PAUSE >= nul"); }[/CODEBOX] falou cara, t+ . . . Abraços!!!
  21. e aí Henrique Neto, conseguiu fazer o projeto aí cara? deu td certo? desculpa não ter entrado esses dias aki é que nem estava em casa, cheio de coisas pra fazer, mas depois posta aí se deu td certinho aí cara. Qualquer coisa estou à disposição. T+ Abraços...!!!
  22. Boa noite Henrique Neto, cara, fiz aki de outra forma. Os Led's acendem quando alguém passa pelo sensor e conta o tempo em que os sensores estiveram ativos, porém mostra o tempo total, fiz tipo um cronômetro, aí quando o sensor é ativo ele começa a contar, o sensor desliga ele para de contar, o sensor liga de novo ele começa a conta mas começa de onde parou da última vez, mostrando assim o tempo total em que os sensores estiveram ativos. É isso mesmo que você queria? Testa o programa aí pelo menos pra você ver como ficou e tirar uma idéia +/-: #include <dos.h> #include <iostream.h> #include <conio.h> #include <windows.h> #define DADOS 0x378 #define STATUS 0x379 typedef short _stdcall (*PtrInp)(short EndPorta); typedef void _stdcall (*PtrOut)(short EndPorta, short valor); int main(void) { HINSTANCE hLib; //Instância para a DLL inpout32.dll. PtrInp inportb; //Instância para a função Imp32(). PtrOut outportb; //Instância para a função Out32(). //Carrega a DLL na memória. hLib = LoadLibrary("inpout32.dll"); if(hLib == NULL) //Verifica se houve erro. { cout << "LoadLibrary Failed.\n"; getch(); return -1; } //Obtém o endereço da função Inp32 contida na DLL. inportb = (PtrInp) GetProcAddress(hLib, "Inp32"); if(inportb == NULL) //Verifica se houve erro. { cout << "Erro. A função Inp32 não foi encontrada.\n"; getch(); return -1; } //Obtém o endereço da função Out32 contida na DLL. outportb = (PtrOut) GetProcAddress(hLib, "Out32"); if(outportb == NULL) //Verifica se houve erro. { cout << "GetProcAddress for Oup32 Failed.\n"; getch(); return -1; } int SEG1 = 0, MIN1 = 0, SEG2 = 0, MIN2 = 0, TEMPO_TOTAL1, TEMPO_TOTAL2; unsigned char Status; while (!kbhit()) { Status = inportb(STATUS); if ((Status) == 0x77) { outportb(DADOS, 0x01); SEG1++; _sleep(1000); if (SEG1 > 59) { SEG1 = 0; MIN1++; } system("CLS"); cout << "Sensor 1 ATIVO! " << MIN1 << " : " << SEG1; TEMPO_TOTAL1 = SEG1 + (MIN1 * 60); } if ((Status) == 0x6F) { outportb(DADOS, 0x02); SEG2++; _sleep(1000); if (SEG2 > 59) { SEG2 = 0; MIN2++; } system("CLS"); cout << "Sensor 2 ATIVO! " << MIN2 << " : " << SEG2; TEMPO_TOTAL2 = SEG2 + (MIN2 * 60); } if ((Status) == 0x67) { outportb(DADOS, 0x01); outportb(DADOS, 0x02); SEG1++; SEG2++; _sleep(1000); if (SEG1 > 59) { SEG1 = 0; MIN1++; } if (SEG2 > 59) { SEG2 = 0; MIN2++; } system("CLS"); cout << "Sensor 1 ATIVO! " << MIN1 << " : " << SEG1 << "\n"; TEMPO_TOTAL1 = SEG1 + (MIN1 * 60); cout << "Sensor 2 ATIVO! " << MIN2 << " : " << SEG2; TEMPO_TOTAL2 = SEG2 + (MIN2 * 60); } } system("CLS"); cout << "Tempo total em que o sensor 1 ficou ATIVO: " << TEMPO_TOTAL1 << "s"; cout << "\n\n"; cout << "Tempo total em que o sensor 2 ficou ATIVO: " << TEMPO_TOTAL2 << "s"; system("PAUSE >= nul"); FreeLibrary(hLib); // Libera memória alocada pela DLL. return(0); }[/CODEBOX] Qualquer dúvida, se eu puder ajudar estou às ordens! Abraços . . . :)
  23. Risadão

    Vetor

    Boa noite viciado, cara, quando você não sabe o tamanho do vetor você pode fazer como no exemplo: int *VET, V; cout << "Digite o tamanho do vetor: "; cin >> V; VET = (int *)malloc(V * sizeof(int));[/CODEBOX] Quando você declara um vetor com um asterisco na frente quer dizer que o vetor não tem tamanho definido. O V no caso é o tamanho do vetor, que cada vez que o programa for executado irá mudar. No seu caso, acho que você poderia fazer o seguinte, declare os vetores A e B com o asterisco na frente porque eles não tem tamanho definido e coloque dois contadores, um pra quando o número for menor ou igual a 0 e outro quando o número for maior que zero, assim você vai saber qual deverá ser o tamanho dos vetores A e B: [CODEBOX]for (i = 0; i < 30; i++) { printf("Preencha o vetor X[%d] \n",i); scanf("%d",&X[i]); if (X[i] > 0) CONT1++; if (X[i] <= 0) CONT2++; } A = (int *)malloc(CONT1 * sizeof(int)); B = (int *)malloc(CONT2 * sizeof(int)); é isso aí cara, não sei se deu pra intender +/- mas qualquer dúvida posta aí que tento explicar melhor, e depois posta se conseguiu fazer certinho dessa forma ou de qualquer outra forma. VLW . . . ! ! ! :)
  24. Risadão

    Ajuda em programa!

    E aí Beraldo, tranquilo? cara, consegui fazer aki, das duas formas, somando e diminuindo 32 e também com o strlwr e o strupr. Vlw pela ajuda cara. Grato! Abraços . . . :D
  25. Risadão

    Ajuda em programa!

    Olá Beraldo, não consegui fazer somando ou subtraindo 32. Desculpe a ignorância mas é que ainda estou começando a programar em C++. Poderia postar algum exemplo por favor? Vlw . . . T+ Abraços!!!
×
×
  • Criar Novo...