Ir para conteúdo
Fórum Script Brasil

Durub

Moderadores
  • Total de itens

    788
  • Registro em

  • Última visita

Posts postados por Durub

  1. Roberto, não entendi muito bem sua ideia. Você quer selecionar um funcionário específico do vetor? Se for isso, não precisa de switch, é só usar o id diretamente!

    Por exemplo:

    id = 2;
    
    cadastroFunc[id]; /* pega o funcionário que está na posição 3 (Paula Fernandes Oliveira) */

    Abraços!

  2. #include <stdio.h>
    #include <stdlib.h>
    
    int lerNumero();
    void ordenar(int* numeros, int n);
    
    int main(int argc, char *argv[]) {
      int numeros[10];
      int i;
    
      for(i = 0; i < 10; ++i) {
        numeros[i] = lerNumero();
      }
    
      ordenar(numeros, sizeof(numeros) / sizeof(int));
    
      printf("Os tres maiores numeros são: %d, %d, %d\n", numeros[9], numeros[8], numeros[7]);
      getchar();
    
      return 0;
    }
    
    int lerNumero() {
      char string[1024];
      int numero;
    
      fgets(string, 1024, stdin);
      numero = atoi(string);
    
      return numero;
    }
    
    int comparar(const void* a, const void* b) {
      return (*(int*) a - *(int*) b);
    }
    
    void ordenar(int* numeros, int n) {
      qsort(numeros, n, sizeof(int), comparar);
    }

    Tá na mão.

    Abraços.

  3. Porque ao longo do tempo, quando o programa vai crescendo, fica cada vez mais difícil entender o que se passa no código. Como uma global pode ser modificada por qualquer parte do programa, você "nunca sabe" o que vai conter nela. Quando você tem classes/funções bem definidas, fica muito mais fácil entender e manter o código. Entretanto, tem vezes que usar variáveis globais acaba sendo uma boa pedida, geralmente quando você quer testar algo rápido ou fazer um pequeno programa.

    Um bom artigo sobre isso, em inglês: http://c2.com/cgi/wiki?GlobalVariablesAreBad

    Abraços!

  4. Desenvolva um programa. Qualquer um. Não pode ser algo extremamente fácil, mas não pode ser algo complicado demais para fazer você desistir no caminho.

    Uma calculadora com suporte a expressões, talvez? Que você digite "5-4+3*2-1/(6.5-2.5)", por exemplo, e ela calcule e retorne o resultado.

    Abraços!

  5. Assinatura da função: void iniciarpilha (Pilha* pilha);

    Como você está a chamando: iniciarpilha();

    Cade a pilha, amigo?! Você não está passando para a função! O erro na função inserir é a mesma coisa, você está chamando ela de forma diferente (sem nada), falta a pilha e o elemento para inserir nela.

    No mais, gostei da sua pilha, bom trabalho!

    Abraços!

  6. "Faltam 50 minutos, ainda dá tempo! O erro é simples: olhe para o código de novo. Onde o for começa? Onde o for termina? Na comparação, você está realizando ela somente uma vez, e em um elemento que "nem existe". (dados_passageiro[3], você só preenche até o 2)

    Exemplo de código que funcionaria:

    int encontrou = 0;
    
    printf("Sobrenome: ");
    gets(sobrenome);
    
    for(int i = 0; i < 3; ++i) {
      if(strcmp(sobrenome, dados_passageiro[i].sobrenome) == 0) {
        encontrou = 1;
        break;
      }
    }
    
    if(encontrou == 1) {
      printf("Passageiro encontrado!\n");
    } else {
      printf("Passageiro não encontrado.\n");
    }

    Abraços!

  7. Falta entender uns conceitos básicos sobre proteção de variáveis:

    public: acessível a todos

    protected: acessível a classe e a todas as classes derivadas

    private: acessível apenas a classe

    Ou seja, troque o private por protected e irá funcionar!

    Sobre a modelagem das classes, não acho que PI deveria estar dentro do círculo, e sim separado, talvez até como uma constante global.

    A classe de medidas da circunferência deveria conter um círculo, e não ser uma derivada deste. Uma medida da circunferência não é um círculo, mas age sobre este. Entretanto, isso é irrelevante se quiser aprender somente a síntaxe, mas caso também esteja querendo aprender POO decentemente e etc., há de se levar estes conceitos em conta.

    Abraços!

  8. Você está quase lá! Problemas:

    * A variável segundo nunca muda. Quando você tira uma hora dos segundos, você quer diminuir 3600 do valor dele, certo?

    * A ordem está invertida. Para converter corretamente, você precisa primeiro ver quantas horas tem, diminuir do segundo. Depois, ver quantos minutos tem, e diminuir do segundo. Após isso, o número de segundos que restaram vai estar na variável segundo.

    Abraços.

  9. O que já fez? O que não está conseguindo fazer?

    Acredito que o objetivo seja aprender algoritmos, certo? A entrada seria a massa inicial, e a saída, a massa final e o tempo. Depois, você pega e converte este tempo para horas, minutos e segundos e mostra as informações.

    E agora, como fazer o cálculo? Como você mesmo palpitou, com um laço de repetição. While serviria bem nesse caso!

    Abraços.

  10. 1:

    int prox_impar(int numero) {
      unsigned char impar = numero % 2;
    
      if(impar) {
        return numero + 2;
      } else {
        return numero + 1;
      }
    }
    2:
    int maior_3n(int a, int b, int c) {
      int maior = a;
    
      if(b > maior) {
        maior = b;
      }
    
      if(c > maior) {
        maior = c;
      }
    
      return maior;
    }
    3:
    #include <stdio.h>
    
    void intervalo(int a, int b) {
      for(int i = a; i < b; ++i) {
        printf("%d,", i);
      }
    
      printf("%d\n", b);
    }
    4: Tem vários códigos prontos por aí. 5:
    // x ^ n
    int potencia(int x, int n) {
      while(--n) {
        x *= x;
      }
      
      return x;
    }
    6:
    // asciitable.com
    char maiuscula(char letra) {
      if(letra >= 65 && letra <= 90) {
        return letra; /* já é maiúscula */
      }
    
      if(letra >= 97 && letra <= 122) {
        return letra - 32; /* minúscula, tem que subtrair 32. 97 (a) - 65 (A) = 32
      }
    
      return '?'; /* não é uma letra */
    }

    Não testei nenhum. Deixo isso para você!

    Abraços.

×
×
  • Criar Novo...