Ir ao conteúdo
  • Cadastre-se

Fernando Mercês

Membro VIP
  • Posts

    2.310
  • Cadastrado em

  • Última visita

Tudo que Fernando Mercês postou

  1. Muito obrigado pelas sugestões, @GenesisG7! Já troquei todas as peças que recomendou na minha lista. Achei as memórias mais baratas até. Vou tentar ver individualmente em diferentes lojas se consigo promoções, como recomendou. A RX 580 tá R$ 1.699,90. Bem puxado. Abraço!
  2. Aí amigos, o que acham? Processador AMD Ryzen 5 1600, Cache 19MB, 3.2GHz (3.6GHz Max Turbo), AM4 Placa-Mãe Gigabyte B450M DS3H, AMD AM4, mATX, DDR4 Placa de Vídeo Asus Arez Dual AMD Radeon RX 580 OC Edition, 8GB, GDDR5 - AREZ-DUAL- Memória Corsair Vengeance LPX, 16GB (2x8GB), 3000MHz, DDR4, CL16, Preto SSD Kingston A400, 480GB, SATA, Leitura 500MB/s, Gravação 450MB/s Fonte Corsair 650W 80 Plus White VS650 - CP-9020172 R$ 4.774,13 já com o frete. Aí depois me viro com teclado, mouse, gabinete, etc... Parece ok pra vocês? Tipo, tudo compatível? Abraço e obrigado pela ajuda!
  3. Salve, galera, tudo bem? Tempo que não venho aqui, mas não conheço comunidade melhor no que diz respeito à hardware. Hoje eu quase comprei essa oferta, mas vi uma galera aqui dizendo pra não cair nessas lojas de prateleiras. Só que eu tô ultra, mega desatualizado do que tá rolando no mundo do hardware e por isso vim pedir a ajuda de vocês para montar um PC para jogos que eu não precise trocá-lo por pelo menos um ano e meio, dois. Será que com uns 4 mil daria pra rodar um Fortinite no máximo? Queria garantir que a próxima versão desse jogo rodasse, por exemplo. E onde vocês compram atualmente? Online mesmo? Quando eu montava eu comprava na A1 Network Trading mas fui ver e nem existe mais. Que bom, pois demorava mais de um mês pra chegar num container chinês. kkkk Grande abraço!
  4. Tá bem legal, cara. Parabéns! Já tá bem menor né? Quer parar por aí? Porque eu tenho mais sugestões! haha Como você tá inicializando o array, não precisa dizer quantos elementos ele terá. O compilador calcula pra você, mas você vai ter que usar a notação de ponteiro junto, ficando *mes_por_extenso[]. Se você reparar, o mes-1 bate com a posição da string certa no array então você não precisa do loop. Se você fizer mes_por_extenso[mes - 1] já vai funcionar sempre, percebe? Se o mês é Março (3), por exemplo, vai pegar a posição 2 do array (mes - 1), sem precisar do laço. Dá pra fazer tudo na main(). O retorno da main() é interessante que seja int. Aí você põe um return 0 no fim dela. Você não precisa mais da string.h nem da stdlib.h. Você não precisa mais dessa char data[11] também, porque agora já tá lendo direto para os inteiros com a scanf(). Como int é o tipo padrão do C, você não precisa informá-lo ao declarar uma unsigned. Dá pra declarar todas com uma só linha também: unsigned dia, mes, ano; Enfim, seu código tá muito legal. Só tô seguindo com as sugestões porque to admitindo que você tá curtindo implementar. Não encare como crítica, ok? Em programação existem infinitos jeitos de se resolver um problema e não tem essa de certo e errado a meu ver. Grande abraço!
  5. Relaxa. O assunto é extenso à beça hehe. Por que você não faz o seguinte: quando terminar e funcionar do seu jeito, avisa e volta aqui. Aí a gente discute alguns jeitos de melhorar, pra aprendermos ainda mais.
  6. Verdade. E ó, olhando bem esse programa dá pra ser muito pequeno. hehe Acho importante você seguir com sua linha de raciocínio, mas depois que terminar, vale observar essas sugestões minhas e do @isrnick. Tenho mais algumas ó: Usar unsgined int ao invés de int, já que todos esses inteiros aí não podem ser menor que 0 (dia, mês, ano). Isso vai requerer o modificador %u ao invés do %d. Criar um array de strings para os meses e depois exibir diretamente o mês correto usando array[mes - 1]. Teu código vai ficar bem mais limpo, rápido e você vai economizar 12 if's/switch's. Adicionar um tratamento de erro para dia/mês inválido. Abraço!
  7. Em tempo, você pode usar o %d pra ler direto um inteiro usando a scanf(), assim você não precisa ficar convertendo de string: #include <stdio.h> int main(int argc, char *argv[]) { int dia, mes, ano; scanf("%d-%d-%d", &dia, &mes, &ano); printf("dia: %d\nmes: %d\nano: %d\n", dia, mes, ano); return 0; } Veja: $ ./data 17-05-2018 dia: 17 mes: 5 ano: 2018 Valeu!
  8. A printf() tá dentro do bloco do switch. Só tirar. Abraço!
  9. De fato, nenhuma extensão "é vírus" por si só, mas este arquivo está bem estranho e acho que ele perdeu a formatação quando você colou seu conteúdo aqui no fórum. De repente se você editar e usar um bloco de código (botão <>) vai melhorar. Ou você poderia comprimir este arquivo com uma senha e anexar aqui (mas não sei se o fórum ou suas regras permitem). Bem, eu fui ajustando o arquivo aqui e realmente ele tenta executar algo: C:\Windows\System32>Set data= ZPC(" 7Pl(a Pn-WO TIXm aPm.Q IOrsZ Ia ). 4nas 4f 1 GZUq( 'p 1:// hzg.I hZ4qI .r4g/ ?hghZ dHM8S AS 7 ThEWp DOJni 7o s qB KS drIk6 Lma9z wxsjO ahikQ 1nvb0 4V x7 MHI6N Td/ n gpXr kPi4q TDz7+ MOr+/ NrmtL A3 kSJ Tl K zQ='; )"); echo %data% | nZah4Q1t4QIDEpIzz\dk.j\ 4QID1pIzz.ICI -a4 - QZa k 'nZah4Q1t4QIDEpIzz\dk.j\' is not recognized as an internal or external command, operable program or batch file. Parece ter algum bug, ou eu não descobri ainda como desofuscar totalmente. Somando essa clara intenção de ocultar o que o script faz com o fato de receber um .bat anexo num e-mail, eu diria que não é confiável e tem grandes chances de ser vírus mesmo. UPDATE: Pelo padrão depois do pipe (|), deduzi que este .bat chama o PowerShell e parece que eu estava certo. A string nZah4Q1t4QIDEpIzz\dk.j\ 4QID1pIzz.ICI parece ser decodificada para WindowsPowerShell\v1.0\PowerShell.exe, que tá embaixo da %SystemRoot%\System32, o que bate com o primeiro comando deste .bat. Ou seja, este .bat de fato chama o PowerShell, provavelmente para baixar um malware (ainda tem o padrão parecido com uma URL em 1://), o que me faz pensar que este .bat é um dropper/downloader. Se você tiver o arquivo intacto do jeito que recebeu posso tentar ajudar mais. Abraço.
  10. A função isdigit() tá no header ctypes.h e não em stdlib.h, logo, segundo o enunciado do seu exercício você não pode usar. Parece que parte do que seu professor está pedindo, é justamente implementar uma função análoga, não usar uma pronta. Pelo menos é o que faz sentido pra mim, já que isso é um exercício. Você vai precisar entender a tabela ASCII pra fazer isso, creio. Abraços, Fernando
  11. Tamo junto! Eu acho que a mensagem LB_ADDSTRING só deixa adicionar um item mesmo (que acaba na quebra de linha). Acho que você vai ter que chamá-la várias vezes. Por isso falei da fgets(), que você chama várias vezes também, aí lê linha por linha e já fica pronto pra passar pra SendMessage(). Ou fscanf()? Pra ser honesto, não sei qual a melhor solução pro seu caso. Cada item vai estar numa linha? Em qual formato? Sorry, eu raramente trabalho com arquivos de texto.
  12. É que abrir é diferente de ler. Até agora, pelo que vi no seu código você só abre os arquivos, não lê seu conteúdo. Pra ler tem que usar ReadFile() ou fread(). Por exemplo, se você fizer assim, vai funcionar: case IDC_BUTTON_LIST: { estoque = fopen ("estoque.txt","r"); char buff[255]; fread(buff, 1, 255, estoque); SendMessage(gProductList, LB_ADDSTRING, 0, (LPARAM)buff); fclose(estoque); } break; Só que isso não tá bom, nem certo. rs O lance é que ler linhas em C é chato mesmo. Acho que mais coerente seria usar a fgets() e você tem que saber o tamanho máximo da linha, de qualquer forma. Mas eu ainda acho que a API do Windows pura poderia fazer tudo. Bem, tu que sabe... Abraço!
  13. Não entendi. As cores serão items dentro do ListBox? É só escrever em Português, não? Agora, pra fazer funcionar é outra história... Vai ter que adicionar código no evento SelectedIndexChanged do ListBox. Abraços!
  14. Seguindo a lógica que você seguiu, teria que usar a fread() antes de fechar o arquivo com a fclose(). No entanto, tem conceitos misturados aí. Você tá usando as funções da API do Windows e misturando com as da biblioteca C padrão (fopen(), fread(), fclose(), etc). Seria mais legal usar as do Windows mesmo (CreateFile(), ReadFile(), WriteFile(), CloseFile(), etc), mas claro, nada impede de você seguir na sua lógica. Aqui tem um exemplo usando as funções do Windows: Opening a File for Reading or Writing, mas vê aí que a gente se ajuda por aqui. Abraços!
  15. Acho que o problema é que o @rogério dos santos araujo matou a antiga main() do programa quando colocou o código dele e agora ela termina sem o programa chamar as outras funções. Eu não sei como é a main() original, mas aparentemente algo assim resolveria: int main(int argc, char *argv[] { FILE *fp = fopen("C:\\arcade\\arcade1.exe", "rb"); if (fp == NULL) { printf("Game over\nTry again\n"); exit(1); // o melhor é sair com 1 neste caso, pois é erro... } fclose(fp); return os_main(argc, argv); } Se não rolar, posta o código original aqui. Se puder usar o https://pastebin.com melhor ainda, pois é bem grande pra ver no espaço deste tópico (tem highlight de C lá!). Abraço!
  16. Opa, Você precisa instalar o pacote libncurses-dev, que tem a curses.h. E faltou informar para o gcc o nome do seu programa (do seu arquivo .c): $ sudo apt-get install libncurses-dev $ gcc -o lerub lerub.c -lncurses Em tempo, é bom se acostumar a usar as opções -W e -Wall do gcc pra ver se tem mais erros no programa. Veja: $ gcc -W -Wall -o lerub lerub.c -lncurses lerub.c: In function ‘main’: lerub.c:36:59: warning: unused variable ‘c’ [-Wunused-variable] int c = getch(); ^ lerub.c:8:10: warning: unused parameter ‘argc’ [-Wunused-parameter] main(int argc, char *argv[]) ^ lerub.c:8:22: warning: unused parameter ‘argv’ [-Wunused-parameter] main(int argc, char *argv[]) ^ lerub.c: In function ‘finish’: lerub.c:45:24: warning: unused parameter ‘sig’ [-Wunused-parameter] static void finish(int sig) ^ Tem várias variáveis não utilizadas em seu código. Se você ainda tiver desenvolvendo e for utilizá-las mais tarde, tudo bem, mas se não, pode removê-las. :-) Abraços!
  17. Não é bem erro, mas assim você está "roubando" rsrs. Isso porque seu programa em C chama o comando tasklist, e este faz o trabalho. Imagino que o seu professor tenha pedido é pra usar a Windows.h, como o início do tópico sugere e se você entregar assim, pode ganhar zero porque não fez o que ele pediu ou 10 por ter "pensado fora da caixa", não sei. rs Um exemplo de uso da EnumProcesses() pode ser visto aqui. Veja que ela não resolve tudo, é preciso mais código para de fato imprimir uma lista com nomes e PIDs dos processos. Tem mais sobre o assunto em Process Enumeration. Abraços!
  18. Eu gosto do MV RegClean. É nacional.
  19. Não entendi como você não sabe. Não seria só olhar a sintaxe que precisa ser traduzida? O que você colocou pra gente deve fazer parte do enunciado. A sintaxe é o que você deve olhar e, se meu chute está certo, deve estar em portuguol e você precisa traduzir para inglês e depois pra C, tipo: escreva("Olá, Mundo!") // portugolwrite("Olá, Mundo!") // inglêsprintf("Olá, Mundo!\n") // C Pseudocódigo em inglês é diferente da sintaxe de C, mesmo que ambos sejam em inglês. Tem um exemplo de um while aqui. Mas enfim, você mais do que eu sabe o que o seu professor quer. Abraço.
  20. O exercício deve estar em Portugol ou pseudo-código, não?
  21. Opa, tudo em paz? Dá uma olhada no manual da função scanf. Lá fala sobre o retorno dela: Return Value These functions return the number of input items successfully matched and assigned, which can be fewer than provided for, or even zero in the event of an early matching failure. Ou seja, ela retorna no número de entradas que casaram com sucesso com o formato. No seu caso você só pediu uma entrada (%d), então ela tem que retornar 1. Se o retorno for diferente disso, falhou. Abraços.
  22. Legal! Parabéns por dar os créditos ao autor original e por compartilhar conosco! Gostaria de deixar uma dica caso precise somente forçar a instalação do pacote deb, sem modificar as dependências que é com a opção --force-depends do dpkg. Outras opções do gênero podem ser vistas com --force-help. Abraço!
  23. Amigo, isto não é um erro, é um aviso (warning). Só está dizendo que você está ignorando o retorno da função scanf(). Você tem algumas opções para resolver isso: - Desativar essa opção warn_unused_result no compilador. - Usar o retorno da scanf(), que é um inteiro em algum lugar ou variável. - Fazer um cast para void do retorno. Se escolher a terceira opção, ficaria: (void) scanf("%i", &aceitar); Abraço!
  24. É só usar as funções de data do C. Google? http://www.cplusplus.com/reference/clibrary/ctime/strftime/

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!