Ir para conteúdo

Fernando Mercês

Administradores
  • Postagens

    1.510
  • Registro em

  • Última visita

  • Dias Ganhos

    164

Posts postados por Fernando Mercês

  1. Davi,

    Dica: ao postar, você pode formatar o seu texto. Se for código, é legal formatar como código clicando no botão <>. Olha a diferença. Sem formatação como código:

    if (var)

    var = 10;

    Com formatação como código (mais realce em C):

    if (var)
    	var = 10;

    É bem mais fácil que colar prints. ?

    O botão fica no editor:

    image.thumb.png.439dd481720226627d73743df997b1b8.png

    Outra dica: você pode editar sua mensagem original. Não precisa responder de novo. ?

    Abraço!

  2. Opa, se você precisar dos números que leu fora do loop que tá lendo, vai precisar colocá-los num array. ?

    Outra dica: por favor, indente seu código e use o botão se inserir código aqui do fórum. Olha a diferença:

    Sem indentação, nem formatação:

    for(i=1;i<=10;i++)
    {
    printf("\n%d\t%.2f",i,n);    
    }
    m=t/u;
    sleep(2);
    return 0;

    Indentado e formatado como código:

    for(i=1;i<=10;i++)
    {
    	printf("\n%d\t%.2f",i,n);    
    }
    m=t/u;
    sleep(2);
    return 0;

    Fica bem melhor pra gente ler. ?

    Um abraço.

  3. Opa, tudo bem?

    Muito boas suas perguntas. ?

    Essas diretivas definem dados. Por exemplo, da documentação do FASM:

    image.png.bde3e873655efe39d98dbedde04b2fd2.png

    Mas elas não estão limitadas apenas ao tamanho de um dado. Você também pode definir vários dados, que serão armazenados em sequência (conceito de array). Por exemplo, a seguinte diretiva define três bytes em sequência e associa o rótulo dados a ele (essa associação é como o nome de uma variável: só existe no código-fonte):

    dados: db 0x41, 0x42, 0x43

    Outra sintaxe possível para definição dos mesmos três bytes é:

    dados: db 'A', 'B', 'C'

    Ou ainda:

    dados: db 'ABC'

    Ou:

    dados: db 'AB', 'C'

    Ou:

    dados: db 'AB', 0x43

    E por aí vai...

    É o mesmo que, em C, fazer algo como:

    char *dados = "ABC";

    Ou seja, o rótulo em Assembly será somente o endereço no segmento de dados do programa.

    Abraço!

  4. Oi Vinicius, tudo bem?

    Olha, se você não sabe começar, acho que o ideal então é eu te recomendar leituras. Aqui vai:

    Você vai precisar estudar bastante para poder concluir este trabalho. O quanto você sabe de C? Variáveis, funções, ponteiros, isso você já sabe? Se não souber, vai precisar de um material básico de programação também.

    Abraço!

     

     

    • Curtir 1
  5. Pra facilitar seus testes, você pode escrever um arquivo texto com todas as entradas para o programa e depois só redirecionar a entrada ao executar seu programa. Por exemplo, o arquivo anexo pode ser usado da seguinte maneira no Prompt de Comando (no Windows) ou no shell do Linux:

    image.thumb.png.ef9a442dfd723f62a76263c92aaebd8a.png

    No examplo do arquivo anexo, ele vai criar:

    • Produto de código 1.
    • Produto de código 2.
    • Cliente de código 1.
    • Cliente de código 2.
    • Cliente de código 3.
    • Cliente de código 4.
    • Venda para o cliente de código 2 do produto de código 1 de 5 unidades a 2.50 cada.
    • Venda para o cliente de código 1 do produto de código 4 de 3 unidades a 5.00 cada.
    • Venda para o cliente de código 1 do produto de código 2 de 1 unidade a 3.00.

    Ou seja, é o mesmo que você digitar tudo isso, só que não precisar digitar toda hora. ?

    Valeu.

    entrada.txt

  6. Opa, tudo bem?

    Para nos ajudar, pode editar seu tópico e formatar a parte do código como código? É o botãozinho <> no editor. ?

    Eu achei a lógica meio complexa, mas te recomendo examinar o valor da variável soma na iteração do loop na função mais_vendido. Se você souber colocar breakpoint de depurar, ótimo. Se não, pode usar um:

    printf("%f\n", soma);

    Bom, acredito que o problema esteja na seguinte parte:

            if(soma>mais_vendido){
                mais_vendido=produtos[b];
            }

    Aí você está comparando soma (que tem o total faturado por todas as vendas de determinado produto) com o código do produto. Na real você precisa armazenar quanto um produto vendeu e comparar soma com esta nova variável.

    Boa sorte!

     

  7. Opa, na verdade basta uma estrutura (struct) com as coordenadas cartesianas e um código que converta, que você já tem. ?

    Algo assim:

    struct coord {
      float x;
      float y;
    };

    Aí você declara assim:

    struct coord c;

    Após declarar, você acessa os membros da uma struct com o operador . (ponto). Por exemplo, para colocar valores nos membros:

    c.x = 9.1;
    c.y = 3.4;

    Você vai precisar adaptar isso na sua chamada à scanf().

    Depois de ter os valores preenchidos na sua struct declarada, é só converter, acessando da mesma maneira e imprimir os resultados. Se já souber usar ponteiros, pode fazer uma função que receba a struct e substitua os valores, ou que receba duas structs (uma com as coordenadas cartesianas e a outra vazia, para preencher as coodernadas polares). Mas se ainda não trabalhou com ponteiros, ou não é exigido pelo exercício, pode fazer na main() mesmo.

    Um abraço e boa sorte!

  8. O fato de você estar compilando com gcc no Windows pelo Git Bash faz com que várias coisas sejam adicionadas no binário final, por conta do MinGW (Minimalist GNU for Windows). Fica mais complicado aprender assim. Eu recomendaria usar nasm e ld somente, de preferência num Linux virtual, ou via WSL2.

    Outra opção é usar ferramentas nativas para Windows. Aí recomendaria o fasm.

    Mas o livro é muito bom mesmo, então segui-lo como o autor propõe é a melhor recomendação, creio. ?

    Abraço.

×
×
  • Criar Novo...