Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX 5
- #define LIC 500
- typedef struct pecas{
- int valorbase;
- int valorvendido;
- char nome[100];
- char descricao[100];
- char tipo[10];
- }PECA;
- typedef struct licitacao{
- int valorlicitacao;
- char nomelicitador[50];
- char nome2[100];
- }LICITACAO;
- /* CASE 1*/
- int inserir (PECA pecas[], int cont){
- int x=0,y=0;
- do{
- y=0;
- printf ("Introduza o nome da peca\n");
- fflush (stdin);
- gets (pecas[cont].nome);
- for(x=0;x<cont;x++){
- if(strcmp(pecas[cont].nome,pecas[x].nome)==0){
- y=1;
- }
- }
- }while(strcmp(pecas[cont].nome,"")==0 || y==1);
- do{
- printf ("Introduza o tipo de peca (Quadro, Livro, Joia ou Escultura)\n");
- fflush (stdin);
- gets (pecas[cont].tipo);
- }while(stricmp(pecas[x].tipo,"Quadro")!=0 && stricmp(pecas[x].tipo,"Livro")!=0 && stricmp(pecas[x].tipo,"Joia")!=0 && stricmp(pecas[x].tipo,"Escultura")!=0);
- do{
- printf ("Introduza o valor base\n");
- scanf ("%i",&pecas[cont].valorbase);
- } while(pecas[cont].valorbase<=0);
- printf ("Introduza uma breve descricao\n");
- fflush (stdin);
- gets (pecas[cont].descricao);
- return (cont+1);
- }
- /* CASE 2 */
- void listartudo(PECA pecas[], int cont){
- int x=0;
- for(x=0;x<cont;x++){
- printf("\n\nNome: %s\nTipo: %s\nValor base: %i\nDescricao: %s\n",pecas[x].nome,pecas[x].tipo,pecas[x].valorbase,pecas[x].descricao);
- }
- }
- /* CASE 3 */
- int licitar(PECA pecas[], int cont, LICITACAO licitacao[], int contl){
- int x=0,y=0,w=0,maiorl=0,i=0,k=0,t=0;
- if(cont>0){
- do{
- printf("Introduza o nome do licitador \n");
- fflush(stdin);
- gets(licitacao[contl].nomelicitador);
- }
- while(strcmp(licitacao[contl].nomelicitador,"")==0);
- printf("Introduza o nome da peca em que prentende licitar \n");
- fflush(stdin);
- gets(licitacao[contl].nome2);
- for(i=0;i<cont;i++){
- if(strcmp(licitacao[contl].nome2,pecas[i].nome)==0){
- y=1;
- w=i;
- k=1;
- }
- }
- if(k!=1){
- do{
- printf("Nome nao disponivel, introduza novamente \n");
- fflush(stdin);
- gets(licitacao[contl].nome2);
- for(i=0;i<contl;i++){
- if(strcmp(licitacao[contl].nome2,pecas[i].nome)==0){
- y=1;
- w=i;
- }
- }
- }while(strcmp(licitacao[contl].nome2,"")==0 || y!=0);}
- maiorl=pecas[w].valorbase;
- for(i=0;i<contl;i++){
- if(strcmp(licitacao[i].nome2,pecas[w].nome)==0){
- if(licitacao[i].valorlicitacao>maiorl){
- maiorl=licitacao[i].valorlicitacao;
- }
- }
- }
- if(pecas[w].valorvendido==0){
- t=0;
- while(licitacao[contl].valorlicitacao<=0 || t==0){
- printf("Introduza a licitacao maior que %i \n : ", maiorl);
- fflush(stdin);
- scanf("%i", &licitacao[contl].valorlicitacao);
- if(licitacao[contl].valorlicitacao>maiorl){
- t=1;
- }
- }
- }
- else{
- printf("A peca introduzida nao se encontra disponivel \n");
- }
- }else{
- printf(" nao ha pecas para licitar");
- }
- return (contl+1);
- }
- /* CASE 4 */
- void listarlics(LICITACAO licitacao[], int contl){
- int x=0;
- if(contl>0){
- for(x=0;x<contl;x++){
- printf ("Nome: %s\nNome Licitador: %s\nValor licitacao: %i\n\n",licitacao[x].nome2,licitacao[x].nomelicitador,licitacao[x].valorlicitacao);
- }
- }else{
- printf("ainda nao foram feitas licitacoes");
- }
- }
- /* CASE 5 */
- void listarlicpeca(LICITACAO licitacao[], int contl, int cont,PECA pecas[]){
- int x=0,i=0,y=0;
- char nome[50];
- if(contl>0){
- printf("Introduza o nome da peca \n");
- fflush(stdin);
- gets(nome);
- for(x=0;x<contl;x++){
- if(strcmp(nome,licitacao[x].nome2)==0){
- printf("licitador: %s\npeca: %s\nlicitacao: %i \n\n", licitacao[x].nomelicitador, licitacao[x].nome2, licitacao[x].valorlicitacao);
- y=1;
- }
- if(y==0){
- printf("a peca ainda nao foi licitada");
- }
- }
- }
- }
- /* CASE 6 */
- int fecharleilao(PECA pecas[], LICITACAO licitacao[], int cont, int contl,int *soma){
- int x=0, maiorlic=0, maiorlicfinal=0,y=0;
- char pecaescolhida[100];
- system("cls");
- printf ("Introduza o nome da peca que deseja encerrar o leilao: \n");
- fflush(stdin);
- gets(pecaescolhida);
- for(x=0;x<contl;x++){
- if(strcmp(pecaescolhida,licitacao[x].nome2)==0){
- if(licitacao[x].valorlicitacao>maiorlic){
- maiorlic=licitacao[x].valorlicitacao;
- maiorlicfinal=x;
- y=1;
- }
- }
- }
- for(x=0;x<cont;x++){
- if(strcmp(pecaescolhida,licitacao[x].nome2)==0){
- pecas[x].valorvendido=maiorlic;
- }
- *soma+=pecas[x].valorvendido;
- }
- if(y==1){
- printf ("A peca %s foi vendida a %s por %i euros \n", pecaescolhida, licitacao[maiorlicfinal].nomelicitador, maiorlic);
- }else{
- printf("a peca introduzida e invalida");
- }
- return *soma;
- }
- /* CASE 8 */
- void iva(PECA pecas[], int cont){
- int x=0;
- float iva=0;
- for(x=0;x<cont;x++){
- if(pecas[x].valorvendido>0){
- if(stricmp(pecas[x].tipo,"Quadro")==0 || stricmp(pecas[x].tipo,"Joia")==0 || stricmp(pecas[x].tipo,"Escultura")==0){
- iva+=pecas[x].valorvendido*0.23;
- }
- else{
- iva+=pecas[x].valorvendido*0.06;
- }
- }
- }
- printf ("O total de IVA a pagar e de %.2f \n", iva);
- }
- /* CASE 9 */
- void pecasnaovendidas(PECA pecas[], int cont){
- int x=0,y=0;
- for(x=0;x<cont;x++){
- if(pecas[x].valorvendido==0){
- printf ("Nome: %s\nTipo: %s\nDescricao: %s\nValor base: %i\n\n", pecas[x].nome, pecas[x].tipo, pecas[x].descricao, pecas[x].valorbase);
- y=1;
- }
- if(y==0){
- printf ("As pecas foram todas vendidas \n");
- }
- }
- }
- /* CASE 10 */
- void pecasvendidas(PECA pecas[], int cont){
- int x=0,y=0;
- for(x=0;x<cont;x++){
- if(pecas[x].valorvendido>0){
- printf ("Nome: %s\nTipo: %s\nDescricao: %s\nValor base: %i\nValor final: %i\n\n", pecas[x].nome, pecas[x].tipo, pecas[x].descricao, pecas[x].valorbase,pecas[x].valorvendido);
- y=1;
- }
- if(y==0){
- printf("nao foi vendida nenhuma peca");
- }
- }
- }
- /* CASE 11 */
- void pecasportipo(PECA pecas[], int cont){
- int x=0,y=0;
- char tipo[50];
- printf ("Introduza o tipo de peca\n");
- fflush(stdin);
- gets(tipo);
- for(x=0;x<cont;x++){
- if(strcmp(tipo,pecas[x].tipo)==0){
- printf("Nome: %s\nTipo: %s\nDescricao: %s\nValor base: %i\n\n", pecas[x].nome, pecas[x].tipo, pecas[x].descricao, pecas[x].valorbase);
- y=1;
- }
- if(y==0){
- printf("ERRO: tipo de peca introduzido invalido \n");
- }
- }
- }
- /* CASE 12 */
- void mediapecasvendidas(PECA pecas[], int cont){
- int x=0, soma=0;
- float media=0;
- if(cont>0){
- for(x=0;x<cont;x++){
- if(pecas[x].valorvendido>0){
- soma=soma+pecas[x].valorvendido;
- media=soma/cont;
- }
- }
- printf ("Valor medio de venda das pecas = %.2f \n", media);
- }else{
- printf("nao inseridas pecas");
- }
- }
- /* CASE 13 */
- void medialicitacoespecasvendidas(LICITACAO licitacao[], PECA pecas[], int cont, int contl){
- int x=0, soma=0;
- float media=0;
- if(contl>0){
- for(x=0;x<cont;x++){
- if(pecas[x].valorvendido>0){
- soma=soma+licitacao[x].valorlicitacao;
- media=soma/contl;
- }
- }
- printf("Media das licitacoes das pecas vendidas = %.2f \n", media);
- }else{
- printf("ainda nao foram feitas licitacoes");
- }
- }
- /* main */
- int main(int argc, char *argv[]) {
- int opcao=0,cont=0,contl=0,soma=0;
- PECA pecas[MAX];
- LICITACAO licitacao[LIC];
- do {
- printf ("\n\n*** LEILAO ***\n\n");
- printf (" 1- Inserir peca\n 2- Listar pecas\n 3- Fazer licitacao\n 4- Listar licitacoes\n 5- Listar licitacoes de uma peca\n 6- Fechar leilao\n 7- Dinheiro recebido\n");
- printf (" 8- IVA a pagar\n 9- Listar pecas nao vendidas\n10- Listar pecas vendidas\n11- Listar pecas de uma categoria\n12- Valor media das pecas\n13- Licitacao media\n 0- Sair\n\n");
- printf ("Selecione uma opcao:\n"); scanf ("%i",&opcao);
- switch(opcao){
- case 1:
- system("cls");
- cont = inserir (pecas,cont);
- break;
- case 2:
- listartudo(pecas,cont);
- break;
- case 3:
- contl = licitar(pecas,cont,licitacao,contl);
- break;
- case 4:
- listarlics(licitacao,contl);
- break;
- case 5:
- listarlicpeca(licitacao,contl,cont,pecas);
- break;
- case 6:
- fecharleilao(pecas,licitacao,cont,contl,&soma);
- break;
- case 7:
- printf ("Soma de todas as licitacoes= %i",soma);
- break;
- case 8:
- iva(pecas,cont);
- break;
- case 9:
- pecasnaovendidas(pecas,cont);
- break;
- case 10:
- pecasvendidas(pecas,cont);
- break;
- case 11:
- pecasportipo(pecas,cont);
- break;
- case 12:
- mediapecasvendidas(pecas,cont);
- break;
- case 13:
- medialicitacoespecasvendidas(licitacao,pecas,cont,contl);
- break;
- }
- }
- while(opcao!=0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement