Ir ao conteúdo
  • Cadastre-se

Lucca Rodrigues

Membro Pleno
  • Posts

    1.081
  • Cadastrado em

  • Última visita

posts postados por Lucca Rodrigues

  1. 2 minutos atrás, arfneto disse:

    Isso que postou não é uma aplicação para console

    É para desktop. Quando você fechou a janela, a console fechou também? pra mim não fecha, tenho que fechar manualmente pra toda aplicação com a api do windows pra desktop.

     

    4 minutos atrás, arfneto disse:

    Pode até ficar sem essa janelinha intrusiva usando -nosplash na carga no programa

    O que eu estava falando é do terminal.

    Em 02/02/2023 às 19:16, Lucca Rodrigues disse:

    nesse exemplo do matlab, se esse terminal que apareceu ficasse ali, eu acharia estranho. Mais estranho ainda se eu tivesse que fechar manualmente depois de encerrar o matlab.

    Aparece um terminal, some e depois aparece a splash screen.

    ezgif-2-9359e13a01.gif.be51975b0fb9fd19768758ba7019fc9b.gif.350ee663405fb2e5715a67e5f74adadf.gif

    • Curtir 1
  2. @arfneto Se quiser pode testar isso, mas te garanto que o problema não é o código:

    #include <windows.h>
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
        PSTR lpCmdLine, INT nCmdShow) {
    
        MSG  msg;
        WNDCLASSW wc = {0};
        wc.lpszClassName = L"Static Control";
        wc.hInstance     = hInstance;
        wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
        wc.lpfnWndProc   = WndProc;
        wc.hCursor       = LoadCursor(0, IDC_ARROW);
    
    
        RegisterClassW(&wc);
        CreateWindowW(wc.lpszClassName, L"Exemplo",
                      WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                      100, 100, 300, 300, 0, 0, hInstance, 0);
    
        while (GetMessage(&msg, NULL, 0, 0)) {
    
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    
        return (int) msg.wParam;
    }
    
    LRESULT CALLBACK WndProc(HWND hwnd, UINT msg,
        WPARAM wParam, LPARAM lParam) {
    
        static wchar_t *texto =  L"Feche essa janela";
    
        switch(msg) {
    
            case WM_CREATE:
                CreateWindowW(L"Static", texto,
                    WS_CHILD | WS_VISIBLE | SS_LEFT,
                    20, 20, 300, 230,
                    hwnd, (HMENU) 1, NULL, NULL);
                break;
    
            case WM_CLOSE:
                DestroyWindow(hwnd);
                break;
    
            case WM_DESTROY:
                PostQuitMessage(0);
                PostMessage(GetConsoleWindow(), WM_CLOSE, 0, 0);
                break;
        }
    
        return DefWindowProcW(hwnd, msg, wParam, lParam);
    }

     

    35 minutos atrás, arfneto disse:

    Isso é chamado de splash screen em geral. Não está claro que a imagem seja um gif. E isso pode indicar que MATLAB está sendo carregado como um serviço ou ser apenas propaganda mesmo, disparado por algo na carga do sistema ou da sessão. E não é necessariamente um programa de console.

    gif que eu digo é a imagem que eu postei, aqui no clube do hardware não dá pra postar vídeo.

    Não sei se deu pra ver bem no gif, mas antes da splash screen, isso aparece e desaparece:
    image.thumb.png.9387e4a1a3632becfbab9b5030b30ad8.png
     

    35 minutos atrás, arfneto disse:

    Se você escreveu isso e acha que o " esperado" é ela ficar "escondida" e depois "fechada" é porque você escreveu o programa e está determinando como alguém vai usar isso. Até onde o sistema sabe é apenas um arquivo e possivelmente de código.

    O esperado que eu digo é o que se espera como usuário, pois nesse exemplo do matlab, se esse terminal que apareceu ficasse ali, eu acharia estranho. Mais estranho ainda se eu tivesse que fechar manualmente depois de encerrar o matlab.

    • Curtir 1
  3. Em 31/01/2023 às 12:49, arfneto disse:

    poste algo compilável, completo. É melhor para quem quiser ajudar.

    Pior que nem dá, são 4000 linhas de código, e depende de vários arquivos.

    Em 31/01/2023 às 12:49, arfneto disse:

    Então, concluindo: não acho nada normal fechar a console.

    Então, mas isso é algo que eu observo as vezes: minimizar, esconder, fechar, etc. A não ser que não seja exatamente isso que ocorre.

    Por exemplo, esse gif da inicialização do matlab aqui no meu computador:

    ezgif-2-9359e13a01.gif.be51975b0fb9fd19768758ba7019fc9b.gif

    A questão é justamente essa, o usuário não vai fazer nada na console, então o esperado é que ela fique escondida após a inicialização e seja fechada quando o programa for encerrado, sem que o usuário precise fechar manualmente.

    • Obrigado 1
  4. No meu notebook antigo que tinha Windows 8, a console fechava normalmente com o código abaixo. Windows 7 e 10 também funciona.

    HWND hWnd = GetConsoleWindow();
    PostMessage(hWnd, WM_CLOSE, 0, 0);

    Recentemente adquiri um notebook com Windows 11, e nada que eu uso faz a console fechar, o que me leva a pensar se não seria alguma configuração.

    image.thumb.png.dd7f04bec4507573748b0fcd9e160718.png

    image.thumb.png.18a25049fd4848ae02fddb06496f6d31.png

    ShowWindow(hWnd, SW_HIDE) também não funciona, só consigo usar ShowWindow(hWnd, SW_MINIMIZE) e somente depois de passados uns 2 segundos da inicialização do aplicativo (coloquei no meio de um segmento de código pro caso WM_TIMER), antes disso, ele não minimiza.

    Achei muito estranho, alguém sabe que diabos tá acontecendo?

    • Obrigado 1
  5. @SergioP Então, eu usava o Avast no meu notebook antigo porque ele tinha a questão de proteção online, só que como eu falei, ele tá olhando pra esse notebook com 1 mês de uso e falando de problema que na minha opinião não existe, mais me parece um scareware.

    Eu vou ver esse Kaspersky já que todo mundo aqui tá promovendo o menino, o problema nem é preço, só espero que não acuse problemas do além.

  6. @frosty6 

    Eu to com o Malwarebytes e o Avast, mas acho que vou desinstalar mesmo. Não é lá "lixo", mas esses "problemas" aí que ele mostra acho que é só propaganda pra ele, a questão foi essa mesmo.

    Mas assim, duvido que o Kaspersky ou qualquer outro não vai me dar problemas também. Antivírus mais atrapalha do que ajuda na maior parte do tempo, no caso do Avast é mais uma inconveniência, só o Malwarebytes que nunca deu problema pra mim até hoje.

    • Curtir 1
  7. Notebook Acer Aspire 5 novinho, e o Avast acusando 400 arquivos corrompidos, 8 drivers desatualizados, etc etc etc... É só pra me fazer comprar seus recursos "premium"?

    Esses "arquivos corrompidos" tô achando que é o avast que não conseguiu verificar o conteúdo e falou que tá corrompido... Os "problemas que deixam meu PC lento" ele tá problematizando literalmente todos os programas que eu instalei, e os "Arquivos inúteis" acho que é só eu fazer uma limpeza que some. Daí ele falou também de uns drivers desatualizados... Eu não entendo esse antivírus.

    image.thumb.png.ccb6a42995efc3f984af4625d1c20c52.png

    image.thumb.png.edb0cd1b99f28d0c5fbdc489fb520383.png

    image.thumb.png.90b75c066d94fae465eead24c08217f4.png

    image.thumb.png.a255e09135f7e8b999155e85c03d17b3.png

    image.thumb.png.778fa5ab3ef97a3757fbe7997d144885.png

  8. @solracm Sem indentação fica mais difícil de ler o código, não dá pra identificar os escopos, não dá pra saber onde começa e onde termina uma chave, etc. Tem que ficar procurando cada coisa, e provavelmente o ambiente que usa já indenta automaticamente, não se esforce pra dificultar a legibilidade.

     

    17 horas atrás, solracm disse:
     printf("Numero?"); res += scanf("%d", &a.numero); while ((getchar()) != '\n');
     printf("Data de inicio(dd/mm/ano)?"); res += scanf("%d %d %d", &a.data.dia, &a.data.mes, &a.data.ano); while ((getchar()) != '\n');
     printf("Hora de Inicio?"); res += scanf("%d %d", &a.hora.h, &a.hora.m); while ((getchar()) != '\n');
     printf("Data fim de atividade(dd/mm/ano)?"); res += scanf("%d %d %d", &a.data.dia, &a.data.mes, &a.data.ano); while ((getchar()) != '\n');
     printf("Hora de fim de atividade?"); res += scanf("%d %d", &a.hora.h, &a.hora.m); while ((getchar()) != '\n');
     printf("Atividade?"); res += scanf("%[^\n]", a.atividade); while ((getchar()) != '\n');
     printf("tempo?"); res += scanf("%2f", &a.tempo); while ((getchar()) != '\n');

    Você também pode (e deve) pular linhas para separar algumas coisas, e evite colocar mais de uma instrução numa linha, isso só aumenta o comprimento da linha e dificulta a legibilidade, então só coloque se for algo curto.

     

    Deixe sempre a main como a primeira função, acima dela só os protótipos das demais.

    Agora, sobre a forma que está lendo:

    17 horas atrás, solracm disse:
    printf("Data de inicio(dd/mm/ano)?"); res += scanf("%d %d %d", &a.data.dia, &a.data.mes, &a.data.ano); while ((getchar()) != '\n');

    Colocar espaços na string de formatação da scanf só vai fazer com que ela ignore caracteres de espaço em branco. Se quer ignorar o caractere / ou algum outro, use um especificador assim: %*c. Isso vai ler e ignorar um caractere, não importa qual seja.

    Esses loops while chamando a getchar() são desnecessários, colocar um espaço como primeiro caractere na string de formatação da scanf() que já basta, vai ignorar um eventual \n que sobre no fluxo de entrada.

     

    #define TAM 100
    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    typedef struct HORA
    {
        int h;
        int m;
    } hr;
    
    typedef struct data
    {
        int dia;
        int mes;
        int ano;
    } DATA;
    
    typedef struct dados
    {
        int numero;
        char atividade[51];
        char estado;
        float tempo;
        DATA data;
        hr hora;
    } Atleta;
    
    int menu(void);
    int existe(Atleta Guardar[], int quantidade, int numero);
    int guardar(Atleta Guardar[], int posicao, Atleta a);
    Atleta lerplaneamento(void);
    
    int main()
    {
        Atleta Dados[TAM];
        Atleta a;
        int quantidade = 0;
        int opcao, resultado;
        
        do
        {
            opcao = menu();
            switch (opcao)
            {
                case 1:
                    a = lerplaneamento();
                    resultado = guardar(Dados, quantidade, a);
                    
                    if (resultado == 1)
                    {
                        printf("Dados Inseridos\n");
                        quantidade++;
                    }
                    
                    break;
                case 2: 
                    break;
                case 3: 
                    break;
                case 4:
                    break;
                case 5:
                    break;
                default:
                ;
            }
        } while (opcao != 0);
        
        return 0;
    }
    
    int menu(void)
    {
        int op;
        
        do
        {
            printf("1 - Inserir atividade\n");
            printf("2 - Quantidade de Praticantes num determinado periodo\n");
            printf("3 - Listagem de Praticantes em um determinado periodo \n");
            printf("4 - Atividades Realizadas por praticante em um determinado periodo\n");
            printf("5 - Media de tempos de cada praticante\n");
            printf("0 - Sair\n");
            printf("Opcao: ");
            scanf("%d", &op);
        } while ((op < 0) || (op > 5));
        
        return(op);
    }
    
    int existe(Atleta Guardar[], int quantidade, int numero)
    {
        int i;
        for (i = 0; i < quantidade; i++)
        {
            if (Guardar[i].numero == numero) return(i);
        }
        
        return(-1);
    }
    
    int guardar(Atleta Guardar[], int posicao, Atleta a)
    {
        if ((posicao >= 0) && (posicao < TAM) && (existe(Guardar, posicao, a.numero) == -1))
        {
            Guardar[posicao] = a;
            return(1);
        }
        else return(0);
    }
    
    Atleta lerplaneamento(void)
    {
        Atleta a;
        int res;
        
        do
        {
            res = 0;
            printf("Numero: ");
            res += scanf(" %d", &a.numero);
    
            printf("Data de inicio (dd/mm/ano): ");
            res += scanf(" %d%*c%d%*c%d", &a.data.dia, &a.data.mes, &a.data.ano);
    
            printf("Hora de Inicio (hh:mm): ");
            res += scanf(" %d%*c%d", &a.hora.h, &a.hora.m);
    
            printf("Data fim de atividade (dd/mm/ano): ");
            res += scanf(" %d%*c%d%*c%d", &a.data.dia, &a.data.mes, &a.data.ano);
    
            printf("Hora de fim de atividade (hh:mm): ");
            res += scanf(" %d%*c%d", &a.hora.h, &a.hora.m);
    
            printf("Atividade: ");
            res += scanf(" %50[^\n]", a.atividade);
    
            printf("tempo?");
            res += scanf(" %2f", &a.tempo);
            
            a.estado = 1;
            
            return(a);
        } while (res != 7);
    }

     

    17 horas atrás, solracm disse:

    estou tendo algumas dificuldades em pesquisar/ listar por data

    Peça uma data ao usuário e com um loop, compare a data com as demais já cadastradas. Se tiver alguma equivalente, é só listar.

    • Obrigado 1
  9. @João Parolini

    1 hora atrás, João Parolini disse:

    eu real não sei nem começar esse código

    Sabe sim...

    1 hora atrás, João Parolini disse:

    a partir de um nome informado pelo usuário

    Consegue fazer um programa pra ler uma string? Provavelmente isso já te foi ensinado, se não, não cobrariam essa tarefa.

     

    Acredito que vai ser um pouco mais complicado tratar o nome digitado apenas com letras minúsculas. Que tal tentar primeiramente com iniciais maiúsculas?

    1 hora atrás, João Parolini disse:

    Exemplos:

    Maria das Graças Pimenta => MGP

    Fulano de Tal => FT

    José da Silva => JS

    Saulo Henrique Cabral Silva => SHCS

    Bastaria um loop percorrendo a string lida, e verificando se uma letra é maiúscula. Como verificar?

    image.png.0f04f2d36bcba687ffe7dd0a4abece11.png

    A letra deve estar no intervalo 65 a 90 em valores inteiros. É só isso que você precisa verificar, você poderia imprimir a letra logo em seguida.

     

    E como fazer pro caso das minúsculas? Basta saber que os nomes são separados por espaços, e a inicial de cada nome fica logo depois de um caractere de espaço, exceto a do primeiro nome. No mais, você vai ter que identificar cada um dos conectores pra não ter confusão, mas tente fazer com iniciais maiúsculas primeiro pra praticar.

    Poste um código.

    • Obrigado 1
  10. 9 horas atrás, Lucca Rodrigues disse:

    acho que dá pra usar um diodo com uma queda de tensão um pouco maior para a bateria

    @Andreas Karl @Renato.88 Só pra esclarecer, a fonte de 12V 6A é linear, e realmente, se a tensão fosse maior, o diodo da bateria ficaria inversamente polarizado, como vocês disseram. Mas eu fiz o que mencionei de usar diodos diferentes e deu cert o aparentemente, já que o diodo com a menor queda de tensão vai conduzir maior parte da corrente:

    image.png.3374a78e318af12a729b9062422ec490.png

    Só usei esses dois diodos porque é o que tem, mas não aguentam essa corrente, vou achar algum que aguente.. Esse tipo de coisa o simulador nunca mostra.

  11. 2 horas atrás, Andreas Karl disse:

    “embasbacado” com aquele transistor com a base ligada junto com o coletor

    Desculpa 😅

    Não mexo muito com eletrônica, as vezes acaba saindo umas barbaridades assim.. Falta de experiência minha.

     

    2 horas atrás, Andreas Karl disse:

    Agora o @Renato.88 está certo (pra variar kkk), se a tensão após o diodo na saída da fonte for maior que a da bateria o diodo dela vai ficar polarizado inversamente e não vai conduzir, na verdade isso é uma configuração clássica.

    @Renato.88 @Andreas Karl Agora entendi o que querem dizer. É que como eu havia dito, no caso eu estaria usando uma fonte com a mesma tensão e corrente da bateria, e diodos iguais. Mas acho que dá pra usar um diodo com uma queda de tensão um pouco maior para a bateria pra ter essa diferença na saída.

     

    3 horas atrás, Andreas Karl disse:

    E em geral o(s) próprio(s) diodo(s) retificador(es) impedem a corrente de chegar ao transformador e o retorno não sendo uma tensão muito acima da normal, pelo menos em várias vezes que isso aconteceu comigo com fontes chaveadas nada aconteceu, se estão ligadas o PWM compensa, se estão desligadas o LED de saída acende e acabou. Portanto pode ser até que apenas um diodo na saída da bateria seja suficiente.

    De qualquer forma, a queda de tensão do diodo que vou usar para a fonte é bem pequena, por volta de uns 0.2V. Mesmo que seja como você falou, acho que prefiro usar só por prevenção.

     

    Agradeço aos dois pela ajuda!

  12. Seria uma bateria 12v 6000mah e uma fonte 12V 6A, estou pensando em fazer algo assim:

    image.thumb.png.ff61433e835b12cca13c625e9b9f02b8.png

    O resistor de 2r na saída é só pra exigir 6A no simulador.

    Ao ligar ou desligar a chave, tem passagem de corrente em somente um dos diodos por vez, porém, a questão é que pra bateria, o transistor e o diodo schottky apresentam uma queda de 1V no total.

    Vocês tem alguma sugestão de um circuito melhor? (dá pra editar direto no simulador se quiserem testar)

  13. Recentemente comprei um notebook com Windows 11, e quis passar alguns arquivos que eu tinha salvo no meu HD externo para ele.

    Eu recebo essa mensagem se tento ejetar o dispositivo:

    image.png.5b2811744f04122d96eadceddc6bc037.png
    Então tentei ver um vídeo no youtube:

    Eu já havia ejetado o HD apenas puxando o USB sem segurança algumas vezes, inclusive 2 vezes neste novo notebook por não haver outra maneira... Não tive problemas.

    Tentei as 3 dicas do vídeo e nada:

    Dica 1 - Ele fala pra encontrar um aplicativo que está usando o dispositivo USB, mas ele não diz como, e talvez nem tenha como descobrir.

    Dica 2 - Não aparece a opção de ejetar o USB no gerenciamento de disco, nem em nenhum outro canto.

    Dica 3 - Se eu clico pra desinstalar o dispositivo, ele pede pra reiniciar o computador, e nada muda.

    Tentei também encerrar o Explorer pelo gerenciador de tarefas, como eu fazia raramente no meu outro notebook quando aparecia um erro semelhante, mas não deu certo também.

    Vocês têm sugestões?

  14. 5 horas atrás, HROGDev disse:

    1º - Possibilidade - Agora minha pergunta, os software podem ser feitos por pessoas sozinhas? Por mais que eu me esforçe eu olho as vezes para aqueles "programinhas" que "nós" as vezes fazemos e penso: "Tá! Agora qual é a utilidade comercial disso? Como o meu programa de somar os numeros das posições com coluna e linhas iguais de uma matriz melhora ou facilita a vida das pessoas"?

    Só complementando o que o colega acima disse.

    Se com "programinhas" quer dizer os programas interativos do C, C++, etc, poderia dizer que estão praticamente obsoletos. É interessante para o estudante porque programas interativos dependem da participação do aluno - ele pode inserir dados pelo teclado e observar o resultado.

    Sei que foi só um exemplo, mas trabalhar com uma matriz não necessariamente tem a ver com programação, e não vai diretamente facilitar a vida das pessoas, matrizes são só uma representação de dados.
    Pra ter algum impacto na vida das pessoas, precisa ter uma aplicação. Um exemplo de aplicação em sistemas elétricos: No fluxo de potência precisamos resolver um sistema de equações não-lineares, e pra isso se usa, por exemplo, o método Newton-Raphson. Se tem uma função vetorial, vai ter uma matriz jacobiana no processo. Saber trabalhar com matrizes é essencial, e a gente sempre começa pelo básico, mesmo que seja somando os números das posições com coluna e linhas iguais.

    • Curtir 1
  15. @Anacris109 Esse exercício me é familiar... Não conhece um tal de Aziz não né? 😛

     

    Veja, não precisa chamar printf() sucessivamente, a função vai concatenar strings subsequentes, mesmo que estejam na linha abaixo. Você pode simplesmente chamar uma vez e omitir o restante das chamadas.

     

    1 hora atrás, Anacris109 disse:

    scanf("%s",&continuar);

    Não se lê um char com %s.

    Com %s se espera uma string, leia com %c. Coloque um espaço como primeiro caractere na string de formatação para ler e ignorar um \n de um Enter que tenha dado em leituras anteriores que não vai ter mais problemas.

    scanf(" %c", &continuar);

     

    1 hora atrás, Anacris109 disse:

    int ponto jogador,A,B,n,j;
            int ponto jogador=p;  

    Não se pode declarar variáveis com espaço. Pode usar um underline.

    E quem é p? Viu que declarou ponto_jogador duas vezes?

     

    1 hora atrás, Anacris109 disse:

    while(continuar=='s')

    E essa instrução solta aqui?

     

    Corrija os erros, poste novamente com o botão code.

    • Curtir 1
  16. @juh.monteiroo Como já foi dito pelo arfneto, a configuração do devc++ que vem por padrão não vai te permitir declarar uma variável pra ser usada apenas no loop for.

    Esse ambiente é um saco, mas o pessoal continua usando. Aposto que seu professor também não mudou pra C99 ou C11 como foi mencionado no erro, então se você mudar o modo, não vai rodar na máquina dele.

    Pra evitar esse tipo de problema, você pode declarar o índice i antes do loop, mas pode continuar inicializando ele no loop mesmo.

  17. @ItoLuca Veja, o que diz é muito vago... Não sabemos qual sua dificuldade.

    Não é uma boa ideia pegar um código pronto da internet e tentar modificar. Por que?

    1 - É plágio.

    2 - Vai ter muito trabalho tentando entender a lógica implementada se for um algoritmo extenso.

    Veja algum vídeo no youtube explicando como implementar um algoritmo de jogo da velha. No final vai entender que se trata de uma série de estruturas condicionais.

    Tente ao menos começar a escrever um código e volte aqui se tiver dúvidas 😉

    • Curtir 2
  18. @Deivid Bittencourt

    Qual seria sua dificuldade? Já pesquisou sobre procedimentos em visualg?

    Sem o código todo fica um pouco difícil sugerir alguma coisa, por isso é sempre bom que poste todo o código usando o botão Code (colocar <> antes e depois do código não vai funcionar).

    image.png.3182f6fb483fe786c43fce54207a3d8b.png

    De qualquer forma, não tem segredo. Veja esse código que usa um procedimento para somar dois números:

    Algoritmo "Soma"
    
    Var
       a, b: inteiro
       res: inteiro
    
    procedimento soma (A, B: inteiro)
    Var
    
    Inicio
       res <- A + B
    fimprocedimento
    
    Inicio
       escreval("Insira o valor 1: ")
       leia(a)
       escreval("Insira o valor 2: ")
       leia(b)
    
       soma(a,b)
    
       escreval("Resultado da soma:", res)
    Fimalgoritmo

    Agora tente implementar um procedimento no seu código e pergunte se tiver dúvidas 😉

    • Curtir 1

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