Ir para conteúdo
Fórum Script Brasil

N a T a N

Membros
  • Total de itens

    51
  • Registro em

  • Última visita

Posts postados por N a T a N

  1. Hmm...

    Seguinte, na sua struct, coloque o numero de filhos e o salário apenas.

    Eu aconselho usar uma lista, já que não sabe o número de pessoas a serem entrevistadas, logo, a cada nova pessoa entrevistada, um nó será inserido na lista, contendo as informações dessa pessoa.

    Depois é só você fazer uma função para calcular a média de salário da população, recebendo a sua lista de pessoas, e retornando 1 valor double ou float correspondente à média.

    Uma praticamente igual, mas retornando um valor float, correspondente à média de filhos.

    Uma função que receba a lista e retorne um valor float ou double correspondente ao maior salário.

    Uma função que receba a lista, conte quantas pessoas com salário maior do que 350, e quantas pessoas há na lista, e no final, calcule o percentual correspondente e retorne.

    Fácil o programa, caso ainda não tenha aprendido lista, defina um vetor de tamanho grande, e passe o vetor ao invés de lista para as funções.

  2. O operador % só funciona para tipos inteiros. Como hora está declarado como float, ele não pode ser usado.

    Pelo que entendi, o objetivo é obter o resto da divisão por 1 (isto é, a parte decimal). Nesse caso, basta pegar o valor da variável e, desse valor, subtrair sua parte inteira.

    float hora_menos_3=hora-3;
    float i=hora_menos_3-(int)hora_menos_3;

    Obs.:

    Como a variável i deve trabalhar com a parte decimal de um número, deve ser declarada como float e não como int.

    Hmm, bastante interessante o seu jeito também... Obg.

  3. Poisé cara, normalmente funciona aqui também, mas nesse caso deu erro, e foi dentro de uma função...

    float calcularTaxa(float hora){

    float rest;

    float k;

    if(hora <= 3)

    return 2;

    else if(hora > 3 && hora <= 6){

    k=(int)((hora-3)/1);

    rest=(hora-3)-k;

    if(rest==0)

    return (2+k);

    else

    return (2+1+k);

    }

    else{

    k=(int)((hora-6)/1);

    rest=(hora-6)-k;

    if(rest==0)

    return (5+0.5*k);

    else

    return (5+0.5+0.5*k);

    }

    }

    Essa função no caso, como o % não funcionou, tive que usar outros recursos.

  4. #include <stdio.h>

    #include <stdlib.h>

    int main(){

    int x,k,caixa[4],final;

    char nome[4],local[4];

    printf("Entre com o 4 nomes de objetos, sendo que o primeiro objeto\n");

    printf("corresponde ao numero 1 e assim sucessivamente\n");

    for(x=0;x<4;x++)

    scanf("%s",&nome[x]);

    printf("Escolha o numero da caixa que os objetos serao colocados respectivamente\n");

    for(x=0;x<4;x++)

    scanf("%d",&caixa[x]);

    printf("escolha o local onde a caixa ficara respectivamente\n");

    for(x=0;x<4;x++)

    scanf("%s",&local[x]);

    printf("escolha o numero correspondente ao objeto que deseja encontrar:\n");

    scanf("%d",&k);

    final=k-1;

    printf("%s esta localizado na caixa %d no local:%s\n",nome,caixa[final],local);

    system("PAUSE");

    return 0;

    }

    Tira o erro de compilação, mas ainda não vai funcionar para o seu propósito, pois é um vetor de chars e não de strings.

    Para o que você quer, o programa deveria ser o seguinte:

    #include <stdio.h>

    #include <stdlib.h>

    #define MAX 100

    int main(){

    int x,k,caixa[4],final;

    char **nome=(char**)malloc(4*sizeof(char));

    char **local=(char**)malloc(4*sizeof(char));

    for(x=0; x<4; x++){

    nome[x]=(char*)malloc(MAX*sizeof(char));

    local[x]=(char*)malloc(MAX*sizeof(char));

    }

    printf("Entre com o 4 nomes de objetos, sendo que o primeiro objeto\n");

    printf("corresponde ao numero 1 e assim sucessivamente\n");

    for(x=0;x<4;x++){

    fflush(stdin);

    gets(nome[x]);

    }

    printf("Escolha o numero da caixa que os objetos serao colocados respectivamente\n");

    for(x=0;x<4;x++)

    scanf("%d",&caixa[x]);

    printf("escolha o local onde a caixa ficara respectivamente\n");

    for(x=0;x<4;x++){

    fflush(stdin);

    gets(local[x]);

    }

    printf("escolha o numero correspondente ao objeto que deseja encontrar:\n");

    scanf("%d",&k);

    final=k-1;

    printf("%s esta localizado na caixa %d no local:%s\n\n",nome[final],caixa[final],local[final]);

    system("PAUSE");

    return 0;

    }

  5. Eu já tive esse problema, apenas dupliquei o comando e resolveu... funcionou como se eu tivesse apenas um... Não sei o porque...

    Ao invés de:

    printf("Informe o nome do Professor\n");

    gets(nome);

    ficou:
    gets(nome);

    printf("Informe o nome do Professor\n");

    gets(nome);

    Estava tendo o mesmo problema que você, e isso solucionou, só não sei o porque...

    ps: nome foi definido por:

    char nome[MAX];
  6. #include <stdio.h>

    #include <stdlib.h>

    int main(){

    char frase[40];

    int i,cont;

    printf("Digite uma frase: ");

    gets(frase);

    cont=0;

    for (i=0; frase != ''; i++)

    if (frase == 'a'){

    frase='b';

    cont=cont+1;

    }

    printf("Frase digitada: %s\n", frase);

    printf("O numero de letras a na frase e: %d\n", cont);

    printf("A frase modificada ficou assim: %s\n", frase);

    printf("O numero de letras a pela letra b e: %d\n", cont);

    system("pause");

    return 0;

    }

    Isso?

  7. #define MAX 100

    #include <stdio.h>

    #include <stdlib.h>

    struct aluno{

    char matricula[MAX];

    char nome[MAX];

    int idade;

    char sexo;

    double mensalidade;

    }; typedef struct aluno Aluno;

    Aluno preenche();

    int main(){

    int i,sexo=0, contador=0,idades=0;

    double mensalidades=0;

    Aluno alunos[5];

    for(i=0; i<5; i++)

    alunos=preenche();

    /*Resposta da letra a */

    for(i=0; i<5; i++)

    if(alunos.sexo=='M')

    sexo++;

    printf("%d alunos do sexo masculino\n",sexo);

    /*Resposta da letra b */

    for(i=0; i<5; i++){

    idades+=alunos.idade;

    contador++;

    }

    printf("A media de idades e %d\n",(idades/contador));

    /*Resposta da letra c */

    for(i=0; i<5; i++)

    if(alunos.sexo=='F')

    mensalidades+=alunos.mensalidade;

    printf("A soma das mensalidades das alunas e %.2lf\n",mensalidades);

    /* Resposta da letra d */

    for(i=0; i<4; i++)

    idades=(alunos.idade < alunos[i+1].idade) ? alunos.idade: alunos[i+1].idade;

    for(i=0; i<5; i++)

    if(alunos.idade == idades)

    printf("A matricula do aluno mais novo e %s\n",alunos.matricula);

    /*Resposta da letra e */

    for(i=0; i<4; i++)

    mensalidades=(alunos.mensalidade > alunos[i+1].mensalidade) ? alunos.mensalidade:alunos[i+1].mensalidade;

    printf("O novo valor da mensalidade seria %.2lf\n",mensalidades - (mensalidades*0.15));

    system("pause");

    return 0;

    }

    Aluno preenche(){

    Aluno a;

    printf("Informe a matricula do aluno:\n");

    scanf("%s",&a.matricula);

    gets(a.nome);

    printf("Informe o nome do aluno:\n");

    gets(a.nome);

    printf("Informe a Idade:\n");

    scanf("%d",&a.idade);

    printf("Informe o sexo 'F' para mulher e 'M' para Homem\n");

    a.sexo=getch();

    printf("Informe o valor da mensalidade:\n");

    scanf("%lf",&a.mensalidade);

    printf("\nCadastro de aluno completo\n");

    system("pause");

    system("cls");

    return a;

    }

    Fiz rápido, mas está funcionando... Na próxima, tente fazer, e poste o que você tentou que a galera vai ter mais boa vontade de ajudar a corrigir, ou ajudar na sua dúvida.

  8. #include <stdio.h>
    #include <stdlib.h>
    #define TAM  100
    
    enum boolean { true=1, false=0 };
    
    typedef enum boolean bool;
    
    typedef struct {
            int topo;
            char dado[TAM];
            }pilha_t;
    
    
    
    char pop(pilha_t *pilha){
         if(pilha->topo == -1){
              printf("pilha vazia");
              return;
              }else{
                    pilha->topo--;
                    return pilha->dado[pilha->topo + 1];
                    }
         }
    
    void push( pilha_t *pilha, char novo_elemento){
         if (pilha->topo < TAM){
               pilha->topo++;
               pilha->dado[pilha->topo] = novo_elemento;
               }else{
                     printf("pilha cheia");
                     }
         return;
         }
         
    bool empty(pilha_t *pilha){
            if(pilha->topo == -1){
                      return true;
                      }else{
                            return false;
                            }
            }
    
    bool balanced_parentheses(char *string){
            pilha_t pilha;
            int i;
            int cont = 0;
            while (string != ''){
                  for(i = 0; i < TAM; i++){
                        if(string[i] == '('){
                                cont ++;
                             }else if(string[i] == ')'){
                                          cont--;
                                       }
                        if (cont < 0){
                                 return false;
                                 }
                  }//for
                  if(cont != 0){
                          return false;
                       }else{
                             return true;
                             }
            }//while
    }
            
    
            
    
    int main(){
        char s[TAM];
        printf("Digite a expressao.\n");
        gets(s);
        if(balanced_parentheses(s)== true){
             printf("Parenteses corretos\n");
             }else{
                   printf("parenteses errados\n");
                   }
        system("pause");
        return 0;
    }

    Basicamente lembre-se do seguinte... Em struct, quando você está trabalhando com ponteiro para struct, você usa o ->, e não o ".".

    No for em 1 vetor de chars, o último caracter é o ''.

    O tipo boolean não existe em c, portanto, se você pretende utilizá-lo, você precisa primeiro defini-lo.

    O comando else-if tem espaço... "else if".

    PS: Não entendi o para que da pilha, já que você não a utilizou em nada.

    anw, att. Natan.

  9. #include <stdio.h>

    #include <stdlib.h>

    int main(){

    int n1,n2,soma;

    printf("Estou aprendendo c:\n");

    printf("Digite o primeiro numero:\n");

    scanf("%d", &n1);

    printf("Digite o segundo numero:\n");

    scanf("%d", &n2);

    soma = n1 + n2;

    printf("A soma e %d\n",soma);

    system("pause");

    return 0;

    }

    Versão correta.

  10. Minha Lista tem apresentado alguns problemas, e estou ficando com algumas dúvidas na passagem de parametros, e ela está com erro na hora de imprimir.

    Arquivos .h

    // agenda.h
    
    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include "Compromisso.h"
    
    struct agenda{
           int idAgend;
            int identProf;
            char nomeProfer[MAX];
            int ano;
            Compromisso *c;
            struct agenda *prox;
            }; typedef struct agenda Agenda;
    
    Agenda * criaAgenda(Agenda *a, int idProf, char *name, int ano);
    
    Agenda * insereCompromisso(Agenda *a,char *tip,char *name,Data *dat, int hor, int durac);
    
    Agenda * novoAgenda(Agenda *a,Compromisso *comp);
    
    
    void imprimeAgenda(Agenda *a);
    
    
    /* ------------------------------------------------------------------------------------------------------------------------------ */
    
    //Compromisso.h
    
    #define MAX 100
    enum boolean { true=1,false=0 };
    typedef enum boolean bool;
    
    enum Status { A_SER_CUMPRIDO=1, ADIADO=2, CANCELADO=3 };
    typedef enum Status stats;
    
    typedef struct{
            int dia;
            int mes;
            int ano;
            }Data;
    
    typedef struct{
            char tipo[MAX];
            char nome[MAX];
            Data data;
            int hora;
            int duracao;
            int prioridade;
            stats status;
            bool adiavel;
            int identificador;
            } Compromisso;
    
    int inicializaCompromisso(Compromisso *c,char *tip,char *name,Data *dat,int hor, int durac);
    
    void alteraPrioridade(Compromisso *c,int priorid);
    
    int retornaPrioridade(Compromisso *c);
    
    bool eAdiavel(Compromisso *c);
    
    bool temConflito(Compromisso *c1, Compromisso *c2);
    
    void atribuiStatus(Compromisso *c,stats status1);
    
    void imprimeCompromisso(Compromisso *c);
    Arquivos .c
    //Compromisso.c
    
    
    #include "agenda.h"
    
    int i=0;
    
    int inicializaCompromisso(Compromisso*c,char *tip,char *name,Data *dat, int hor, int durac){
    
        c->identificador=++i;
        c->hora=hor;
        c->duracao=durac;
        if(strcmp("Aula",tip)==0)
           c->prioridade=2;
        else if(strcmp("Orientacao",tip)==0)
           c->prioridade=1;
        else if(strcmp("Reuniao",tip)==0)  
             c->prioridade=4;
        else if(strcmp("Evento",tip)==0)
             c->prioridade=3;
        else if(strcmp("Compromisso Particular",tip)==0)
            c->prioridade=2;               
             strcpy(c->tipo,tip);
             strcpy(c->nome,name);
             c->status=A_SER_CUMPRIDO;
             c->adiavel=false;
             c->data.dia=dat->dia;
             c->data.mes=dat->mes;
             c->data.ano=dat->ano;
        return c->identificador;
    }
    
    void alteraPrioridade(Compromisso *c,int priorid){
         c->prioridade=priorid;
         }
    
    int retornaPrioridade(Compromisso *c){
        return c->prioridade;
    }
    
    bool eAdiavel(Compromisso *c){
              if(c->tipo=="Aula" || c->tipo == "Evento")
                             return false;
         else
             return true;
    }
    
    bool temConflito(Compromisso *c1, Compromisso *c2){//Já testada.
              if((c1->data.dia==c2->data.dia)&&(c1->data.mes==c2->data.mes)&&(c1->data.ano==c2->data.ano) && (c1->hora==c2->hora))
                               return true;
         else
             return false;
    }
    
    void atribuiStatus(Compromisso *c,stats status1){ c->status=status1; }
    
    stats retornaStatus(Compromisso *c){ return c->status; }
    
    void imprimeCompromisso(Compromisso *c){
         printf("Identificador: %d\n",c->identificador);
         printf("Tipo: %s\n",c->tipo);
         printf("Data: %d/%d/%d\n",c->data.dia,c->data.mes,c->data.ano);
         printf("Hora: %d:00\n",c->hora);
         
         if(strcmp(c->tipo,"Evento")==0)
                                     printf("Duracao: %d\n",c->duracao);
         else{
             printf("Duracao: %d\n",c->duracao); } 
         
         if(strcmp("Aula",c->tipo)==0)
                                       printf("Nome da Disciplina: %s\n",c->nome); 
         else if(strcmp("Orientacao",c->tipo)==0)
              printf("Nome do Aluno: %s\n",c->nome);
         else if(strcmp("Reuniao",c->tipo)==0)
              printf("Nome da Reuniao: %s\n",c->nome);
         else if(strcmp("Evento",c->tipo)==0)
              printf("Nome do Evento: %s\n",c->nome);
         else if(strcmp("Compromisso Particular",c->nome)==0)
              printf("Motivo: %s\n",c->nome); 
              
         if(c->status==A_SER_CUMPRIDO)
              printf("A Ser Cumprido\n");
         else if(c->status==ADIADO)
              printf("Adiado\n");
         else if(c->status==CANCELADO)
              printf("Cancelado\n");
              
         if(c->adiavel==true)
                         printf("Pode ser adiado\n");
         if(c->adiavel==false)
                         printf("não pode ser adiado\n");
                         
    }
    
    /* --------------------------------------------------------------------------------------------------------------------------------------------------- */
    
    //agenda.c
    
    
    #include "agenda.h"
    
    static int idenAgend=1;
    
    Agenda * criaAgenda(Agenda *a, int idProf, char *name, int ano){
        a=(Agenda *)malloc(sizeof(Agenda));
        a->identProf=idProf;
        strcpy(a->nomeProfer,name);
        a->ano=ano;
        a->idAgend=idenAgend;
        a->prox=NULL;
        idenAgend++;
        return a;
    }
    
    Agenda * novoAgenda(Agenda *a,Compromisso *comp){
        Agenda *novo=(Agenda*)malloc(sizeof(Agenda));
        novo->c=comp;
        novo->prox=a;
        return novo;
    }
    
    Agenda * insereCompromisso(Agenda *a,char *tip,char *name,Data *dat, int hor, int durac){
           int x=inicializaCompromisso(&(a->c),tip,name,dat,hor,durac);
           Agenda *b=novoAgenda(a,(a->c));   
           return b;
    }
    
    
    void imprimeAgenda(Agenda *a){
         Agenda *z;
         printf("Id Agenda: %d\n",a->idAgend);
         printf("ID Professor: %d\n",a->identProf);
         printf("Nome do Professor: %d\n",a->nomeProfer);
         printf("Ano: %d\n",a->ano);
         printf("\n");
         for(z=a;z->prox!=NULL;z=z->prox){
         imprimeCompromisso(&(z->c));
         getch();
         printf("\n");
         }
    }
    
    [/quote]E a main.
    
    [quote]
    
    #include "agenda.h"
    
    
    int main(){
        bool g;
        int a,b,cd;
        char name[]="Natan Avila";
        char nameEvent[]="Cervejada";
        char nameEvent2[]="Calourada";
        char nameEvent3[]="Trote";
        Data *dat;
        dat->dia=29;
        dat->mes=01;
        dat->ano=2010;
        char tip[]="Evento";
        char tip2[]="Orientacao";
        char tip3[]="Compromisso Particular";
        Agenda *k=criaAgenda(k, 2626, name, 2011);
    
        k=insereCompromisso(k,tip,nameEvent,dat,06,50);
            imprimeAgenda(k);
        k=insereCompromisso(k,tip2,nameEvent2,dat,02,40);
            imprimeAgenda(k);
        k=insereCompromisso(k,tip3,nameEvent3,dat,16,60);
            imprimeAgenda(k);
    
        imprimeAgenda(k);
        
        system("pause");
        free(k);
        return 0;
    }

    Como podem ver, o código apresenta erros durante a compilação, e não consigo resolver, principalmente na função de imprimir...

    Se alguém souber alguma possível solução, ou informar o que está errado, eu agradeceria :D

  11. Também sei pouco sobre listas encadeadas mas uma ideia que posso te dar é adicionar mais um campo na sua struct para armazenar o endereço do anterior

    typedef struct lista {

    int info;

    struct lista* prox;

    struct lista* ant;

    } Lista;

    Ai você usa o for que você usou para imprimir armazenando o p numa lista auxiliar e passando esse p para o p ant do prox ! meio confuso

    exemplo

    lista* invertelista (Lista *l)

    {

    lista* p

    lista* aux

    for (p = l; p != NULL; p = p->prox){

    p->ant = aux;

    printf("info = %d\n", p->info);

    aux = p;

    }

    return p;

    }

    OBS: Caso você inverta a lista a função de impressão vai mudar, ao invés de usar p = p->prox no for usa-se o p = p->ant

    Acho que isso é pra duplamente encadeada...

  12. int x=inicializaCompromisso(&(a->c),tip,name,dat,hor,durac);

    O inicializaCompromisso não está dentro da "Compromisso.h"? Você teria que incluir esse header na agenda.c.

    Abraços.

    o agenda.h já inclui o Compromisso.h, e como inclui o agenda.h, já inclui o Compromisso também.

×
×
  • Criar Novo...