Ir ao conteúdo
  • Cadastre-se

ScreenBlack

Membro Pleno
  • Posts

    1.062
  • Cadastrado em

  • Última visita

Tudo que ScreenBlack postou

  1. Está parecendo ser problema no chipset da placa-mãe. Além do teclado, os demais periféricos funcionam corretamente? Tentou resetar a BIOS? (usando hard reset)
  2. Apenas para corrigir sua explicação. O programa não faz a leitura do arquivo, mas sim, da entrada padrão (stdin) através de streaming do conteúdo do arquivo. Trabalhando desta forma, tanto faz para o programa se o conteúdo vem de arquivo ou de outra forma qualquer que utilize o buffer stdin. Que bom que você descobriu como fazer.
  3. Para receber o nome do arquivo por parâmetro, utilize os argumentos "argc" e "argv" na função "main()": O código acima considera que o nome do arquivo seja o primeiro parâmetro repassado ao programa.
  4. Algumas funções básicas para manipulação de arquivo: "fopen()" para abrir "fclose()" para fechar "fprintf()" para escrever "fscanf()" para ler OBS: Nunca esqueça de fechar o arquivo após sua utilização, porque isso informa ao sistema operacional que o arquivo estará liberado para acesso de outro programa caso seja necessário.
  5. Pode simplificar todas essas rotinas, por apenas esta: int primo = ; int fatores[MAX] = {}; int contFator = ; int tmpContFator = ; int resto = ; /* Fator inicial */ fatores[contFator++] = 2; /* Inicio da rotina com valor posterior ao fator inicial (2) */ for ( primo = 3; primo < MAX; primo++ ) { for (tmpContFator = ; tmpContFator < contFator; tmpContFator++) { resto = primo % fatores[tmpContFator]; /* Testando a divisibilidade do numero por todos os demais contidos no vetor */ if ( resto == ) break; else if ( tmpContFator == (contFator - 1) ) /* Se estiver na ultima posicao do vetor, insere o numero primo no final do vetor */ fatores[contFator++] = primo; } }
  6. A rotina não tem muito segredo. Elaborei essa, com as partes comentadas: /* MONTAGEM DE FIGURA - INICIO */ int divisor = qtdfilascomp - 1; int tmpCont = 0; int tmpCont2 = 0; int repetirFigura = 1; int contRepetirFigura = 0; int alternarFigura = 1; for (tmpCont = 0; tmpCont < qtdfilascomp; tmpCont++) /* Define a fila */ { for (tmpCont2 = 0; tmpCont2 < ( (qtdfilascomp * 2) - 1); tmpCont2++) /* Percorre as fileiras */ { if ( ( tmpCont2 >= divisor ) && ( contRepetirFigura++ < repetirFigura ) ) /* Trata as alternacias ( "-" e "|" ) a partir da posicão 'divisor' */ { if ( alternarFigura == 1 ) { printf("|"); alternarFigura = 0; } else { printf("-"); alternarFigura = 1; } } else printf("-"); } printf("\n"); repetirFigura += 2; contRepetirFigura = 0; divisor--; alternarFigura = 1; } printf("\n"); /* MONTAGEM DE FIGURA - FIM */ Explicar o processo utilizando palavras é um pouco complicado, pois é mais fácil complicar as idéias do que clareá-las.
  7. Faça uma rotina que será a contagem de fila. E utilize esse contador para subtrair do total de atletas: for (qtdFilas = 1; qtdFilas <= qtdAtletas; qtdFilas++ ) qtdAtletas -= qtdFilas; if ( qtdAtletas == 0 ) qtdFilas--;
  8. Tem basicamente 2 erros no código 1) Precisa isolar o tratamento de ano bissexto no "if" (destaque em vermelho): Na função "valida()": if ( ( (data.ano % 4 == 0) && (data.ano % 100 != 0) ) || ( data.ano % 400 == 0 ) ) Na função "dias_decorridos()": if ( ( ( (data_ini.ano % 4 == 0) && (data_ini.ano % 100 != 0) ) || ( data_ini.ano % 400 == 0 )) && data_ini.mes > 2 ) 2) Na função "dias_decorridos()" troque para "float" o retorno da função e também defina para "float" as variáveis "dias_no_mes", "tot_dias_ini" e "tot_dias_fim". Testei as rotinas e funcionou corretamente depois das mudanças que apresentei acima.
  9. ScreenBlack

    Problema em c

    Nas variáveis "pesoAltura" e "nomeSexo", você está definindo 4 linhas e 1 coluna, e na rotina, você está fazendo a leitura de 2 linhas e 2 colunas. Outro problema, é que você está definindo apenas 1 char para armazenar o nome. Esses dois problemas resultarão em buffer overflow. Para o código ficar mais limpo, aconselho separar as variáveis em: float peso[4]; float altura[4]; char nome[4][128]; // 4 linhas com 127 caracteres em cada (desconsiderando o finalizador de string) char sexo[4]; Desta forma, precisará apenas fazer a leitura por linha: "for (int lin = 0; lin < 4; lin++)"
  10. Tente utilizar uma versão live cd de algum sistema operacional, para conferir se o problema está no windows ou não. Por exemplo o SystemRescueCD
  11. Esta mudança de comportamento começou a ocorrer depois de alguma mudança feita no sistema? O notebook está rodando windows? Caso esteja, tentou acessar pelo modo de segurança para rever as configurações para rever a configuração?
  12. ScreenBlack

    Linguagem c .

    Seu código possui variáveis desnecessárias. Pode utilizar a variável saldo para armazenar o saldo da conta. Utilizar uma variável "movimento" para receber o valor que vai depositar ou sacar, fazendo a atualização na variável "saldo" Dei uma organizada no seu código atual e adicionei apenas um loop para poder repetir as operações. Acredito que seja suficiente para você entender e dar continuidade no desenvolvimento do código. Agora a rotina de depósito ficará por sua conta. Tente desenvolve-la e se tiver dúvida apresente o código que criou.
  13. Na criação da lista a ordem a inserção estava invertida. Na função que elimina o valor do meio, estava apontando para uma variável criada na própria função e não para a lista oficial, impedindo que a eliminação fosse concluída corretamente. Segue as funções corrigidas e comentadas os pontos alterados: ponteiro criar_lista(ponteiro pont) { int valor; ponteiro aux = NULL; if (pont != NULL) /* Se escolher novamente a opção de criar lista, eliminará a lista antiga */ free(pont); printf("\n\n"); printf("Entre com o Valor: "); scanf("%i", &valor); while ( valor > ) { /* Cadastra primeiro elemento na lista */ if (pont == NULL) { pont = malloc(sizeof(struct NO)); pont->info = valor; pont->link = NULL; aux = pont; } else /* Insere os demais */ { aux->link = malloc(sizeof(struct NO)); aux = aux->link; aux->info = valor; aux->link = NULL; } printf("Entre com o Valor: "); scanf("%i", &valor); } return pont; } ponteiro remove_meio(ponteiro pont) { ponteiro aux1 = NULL; ponteiro aux2 = NULL; int cont, meio; if(pont != NULL) { if (pont->link == NULL) { free(pont); pont = NULL; } else { meio = contagem_nos(pont); if ((meio % 2) > ) /* Aponta para o valor central da lista */ meio = (meio / 2) + 1; else meio = meio / 2; aux1 = pont; cont = 2; while (cont < meio) { aux1 = aux1->link; cont++; } aux2 = aux1->link; aux1->link = aux1->link->link; free(aux2); } } else { printf("Lista Vazia!"); } return pont; }
  14. Troque "int CodVel(char a)" para "int CodVel(char entrada)" e remova "char entrada;"
  15. As expressões "(num1 == num2)" e "(num2 == num1)" são iguais. Mesmo coisa dizer que (2 == 2), assumindo que num1 e num2 possuam valor 2. Acredito que a melhor expressão pra demonstrar a igualdade, seria: if (num1 == num2) printf("N%cmero 1 [%d] e n%cmero 2 [%d] s%co iguais\n", 163, num1, 163, num2, 198);
  16. Retire o "&" da função "printf()", responsável por mostrar a matriz: printf ("%.0f ", xadrez[y][x]);
  17. Parece que está compilando um projeto C, utilizando bibliotecas C++.
  18. Amigo, gostaria de poder te ajudar mais, porém, meu conhecimento alcança até esse ponto para tentar descobrir o problema utilizando ferramentas de gerenciamento. O que poderia aconselhar a partir de agora, seriam ferramentas de verificações e correções do windows, mas, sem indicação de alguma em específico (não conheço muito esses tipos de ferramentas). Espero que algum outro membro do fórum possa lhe ajudar com mais profundidade nesse assunto. Infelizmente, terei de parar por aqui. Boa sorte!
  19. 1) Na sua primeira imagem, na janela da direita (Gerenciador de Tarefas), você consegue descobrir qual o número de identificação em que o processo (PID) "svchost.exe" está executando. No caso da sua imagem, é o número 932. Meu exemplo, peguei o processo com o PID 400: 2) Agora abra o programa "procexp", demonstrado na sua segunda imagem. Ele listará todos os processos. Então, procure pelo processo com o PID correspondente. 3) Com o botão direito sobre o processo, na tela do "procexp", escolha a opção "Properties...", então abrirá uma janela com os serviços que fazem parte do processo "svchost", mostrando também qual biblioteca responsável por ele. Peguei como exemplo, a "wlansvc.dll": 4) Abra o programa "RamMap", também contido na lista demonstrada na sua segunda imagem. Clique na aba "File Summary" e procure pela biblioteca referente a etapa anterior (3). Conseguiremos descobrir quanto de memória essa biblioteca está utilizando: 5) Repetir passos 3 e 4, buscando a biblioteca que está ocupando a memória excedente. Depois de encontrado o serviço responsável pelo consumo excessivo de memória, precisamos saber se ele pode ser desativado ou não. Deve-se tomar cuidado na decisão, caso contrário, pode trazer problemas ao uso do sistema operacional.
  20. O Serviço "netsvcs.exe" possui diversos serviços atrelados a ele (conforme mostra em linhas azuis no seu post #7). Teria de descobrir qual desses serviços está consumindo essa memória, para então saber se dá pra desabilita-lo ou não. Acredito que esse link vai te ajudar a descobrir isso, com as explicações bem detalhadas: http://www.yac.mx/pt/pc-tech-tips/windows-7/list-services-running-under-svchostexe-process.html Um dos aplicativos que ele indica usar, faz parte de um pacote de aplicativos de administração e gerencia do windows, chamado "SysInternalsSuite", que pode ser baixado aqui: http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx Espero que te ajude.
  21. Parece que esse update serve apenas para remover um outro update que não funcionou muito bem ("KB3004394"), porém, parece que esse também não funcionou corretamente para remover o outro. Procurando na internet, a dica que o pessoal dá é: Remover manualmente o update "KB3004394", então, esse novo ("KB3024777") não deve mais aparecer na lista. Para remove-lo: Painel de Controle > Programas e Recursos > Exibir atualizações instaladas Procure pelo update "KB3004394" e então remova-o. Veja se normaliza o sistema.
  22. Está parecendo que o Netsvcs é responsável pelo Windows Update. E também existe o processo "TrustedInstaller.exe" rodando. Isso está com cara de que o windows está com atualizações a serem aplicadas (baixando ou já prontas para instalar). Talvez seja o motivo do alto consumo de memória. Já verificou o windows update?
  23. O programa svchost serve para gerenciar outros programas. Na imagem que postei acima, mostra entre parenteses o tipo de serviço gerenciado pelo svchost. As explicações desses links te ajudarão a entender: http://windows.microsoft.com/pt-br/windows/what-is-svchost-exe#1TC=windows-7 http://www.tecmundo.com.br/windows-7/3900-para-que-servem-os-diversos-processos-svchost-exe-.htm
  24. Pode verificar qual o programa instalado que está consumindo muita memória, e tomar a providência que desejar (remover, reinstalar, ...)
  25. Usando o Monitor de Recursos, você consegue ver qual serviço está associado ao "svchost.exe"

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!