Ir ao conteúdo
  • Cadastre-se

naldoP

Membro Pleno
  • Posts

    20
  • Cadastrado em

  • Última visita

Reputação

7
  1. Segue aqui, uma solução para o problema proposto! //Biblioteca padrão. #include <stdio.h> #include <stdlib.h> #define TAM 10 //Estrutura e seus atributos(Objetos). typedef struct Pilha { int topo,horavar; float var; float vetpilha[TAM]; } Pilha; //Prototipações das funções. void IniciarPilha(Pilha* p); void Empilhar(Pilha* p,float i); float Desempilhar(Pilha* p,Pilha* aux2); int lerHora(Pilha* horaIni, Pilha* minIni, Pilha* horaFim, Pilha* minFim); float calcValor(Pilha* horaIni, Pilha* minIni, Pilha* horaFim, Pilha* minFim,Pilha* v1,Pilha* v2,Pilha* r); void CaseMenu(Pilha* p,Pilha* horaIni, Pilha* minIni, Pilha* horaFim, Pilha* minFim,Pilha* v1,Pilha* v2,Pilha* r,Pilha* aux2,Pilha* resp); void imprimirPilha(Pilha* p); void ExibirHora(Pilha* horaIni, Pilha* minIni, Pilha* horaFim, Pilha* minFim,Pilha* v1, Pilha* v2,Pilha* r,Pilha* resp); //Programa principal, iniciado apenas com funções. int main() { Pilha p,horaIni,minIni,horaFim,minFim,v1,v2,r,aux2,resp; IniciarPilha(&p); CaseMenu(&p,&horaIni,&minIni,&horaFim,&minFim,&v1,&v2,&r,&aux2,&resp); } //Essa função inicializa o topo da pilha com valor '0'. void IniciarPilha(Pilha* p) { p->topo=0; } //Essa função empilha o dado no topo pilha. void Empilhar(Pilha* p, float i) { if(p->topo==TAM-1) { printf("Pilha cheia!\n"); return ; } p->vetpilha[p->topo] = i; p->topo++; } //Essa função desempilha o dado do topo da pilha. float Desempilhar(Pilha* p, Pilha* aux2) { if(p->topo ==0) { printf("\nA pilha esta vazia "); return; } p->topo--; p->vetpilha[p->topo]; aux2->var = p->vetpilha[p->topo]; printf("\nValor desempilhado com sucesso! %.1f\n",aux2->var); } //Essa função exibe na tela o dado empilhado no topo da pilha. void imprimirPilha(Pilha* p) { int i=0; for(i=p->topo-1; i>=0; i--) { printf("\n\n\nValor empilhado com sucesso! \n\n\n\t%.1f\n\n",p->vetpilha[i]); } printf("\t(P1)\t"); } //Essa função mostra na tela, os calculos dos dados aplicado pelo usuário. void ExibirHora(Pilha* horaIni, Pilha* minIni, Pilha* horaFim, Pilha* minFim,Pilha* v1, Pilha* v2,Pilha* r,Pilha* resp) { v1->var = (horaIni->horavar*60) + minIni->horavar; v2->var = (horaFim->horavar*60) + minFim->horavar; resp->var = v2->var; v2->var -=v1->var; r->var = v2->var*0.5; printf("\tHora Inicio = %d: Minuto Inicio = %d\n",horaIni->horavar,minIni->horavar,r->var ); printf("\tHora fim = %d: Minuto fim = %d\n",horaFim->horavar,minFim->horavar); printf("\tHora Inicio hora * 60 + minuto = %.1f\t\n",v1->var); printf("\tHora Fim hora * 60 + minuto = %.1f\t\n",resp->var); printf("\tHora Fim - Hora Inicio = %.1f\n",v2->var); printf("\tCalculo total Hora fim * 0.5 fim = %.1f",r->var); } //Essa função captura os dados aplicado pelo usuário. int lerHora(Pilha* horaIni, Pilha* minIni, Pilha* horaFim, Pilha* minFim) { printf("Hora de entrada:\n"); scanf("%d",&horaIni->horavar); printf("Minuto de entrada: \n"); scanf("%d",&minIni->horavar); printf("Hora de saida:\n"); scanf("%d",&horaFim->horavar); printf("Minuto de saida: \n"); scanf("\n\n\n%d",&minFim->horavar); return horaIni->horavar,minIni->horavar,horaFim->horavar,minFim->horavar; } //Essa função calcula os dados aplicado pelo usuário. float calcValor(Pilha* horaIni, Pilha* minIni, Pilha* horaFim, Pilha* minFim,Pilha* v1,Pilha* v2, Pilha* r) { v1->var = (horaIni->horavar*60) + minIni->horavar; v2->var = (horaFim->horavar*60) + minFim->horavar; v2->var -=v1->var; r->var = v2->var*0.5; return r->var; } //essa função e o menu, que recebe as funções aplicada pelo usuário. void CaseMenu(Pilha* p,Pilha* horaIni, Pilha* minIni, Pilha* horaFim, Pilha* minFim,Pilha* v1,Pilha* v2,Pilha* r,Pilha* aux2,Pilha* resp) { int ax,i; do { printf("\n\nEscolha:\n1-Registrar Hora \n2-Calcular e mostrar na tela \n3-Empilhar \n4-Desempilhar \n5-Sair\n\n"); scanf("%d",&ax); switch(ax) { case 1: lerHora(horaIni,minIni,horaFim,minFim); break; case 2: ExibirHora(horaIni,minIni,horaFim,minFim,v1,v2,r,resp); break; case 3: calcValor(horaIni,minIni,horaFim,minFim,v1,v2,r); Empilhar(p,r->var); imprimirPilha(p); break; case 4: Desempilhar(p,aux2); imprimirPilha(p); break; case 5: system("exit"); break; default: printf("Opção inexistente!\n"); break; } } while(ax!=5); }
  2. /* O ideal para quem trabalha com c/c++ sempre e bom fazer uso da struct, assim criando funções separada que visam os 3 elementos fundamental de um programa como,entrada,processamento e saida */ segue o exemplo : //Biblioteca padrão #include <stdio.h> #include <stdlib.h> #define TAM 3 #define MAX 50 // Estrutura e seus atributos, assim criando um vetor de objetos! typedef struct MediaAluno{ char nome[MAX]; double vetnotas[TAM]; double media; }MediaAluno; //Prototipações das funções double IserirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* n); double ProcessaDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m); void ExibirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m,MediaAluno* n); //Essa função recebe as atribuições aplicada pelo usuario e retorna seus valores; double IserirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* n){ int i=0; for(i=0;i<3;i++){ printf("\nDigite seu nome: "); gets(n->nome); printf("\nDigite a nota 1: "); scanf("\n%lf",&n1->vetnotas[i]); printf("\nDigite a nota 2: "); scanf("\n%lf",&n2->vetnotas[i]); printf("\nDigite a nota 3: "); scanf("\n%lf",&n3->vetnotas[i]); return n->nome,n1->vetnotas[i], n2->vetnotas[i], n3->vetnotas[i]; printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); } } /* Essa função recebe os 3 valores retornado e soma, e no final dividi por 3, e retorna o valor do resultado */ double ProcessaDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m ){ int i; for(i=0;i<3;i++){ m->media = (n1->vetnotas[i] + n2->vetnotas[i] + n3->vetnotas[i])/3; if(m->media>=7) return m->media; else return m->media; } } //Essa função recebe o valores retornado com o resultado e mostra na tela; void ExibirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m,MediaAluno* n){ int i; if(m->media>=7) printf("\n\tNome\tNota1\tNota2\tNota3\tMedia\tAluno Aprovado \n\t%s %.1lf \t%.1lf \t%.1lf \t%.1lf \t%.1lf\n\n\n",n->nome,n1->vetnotas[i],n2->vetnotas[i],n3->vetnotas[i],m->media,m->media); else printf("\n\tNome\tNota1\tNota2\tNota3\tMedia\tAluno Reprovado \n\t%s %.1lf \t%.1lf \t%.1lf \t%.1lf \t%.1lf\n\n\n",n->nome,n1->vetnotas[i],n2->vetnotas[i],n3->vetnotas[i],m->media,m->media); system("pause"); } //Programa principal, iniciando somente com as funções das operações int main(){ MediaAluno n,n1,n2,n3,m; IserirDados(&n1,&n2,&n3,&n); ProcessaDados(&n1,&n2,&n3,&m); ExibirDados(&n1,&n2,&n3,&m,&n); } adicionado 6 minutos depois #include <stdio.h> #include <stdlib.h> #define TAM 3 #define MAX 50 typedef struct MediaAluno{ char nome[MAX]; double vetnotas[TAM]; double media; }MediaAluno; double IserirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* n); double ProcessaDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m); void ExibirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m,MediaAluno* n); double IserirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* n){ int i=0; for(i=0;i<3;i++){ printf("\nDigite seu nome: "); gets(n->nome); printf("\nDigite a nota 1: "); scanf("\n%lf",&n1->vetnotas[i]); printf("\nDigite a nota 2: "); scanf("\n%lf",&n2->vetnotas[i]); printf("\nDigite a nota 3: "); scanf("\n%lf",&n3->vetnotas[i]); return n->nome,n1->vetnotas[i], n2->vetnotas[i], n3->vetnotas[i]; printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); } } double ProcessaDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m ){ int i; for(i=0;i<3;i++){ m->media = (n1->vetnotas[i] + n2->vetnotas[i] + n3->vetnotas[i])/3; if(m->media>=7) return m->media; else return m->media; } } void ExibirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m,MediaAluno* n){ int i; if(m->media>=7) printf("\n\tNome\tNota1\tNota2\tNota3\tMedia\tAluno Aprovado \n\t%s %.1lf \t%.1lf \t%.1lf \t%.1lf \t%.1lf\n\n\n",n->nome,n1->vetnotas[i],n2->vetnotas[i],n3->vetnotas[i],m->media,m->media); else printf("\n\tNome\tNota1\tNota2\tNota3\tMedia\tAluno Reprovado \n\t%s %.1lf \t%.1lf \t%.1lf \t%.1lf \t%.1lf\n\n\n",n->nome,n1->vetnotas[i],n2->vetnotas[i],n3->vetnotas[i],m->media,m->media); system("pause"); } int main(){ MediaAluno n,n1,n2,n3,m; IserirDados(&n1,&n2,&n3,&n); ProcessaDados(&n1,&n2,&n3,&m); ExibirDados(&n1,&n2,&n3,&m,&n); } adicionado 7 minutos depois #include <stdio.h> #include <stdlib.h> #define TAM 3 #define MAX 50 typedef struct MediaAluno{ char nome[MAX]; double vetnotas[TAM]; double media; }MediaAluno; double IserirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* n); double ProcessaDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m); void ExibirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m,MediaAluno* n); double IserirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* n){ int i=0; for(i=0;i<3;i++){ printf("\nDigite seu nome: "); gets(n->nome); printf("\nDigite a nota 1: "); scanf("\n%lf",&n1->vetnotas[i]); printf("\nDigite a nota 2: "); scanf("\n%lf",&n2->vetnotas[i]); printf("\nDigite a nota 3: "); scanf("\n%lf",&n3->vetnotas[i]); return n->nome,n1->vetnotas[i], n2->vetnotas[i], n3->vetnotas[i]; printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); } } double ProcessaDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m ){ int i; for(i=0;i<3;i++){ m->media = (n1->vetnotas[i] + n2->vetnotas[i] + n3->vetnotas[i])/3; if(m->media>=7) return m->media; else return m->media; } } void ExibirDados(MediaAluno* n1,MediaAluno* n2,MediaAluno* n3,MediaAluno* m,MediaAluno* n){ int i; if(m->media>=7) printf("\n\tNome\tNota1\tNota2\tNota3\tMedia\tAluno Aprovado \n\t%s %.1lf \t%.1lf \t%.1lf \t%.1lf \t%.1lf\n\n\n",n->nome,n1->vetnotas[i],n2->vetnotas[i],n3->vetnotas[i],m->media,m->media); else printf("\n\tNome\tNota1\tNota2\tNota3\tMedia\tAluno Reprovado \n\t%s %.1lf \t%.1lf \t%.1lf \t%.1lf \t%.1lf\n\n\n",n->nome,n1->vetnotas[i],n2->vetnotas[i],n3->vetnotas[i],m->media,m->media); system("pause"); } int main(){ MediaAluno n,n1,n2,n3,m; IserirDados(&n1,&n2,&n3,&n); ProcessaDados(&n1,&n2,&n3,&m); ExibirDados(&n1,&n2,&n3,&m,&n); }
  3. @r1castro1 na saida, onde for vetor do tipo 'char' atribuímos somente o nome do vetor que no caso e d.tipo,d.marca e somente atribuir o colchetes no vertor do tipo float, seguindo esse exemplo : printf("\t%s\t%s\t%f",d.tipo,d.marca,d.preco); system("pause"); Pois efetuei o texto aqui e exibiu normal ! Examina os caracter de entrada(%f, %s) para ver se nao existe algum erro de sintaxe
  4. Ola r1castro1! Na estrutura do seu codigo é esperado que se declare vetores, na struct encontra-se apenas o nome da variável e, não contendo formação de vetores, exemplo: Dentro da caixa do vetor atribuimos o valor para ele, que no caso e MAX, difinito da biblioteca como 'define' exemplo: #define MAX = 20 char tipo[MAX]; char marca[MAX]; float preco[MAX]; Nota-se que existem alguns erros na 'entrada' quando queremos scanear alguma variável (elementos de entrada) do tipo char ou string, usamos '%s' , Lembrando que esse código é somente exemplo, falta a lógica! Segue a estrutura do código; exemplo: //Biblioteca #include <stdio.h> #include <stdlib.h> #define MAX = 20 // nome de tipos complexo Estrutura typedef struct Doceria{ char tipo[MAX]; char dietetico; char marca[MAX]; float preco[MAX]; }Doceria; //protiticos da funçoes int Entrada_dados(); int Exibir_daddos(); //Programa principal int main(){ Entrada_dados(); Exibir_daddos(); } //Entrada de dados int Entrada_dados(){ Doceria d; static int i; int op=0; while(op<5){ printf("\nDigite o tipo de doce: "); scanf("\n%s",&d.tipo[i]); printf("\nDigite S para dietetico ou N para nao diedetico: "); scanf("\n%s",&d.dietetico); printf("\nDigite a marca do doce: "); scanf("\n%s",&d.marca[i]); printf("\nDigite o preco do doce: "); scanf("\n%f",&d.preco[i]); op++; } } //Saida de dados int Exibir_daddos(){ Doceria d; int i; printf("\nDoces dieteticos: "); printf("\tTipo \tMarca \tPreco "); printf("\t%s\t%s\t%f",d.tipo,d.marca,d.preco[i]); system("pause"); }
  5. naldoP

    Controle de Estoque

    /* Inicialmente detectei que existe redundância na sua struct; já que está trabalhando com apontamentos de memória basta atribuir um vetor para cada tipo, assim criando vetores 'Objetos', exemplo: */ Segue o codigo: typedef struct Estoque { int variante1[QTD]; float variante2[QTD]; }Estoque; /*Dentro da sua função ou da main, voce vai chamar a struct da seguinte forma: Estoque estoque,codigo,quantidade,preço; */ exemplo de instância: estoque.variante1[QTD]; codigo.variante1[QTD]; quantidade.variante1[QTD]; preco.variante2[QTD]; /* Para criar varios produtos na sequencia voce pode usar o for(){ ou while(){, assim criando função para centralizar o codigo em blocos, ou dentro da main , lembrando que metodos e fundamental para o desenvovimento do codigo. */ Exemplo de entrada sequencial: int Atribuicao(){ Estoque estoque,codigo,quantidade,preço; int i; for(i=0;i<100;i++){ printf("\nDigite o nome do produto: "); for(i=0;i<estoque.variante1[QTD];i++){ scanf("\n%d",&estoque.variante1[i]); printf("\nDigite o codigo do produto: "); for(i=0;i<codigo.variante1[QTD];i++ ){ scanf("\n%d",&codigo.variante1[i]); printf("\nDigite a quantidade de produto:"); for(i=0;i<quantidade.variante1[QTD];i++){ scanf("\n%d",&quantidade.variante1[i]); printf("\nDigite o valor do produto: "); for(i=0;i<preco.variante2[QTD];i++){ scanf("\n%f",&preco.variante2[i]); return estoque.variante1[i],codigo.variante1[i], quantidade.variante1[i],preco.variante2[i]; } } } } } }

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