N a T a N
-
Total de itens
51 -
Registro em
-
Última visita
Posts postados por N a T a N
-
-
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.
-
Usando o que? Fila, Lista, Pilha, Vetor, Arvore, tanto faz?
-
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.
-
Tenho um certo conhecimento em C, e um pouco mais em Estrutura de dados em C... Se quiserem, meu MSN é natanlima@gmail.com
-
O compilador está acusando problema nessa linha de código...int i=((hora-3)%1);O erro é
Alguém sabe dizer o porque o compilador acusa tal erro?invalid operands to binary % -
Ola pessoal .
alguém de voces poderia me dar alguma dica de uma apostila que seja gratis, e que eu sou iniciante.
:closedeyes:
Apostila para o que? Programação, estrutura de dados?
-
Se for encerrar o for é break;
se for encerrar o programa, pode ser return 0; exit(1); whatever.
-
#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;
}
-
Para usar o system("pause"); tem que ter colocado o #include <stdlib.h> lá em cima...
Outra maneira eficiente, como foi falado, é o getch();
-
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:
ficou:printf("Informe o nome do Professor\n");gets(nome);
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]; -
no*
Tira o *...
Se não for, posta o código todo, pra que agente possa ver no emulador.
-
#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?
-
#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.
-
Editou por quê?
Abraços.
Já resolvi por conta própria... Vlw.
-
Alguém?
-
-
-
Minha matéria ainda não chegou em árvore, mas procure ai o livro "Estruturas de dados usando C", é bem completo, e trás as implementações básicas.
-
#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.
-
Gio, eu estava fazendo com lista, mas estava dando muito pau, ai troquei para vetor e está indo de boa... Tente usar vetor ao invés de lista...
PS: 10 pontos por esse trabalho, está saíndo caro... Sorte que as provas da Poliana não são tão difíceis.
-
#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.
-
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
-
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...
-
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.
Duvida em exercicio c++
em C, C++
Postado
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.