tonelol1 Posted April 27, 2012 at 11:56 PM Report #451865 Posted April 27, 2012 at 11:56 PM Boas. Já fiz o código todo mas nao consigo fazer com que o valor da soma numa funcao vá para a main para fazer os calculos. Como se faz? Está assinalado com AQUIII!! Dá este erro: 140 cannot convert `double' to `candidato*' in return #include <stdio.h> #include <stdlib.h> #include <string.h> #define maximo 5 int code=0; typedef struct candidato { char* titulo; char* instituicao; char* investigador; int duracao; char* palavras_chave[5]; } candidato, *projeto; typedef struct gastos { int equipamentos; int bolsas; int consumiveis; int consultores; int deslocacoes; int gastos_gerais; }gastos, * financiamento; typedef struct nota { int originalidade; int qualidade; int idoneidade; int exequibilidade; }nota, *avaliacao; projeto array_candidato[maximo]; projeto insere (char* titulo1,char* instituicao1,char* investigador1, int duracao1,char* palavras_chave1) { projeto p = (projeto) malloc(sizeof(candidato)); if(p) { p->titulo=titulo1; p->instituicao=instituicao1; p->investigador=investigador1; p->duracao=duracao1; for(int i=0;i<5;i++) { p->palavras_chave[i] = palavras_chave1; } return (p); } else { printf("MEMORIA INSUFICIENTE!\n"); } for(int i=0;i<maximo;i++) { projeto pp =(projeto) array_candidato[i]; if (pp == NULL) { (array_candidato[i])= p; printf("Inseriu o candidato!\n"); break; } } } projeto registar(char* titulo2,char* instituicao2,char* investigador2, int duracao2,char* palavras_chave2[5]) { int equipamentos,bolsas,consumiveis,consultores,deslocacoes,gastos_gerais; projeto p1 = (projeto) malloc(sizeof(candidato)); if(p1) { p1->titulo=titulo2; p1->instituicao=instituicao2; p1->investigador=investigador2; p1->duracao=duracao2; for(int j=0;j<5;j++) { p1->palavras_chave[j] = palavras_chave2[5]; } return (p1); } else { printf("MEMORIA INSUFICIENTE!\n"); } printf("Introduza o titulo: "); gets(titulo2); printf("\nIntroduza a instuituicao proponente: "); gets(instituicao2); printf("\nIntroduza o nome do investigador responsavel: "); gets(investigador2); printf("\nIntroduza a duracao do projecto(em anos): "); scanf("%d",&duracao2); printf("\nIntroduza a palavra chave (ate 5): "); for ( int j=0;j<5;j++) { gets(palavras_chave2[j]); } printf("Introduza o valor para os gastos em compra de equipamento: "); scanf("%d",&equipamentos); printf("Introduza o valor para os gastos na bolsa: "); scanf("%d",&bolsas); printf("Introduza o valor para os gastos com consumiveis: "); scanf("%d",&consumiveis); printf("Introduza o valor para os gastos com consultores: "); scanf("%d",&consultores); printf("Introduza o valor para os gastos com deslocacoes: "); scanf("%d",&deslocacoes); printf("Introduza o valor para os gastos gerais: "); scanf("%d",&gastos_gerais); financiamento p2 = (financiamento) malloc(sizeof(gastos)); if(p2) { p2->equipamentos; p2->bolsas; p2->consumiveis; p2->consultores; p2->deslocacoes; p2->gastos_gerais; } else { printf("MEMORIA INSUFICIENTE!\n"); } double soma_despesas= p2->equipamentos+p2->bolsas+p2->consumiveis+ ///////////// AQUIIIIIIIIIIIIIIIIII!!!!!!!!!!!!!!!!!!!!!!!!!!! p2->consultores+p2->deslocacoes+p2->gastos_gerais; return soma_despesas; } avaliacao registar( int originalidade11,int originalidade22,int originalidade33, int qualidade11,int qualidade22,int qualidade33, int idoneidade11,int idoneidade22, int idoneidade33, int exequibilidade11,int exequibilidade22, int exequibilidade33) { int originalidade1,originalidade2,originalidade3; int qualidade1,qualidade2,qualidade3; int idoneidade1,idoneidade2,idoneidade3; int exequibilidade1,exequibilidade2,exequibilidade3; for(int k = 0 ; k<3 ; k++) { if ( k = 0) { printf("Introduza a nota da Originalidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&originalidade1); printf("Introduza a nota da Qualidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&qualidade1); printf("Introduza a nota da Idoneidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&idoneidade1); printf("Introduza a nota da Exequilibidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&exequibilidade1); } else if ( k=1) { printf("Introduza a nota da Originalidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&originalidade2); printf("Introduza a nota da Qualidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&qualidade2); printf("Introduza a nota da Idoneidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&idoneidade2); printf("Introduza a nota da Exequilibidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&exequibilidade2); } else if (k=2) { printf("Introduza a nota da Originalidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&originalidade3); printf("Introduza a nota da Qualidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&qualidade3); printf("Introduza a nota da Idoneidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&idoneidade3); printf("Introduza a nota da Exequilibidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&exequibilidade3); } avaliacao p3 = (avaliacao) malloc(sizeof(nota)); if(p3) { p3->originalidade=originalidade1; p3->originalidade=originalidade2; p3->originalidade=originalidade3; p3->qualidade=qualidade1; p3->qualidade=qualidade2; p3->qualidade=qualidade3; p3->idoneidade=idoneidade1; p3->idoneidade=idoneidade2; p3->idoneidade=idoneidade3; p3->exequibilidade=exequibilidade1; p3->exequibilidade=exequibilidade2; p3->exequibilidade=exequibilidade3; return (p3); } else { printf("MEMORIA INSUFICIENTE!\n"); } } float media= (originalidade1+originalidade2+originalidade3+qualidade1+qualidade2+qualidade3+idoneidade1+idoneidade2+idoneidade3+exequibilidade1+exequibilidade2+exequibilidade3)/12; printf ( "Media= %0.2f", media); } int main (void) { projeto insere(); avaliacao registar(); float soma_despesas= 500; int media=3; if (media<3) { printf("PROJECTO REJEITADO!!"); } else if (media=3) { double valor=0.3*soma_despesas; printf("Subsidio no valor de %0.2f",valor);} else if (media = 4) { double valor1=0.75*soma_despesas; printf("Subsidio no valor de %0.2f",valor1);} else if ( media=5) { double valor2=1*soma_despesas; printf("Subsidio no valor de %0.2f",valor2);} system("PAUSE"); return 0; }
HappyHippyHippo Posted April 28, 2012 at 12:02 AM Report #451868 Posted April 28, 2012 at 12:02 AM apesar da indentação horrível e más práticas de C como declaração de variáveis a meio de uma função tens isto: projeto registar(char* titulo2,char* instituicao2,char* investigador2, int duracao2,char* palavras_chave2[5]) { ... double soma_despesas= p2->equipamentos+p2->bolsas+p2->consumiveis+ ///////////// AQUIIIIIIIIIIIIIIIIII!!!!!!!!!!!!!!!!!!!!!!!!!!! p2->consultores+p2->deslocacoes+p2->gastos_gerais; return soma_despesas; } 1º - não tens o tipo de valor de retorno na tua função .... 2º - tens o caratere '+' no final da linha assinalada, logo não é uma instrução válida PS : olha bem para os warning e erros do compilador, de certeza que ele se queixou dizendo qual era o problema ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
tonelol1 Posted April 28, 2012 at 12:16 AM Author Report #451873 Posted April 28, 2012 at 12:16 AM O compilador so deu esse erro.Mas eu na main tenho isto: int main (void) { projeto insere(); avaliacao registar(); if (media<3) { printf("PROJECTO REJEITADO!!"); } else if (media=3) { double valor=0.3*soma_despesas; printf("Subsidio no valor de %0.2f\n",valor);} else if (media = 4) { double valor1=0.75*soma_despesas; printf("Subsidio no valor de %0.2f\n",valor1);} else if ( media=5) { double valor2=1*soma_despesas; printf("Subsidio no valor de %0.2f\n",valor2);} Tanto a media como o soma_despesas não estão a retornar valores para funcao main. Como é que faco com que a main utilize as funcoes que pus em cima para ele executar os printf's todos? Isso que meti está mal. :/ Se perceberes muito disto nao me podes dar um ajustamento no programa por favor? Estive o dia todo nisto, mas sozinho , foi o melhor que soube fazer. Se nao te importares. Ou entao da-me umas dicas do que está mal e assinala no codigo. Agradeço desde já.
HappyHippyHippo Posted April 28, 2012 at 12:21 AM Report #451875 Posted April 28, 2012 at 12:21 AM exemplo de uso de funções e valor de retorno: int func(int arg) { // [tipo_de_retorno][nome_da_funcao]([lista_de_argumentos]) return arg+10; // return indica que a função irá parar aqui e retornar valor da instrução } int main() { int resultado = func(34); // guardar o valor de retorno printf("resultado func(34): %d\n", resultado); // apresenta o resultado guardado na variável printf("resultado func(34): %d\n", func(34)); // não é necessário o uso da variável, é possível o uso do resultado directamente return 0; } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
tonelol1 Posted April 28, 2012 at 12:33 AM Author Report #451876 Posted April 28, 2012 at 12:33 AM Não consegui ? Está assim tão mal estruturado? Primeiro meto as estruturas. typedef struct candidato { char* titulo; char* instituicao; char* investigador; int duracao; char* palavras_chave[5]; } candidato, *projeto; typedef struct gastos { int equipamentos; int bolsas; int consumiveis; int consultores; int deslocacoes; int gastos_gerais; }gastos, * financiamento; typedef struct nota { int originalidade; int qualidade; int idoneidade; int exequibilidade; }nota, *avaliacao; Depois as classes projeto insere (char* titulo1,char* instituicao1,char* investigador1, int duracao1,char* palavras_chave1) { projeto p = (projeto) malloc(sizeof(candidato)); if(p) { p->titulo=titulo1; p->instituicao=instituicao1; p->investigador=investigador1; p->duracao=duracao1; for(int i=0;i<5;i++) { p->palavras_chave[i] = palavras_chave1; } return (p); } else { printf("MEMORIA INSUFICIENTE!\n"); } for(int i=0;i<maximo;i++) { projeto pp =(projeto) array_candidato[i]; if (pp == NULL) { (array_candidato[i])= p; printf("Inseriu o candidato!\n"); break; } } } projeto registar(char* titulo2,char* instituicao2,char* investigador2, int duracao2,char* palavras_chave2[5]) { int equipamentos,bolsas,consumiveis,consultores,deslocacoes,gastos_gerais; projeto p1 = (projeto) malloc(sizeof(candidato)); if(p1) { p1->titulo=titulo2; p1->instituicao=instituicao2; p1->investigador=investigador2; p1->duracao=duracao2; for(int j=0;j<5;j++) { p1->palavras_chave[j] = palavras_chave2[5]; } return (p1); } else { printf("MEMORIA INSUFICIENTE!\n"); } printf("Introduza o titulo: "); gets(titulo2); printf("\nIntroduza a instuituicao proponente: "); gets(instituicao2); printf("\nIntroduza o nome do investigador responsavel: "); gets(investigador2); printf("\nIntroduza a duracao do projecto(em anos): "); scanf("%d",&duracao2); printf("\nIntroduza a palavra chave (ate 5): "); for ( int j=0;j<5;j++) { gets(palavras_chave2[j]); } printf("Introduza o valor para os gastos em compra de equipamento: "); scanf("%d",&equipamentos); printf("Introduza o valor para os gastos na bolsa: "); scanf("%d",&bolsas); printf("Introduza o valor para os gastos com consumiveis: "); scanf("%d",&consumiveis); printf("Introduza o valor para os gastos com consultores: "); scanf("%d",&consultores); printf("Introduza o valor para os gastos com deslocacoes: "); scanf("%d",&deslocacoes); printf("Introduza o valor para os gastos gerais: "); scanf("%d",&gastos_gerais); financiamento p2 = (financiamento) malloc(sizeof(gastos)); if(p2) { p2->equipamentos; p2->bolsas; p2->consumiveis; p2->consultores; p2->deslocacoes; p2->gastos_gerais; } else { printf("MEMORIA INSUFICIENTE!\n"); } int func(int arg) { arg= p2->equipamentos+p2->bolsas+p2->consumiveis+p2->consultores+p2->deslocacoes+p2->gastos_gerais; return arg;} } avaliacao registar( int originalidade11,int originalidade22,int originalidade33, int qualidade11,int qualidade22,int qualidade33, int idoneidade11,int idoneidade22, int idoneidade33, int exequibilidade11,int exequibilidade22, int exequibilidade33,float media) { int originalidade1,originalidade2,originalidade3; int qualidade1,qualidade2,qualidade3; int idoneidade1,idoneidade2,idoneidade3; int exequibilidade1,exequibilidade2,exequibilidade3; for(int k = 0 ; k<3 ; k++) { if ( k = 0) { printf("Introduza a nota da Originalidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&originalidade1); printf("Introduza a nota da Qualidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&qualidade1); printf("Introduza a nota da Idoneidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&idoneidade1); printf("Introduza a nota da Exequilibidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&exequibilidade1); } else if ( k=1) { printf("Introduza a nota da Originalidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&originalidade2); printf("Introduza a nota da Qualidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&qualidade2); printf("Introduza a nota da Idoneidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&idoneidade2); printf("Introduza a nota da Exequilibidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&exequibilidade2); } else if (k=2) { printf("Introduza a nota da Originalidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&originalidade3); printf("Introduza a nota da Qualidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&qualidade3); printf("Introduza a nota da Idoneidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&idoneidade3); printf("Introduza a nota da Exequilibidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&exequibilidade3); } avaliacao p3 = (avaliacao) malloc(sizeof(nota)); if(p3) { p3->originalidade=originalidade1; p3->originalidade=originalidade2; p3->originalidade=originalidade3; p3->qualidade=qualidade1; p3->qualidade=qualidade2; p3->qualidade=qualidade3; p3->idoneidade=idoneidade1; p3->idoneidade=idoneidade2; p3->idoneidade=idoneidade3; p3->exequibilidade=exequibilidade1; p3->exequibilidade=exequibilidade2; p3->exequibilidade=exequibilidade3; return (p3); } else { printf("MEMORIA INSUFICIENTE!\n"); } } media= (originalidade1+originalidade2+originalidade3+qualidade1+qualidade2+qualidade3+idoneidade1+idoneidade2+idoneidade3+exequibilidade1+exequibilidade2+exequibilidade3)/12; printf ( "Media= %0.2f", media); e por fim a main int main () { projeto insere(); avaliacao registar(); if (media<3) { printf("PROJECTO REJEITADO!!"); } else if (media=3) { double valor=0.3*soma_despesas; printf("Subsidio no valor de %0.2f\n",valor);} else if (media = 4) { double valor1=0.75*soma_despesas; printf("Subsidio no valor de %0.2f\n",valor1);} else if ( media=5) { double valor2=1*soma_despesas; printf("Subsidio no valor de %0.2f\n",valor2);} system("PAUSE"); return 0; } Tudo que é texto tenho que por na main? Para que serve isto, fiz 3 vezes ao longo do codigo mas nao sei bem porque. avaliacao p3 = (avaliacao) malloc(sizeof(nota)); if(p3) { p3->originalidade=originalidade1; p3->originalidade=originalidade2; p3->originalidade=originalidade3; p3->qualidade=qualidade1; p3->qualidade=qualidade2; p3->qualidade=qualidade3; p3->idoneidade=idoneidade1; p3->idoneidade=idoneidade2; p3->idoneidade=idoneidade3; p3->exequibilidade=exequibilidade1; p3->exequibilidade=exequibilidade2; p3->exequibilidade=exequibilidade3; Alguma dica? 😁
jpaulino Posted April 28, 2012 at 12:33 AM Report #451877 Posted April 28, 2012 at 12:33 AM PROJETO!! AJUDEM PLEASE 😄 Mais um tópico criado com este titulo, que é contra as regras do fórum, será imediatamente bloqueado!
tonelol1 Posted April 28, 2012 at 12:42 AM Author Report #451878 Posted April 28, 2012 at 12:42 AM Nao sabia, vou mudar.
bsccara Posted April 28, 2012 at 01:08 AM Report #451879 Posted April 28, 2012 at 01:08 AM A linguagem C não tolera coisas feitas 'sem se saber porque'. Começa por imprimir o PDF neste link (http://piano.dsi.uminho.pt/disciplinas/plp/lingc/c_tutorial/ApostilaC_UFMG.pdf) e estudá-lo, pois aparentemente já estás completamente à toa. O problema principal no teu código é a tentativa de passar dois valores diferentes por onde passa apenas um: o retorno da função. Ou passas um ponteiro para uma estrutura ou um valor numérico. Escolhe. O que acontece com frequência é ser efectivamente necessário retornar mais de um valor da função; nesse caso no máximo um (mas pode não ser nenhum) é retornado através do valor de retorno da função, enquanto que os outros são retornados através de parâmetros passados por referência (passando ponteiros para eles) e alterados na função. Se quiseres retornar três valores diferentes duma função podes fazer: int funcao1(double * valor2, short int * valor3) { *valor2 = 234.5; *valor3 = 10000; return 2; } void funcao2(int * valor1, double * valor2, short int * valor3) { *valor1 = 2; *valor2 = 234.5; *valor3 = 10000; } int main() { int param1; double param2; short int param3; param1 = funcao1(¶m2,¶m3); /* A linha abaixo coloca os valores nas mesmas variáveis */ funcao2(¶m1,¶m2,¶m3); }
tonelol1 Posted April 28, 2012 at 10:55 AM Author Report #451897 Posted April 28, 2012 at 10:55 AM Não sei se já reparas te mas o int soma tem de estar dentro da class avaliacao registar para ter acesso aos valores de p2-> .. Da logo erro no int soma(double soma_despesas). int soma(double soma_despesas) { soma_despesas= p2->equipamentos+p2->bolsas+p2->consumiveis+p2->consultores+p2->deslocacoes+p2->gastos_gerais; return soma_despesas; } Comeca logo com errro e diz que deve levar um ; depois do int soma(double soma_despesas) int main() { printf("%0.2f", &soma_despesas); ... }
tonelol1 Posted April 28, 2012 at 10:57 AM Author Report #451898 Posted April 28, 2012 at 10:57 AM Pretende-se criar, um sistema de informação (SI) para apoio à seleção de projetos de investigação candidatos ao financiamento disponibilizado por uma Instituição Nacional. Cada projeto candidato é caracterizado pelos seguintes atributos: titulo; instituição proponente; nome do investigador responsável; duração do projeto (número de anos); lista de palavras-chave (até 5), designando as grandes áreas/tópicos de investigação; gastos previstos (em euros) distribuídos pelas seguintes rúbricas: compra equipamento, pagamento bolsas, despesas com consumíveis, despesas com consultores, deslocações nacionais ou estrangeiras, gastos gerais; classificação atribuída pelos 3 avaliadores. Será fornecida uma sequência de 5 letras1 representando a nota dada a cada um dos 4 critérios de apreciação das propostas: originalidade, qualidade da proposta, idoneidade da equipa, exequibilidade. 2.1 Aquisição dos Dados e Armazenamento Nesta parte do trabalho, pretende-se que desenvolva um programa que lhe permita ler os dados referentes a vários projetos, atribuindo, a cada um, um código interno (pode ser sequencial) e calcular o custo total (financiamento solicitado) e a classificação final (média dos 3 avaliadores sendo, para cada um, calculada a média das notas atribuídas aos 4 parâmetros, considerando N=1, M=2, S=3, B=4, E=5). Após guardar num vetor de registos os dados lidos o programa deve escrever num ficheiro de texto (nome dado pelo utilizador) por ordem decrescente de classificações, o código interno, o cada letra pode tomar um dos valores N, M, S, B, E, significando: Não satisfaz; Minimamente satisfatório; Satisfaz; Bom; Excelente. título, a instituição, o financiamento solicitado, a classificação final e o subsídio a atribuir pela Instituição Nacional, calculado de acordo com o seguinte critério: 0% (o projeto é rejeitado), se a classificação for inferior a 3 pontos; 30% do solicitado, se a classificação for 3 pontos; 75% do solicitado, se a classificação for 4 pontos; 100% do solicitado, se a classificação for 5 pontos. Como é que sabes que nao é preciso fazer aquilo, sem o texto? Se souberes o que está mal diz sff. Acho que o que está mal é so as partes que tenho p,p2,p3->
tonelol1 Posted April 28, 2012 at 01:02 PM Author Report #451905 Posted April 28, 2012 at 01:02 PM Acho que consegui fazr o codigo e para ja mais simples. No entanto por alguma razao quando o resultado do subsidio é superior a 18 ele imprime 18. Por exemplo valor1=0.75*gastos_finais. Se gastos_finais = 60 , entao 0.75*60 = 45. MAS APARECE 18. Alguem sabe porquê? #include <stdio.h> #include <stdlib.h> #include <string.h> #define maximo 5 int code=0; typedef struct candidato { char titulo[50]; char instituicao[50]; char investigador[50]; int duracao; char palavras_chave[5]; } candidato, *projeto; typedef struct gastos { int equipamentos; int bolsas; int consumiveis; int consultores; int deslocacoes; int gastos_gerais; }gastos, * financiamento; typedef struct notas { int originalidade; int qualidade; int idoneidade; int exequibilidade; }notas, *avaliacao; void criar_projeto() { char titulo[50]; char instituicao[50]; char investigador[50]; int duracao; char palavras_chave[50]; int equipamentos; int bolsas; int consumiveis; int consultores; int j; printf("Introduza o titulo: "); gets(titulo); printf("\nIntroduza a instuituicao proponente: "); gets(instituicao); printf("\nIntroduza o nome do investigador responsavel: "); gets(investigador); printf("\nIntroduza a duracao do projecto(em anos): "); scanf("%d",&duracao); printf("\nIntroduza a palavra chave (ate 5): "); for ( j=0;j<5;j++) { scanf("%s",&palavras_chave[j]); } } int soma_gastos ( int equipamentos,int bolsas,int consumiveis,int consultores,int deslocacoes,int gastos_gerais) { int soma; printf("Introduza o valor para os gastos em compra de equipamento: "); scanf("%d",&equipamentos); printf("Introduza o valor para os gastos na bolsa: "); scanf("%d",&bolsas); printf("Introduza o valor para os gastos com consumiveis: "); scanf("%d",&consumiveis); printf("Introduza o valor para os gastos com consultores: "); scanf("%d",&consultores); printf("Introduza o valor para os gastos com deslocacoes: "); scanf("%d",&deslocacoes); printf("Introduza o valor para os gastos gerais: "); scanf("%d",&gastos_gerais); soma=equipamentos+bolsas+consumiveis+consultores+deslocacoes+gastos_gerais; return soma; } int notas_avaliacao ( int originalidade1,int qualidade1,int idoneidade1,int exequibilidade1,int originalidade2,int qualidade2,int idoneidade2,int exequibilidade2,int originalidade3,int qualidade3,int idoneidade3,int exequibilidade3) { int k; int media1,media2,media3; for( k = 0 ; k<3 ; k++) { printf("Introduza qual e o seu numero de avaliador: "); scanf("%d",&k); if ( k = 0) { printf("Introduza a nota da Originalidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&originalidade1); printf("Introduza a nota da Qualidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&qualidade1); printf("Introduza a nota da Idoneidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&idoneidade1); printf("Introduza a nota da Exequilibidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&exequibilidade1); media1=(originalidade1+qualidade1+idoneidade1+exequibilidade1)/4; return media1; } else if ( k=1) { printf("Introduza a nota da Originalidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&originalidade2); printf("Introduza a nota da Qualidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&qualidade2); printf("Introduza a nota da Idoneidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&idoneidade2); printf("Introduza a nota da Exequilibidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&exequibilidade2); media2=(originalidade2+qualidade2+idoneidade2+exequibilidade2)/4; return media2; } else if (k=2) { printf("Introduza a nota da Originalidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&originalidade3); printf("Introduza a nota da Qualidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&qualidade3); printf("Introduza a nota da Idoneidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&idoneidade3); printf("Introduza a nota da Exequilibidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&exequibilidade3); media3 =(originalidade3+qualidade3+idoneidade3+exequibilidade3)/4; return media3; } } } int main() { double valor,valor1,valor2; int avaliacoes_finais; int gastos_finais; gastos_finais = soma_gastos(1,1,1,1,1,1); printf("GASTOS FINAIS: %d\n",gastos_finais); avaliacoes_finais=notas_avaliacao(1,1,1,1,1,1,1,1,1,1,1,1); printf("AVALIACOES FINAIS: %d\n",avaliacoes_finais); if (avaliacoes_finais<3) { printf("PROJECTO REJEITADO!!\n"); } else if (avaliacoes_finais=3) { valor=0.3*gastos_finais; printf("Subsidio no valor de %0.2f\n",valor);} else if (avaliacoes_finais = 4) { valor1=0.75*gastos_finais; printf("Subsidio no valor de %0.2f\n",valor1);} else if ( avaliacoes_finais=5) { valor2=1*gastos_finais; printf("Subsidio no valor de %0.2f\n",valor2);} system("pause"); return 0; }
pmg Posted April 28, 2012 at 01:51 PM Report #451910 Posted April 28, 2012 at 01:51 PM int code=0; Se conseguires evitar o uso de variaveis globais, melhoras, em muito, a capacidade de perceber o codigo tomando cada parte (cada funcao) isoladamente. void criar_projeto() { gets(titulo); Nao. Nao uses gets() nem a brincar! A funcao gets e impossivel de usar com seguranca, e e muito facil substitui-la por fgets(). int notas_avaliacao ( int originalidade1,int qualidade1,int idoneidade1,int exequibilidade1,int originalidade2,int qualidade2,int idoneidade2,int exequibilidade2,int originalidade3,int qualidade3,int idoneidade3,int exequibilidade3) { Xiiiiiiiiiiiiii ... nao consegues agrupar estes parametros todos numa estrutura? int main() { else if (avaliacoes_finais=3) { Aha! Tens uma atribuicao onde, aparentemente, querias uma comparacao. Aumenta o nivel de warnings do teu compilador, e trata esses warnings como erros. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
tonelol1 Posted April 28, 2012 at 01:59 PM Author Report #451911 Posted April 28, 2012 at 01:59 PM Ja está a funcionar xD. thx Vou tentar terminar Já agora nao estou a encontrar como aumentar os warnings
pmg Posted April 28, 2012 at 02:11 PM Report #451912 Posted April 28, 2012 at 02:11 PM Já agora nao estou a encontrar como aumentar os warnings Aparentemente usas um compilador da Borland??? De acordo com este link ( http://edn.embarcadero.com/article/20997 ) deves usar o argumento -wxxx para "warning control" What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
tonelol1 Posted April 28, 2012 at 02:18 PM Author Report #451914 Posted April 28, 2012 at 02:18 PM Aparentemente usas um compilador da Borland??? De acordo com este link ( http://edn.embarcadero.com/article/20997 ) deves usar o argumento -wxxx para "warning control" Dev c++. Eu irei já postar o programa. Mais uns minutos.
tonelol1 Posted April 28, 2012 at 02:53 PM Author Report #451920 Posted April 28, 2012 at 02:53 PM Alguem me consegue disser porque é que as variaveis não estão a ser guardadas em memoria para depois aparecerem na LISTAGEM? Se calhar é melhor copiarem o programa e ver no cmd. #include <stdio.h> #include <stdlib.h> #include <string.h> #define maximo 5 int code=0; typedef struct candidato { char* titulo; char* instituicao; char* investigador; int duracao; char* palavras_chave; } candidato, *projeto; projeto array_projetos [maximo]; typedef struct gastos { int equipamentos; int bolsas; int consumiveis; int consultores; int deslocacoes; int gastos_gerais; }gastos, * financiamento; financiamento array_financiamentos[maximo]; typedef struct notas { int originalidade; int qualidade; int idoneidade; int exequibilidade; }notas, *avaliacao; void criar_projeto() { char titulo[50]; char instituicao[50]; char investigador[50]; int duracao; char palavras_chave[50]; int equipamentos; int bolsas; int consumiveis; int consultores; int num; int j; //variavel global printf("Introduza o titulo: "); gets(titulo); printf("\nIntroduza a instuituicao proponente: "); gets(instituicao); printf("\nIntroduza o nome do investigador responsavel: "); gets(investigador); printf("\nIntroduza a duracao do projecto(em anos): "); scanf("%d",&duracao); printf("Introduza o numero de palavras chave que deseja: "); scanf("%d",&num); if (num==0) { } if (num==1) { printf("\nIntroduza a palavra chave: "); for ( j=0;j<1;j++) { scanf("%s",&palavras_chave[j]); } } if (num==2) { printf("\nIntroduza a palavra chave: "); for ( j=0;j<2;j++) { scanf("%s",&palavras_chave[j]); } } if (num==3) { printf("\nIntroduza a palavra chave: "); for ( j=0;j<3;j++) { scanf("%s",&palavras_chave[j]); } } if (num==4) { printf("\nIntroduza a palavra chave: "); for ( j=0;j<4;j++) { scanf("%s",&palavras_chave[j]); } } if (num==5) { printf("\nIntroduza a palavra chave: "); for ( j=0;j<5;j++) { scanf("%s",&palavras_chave[j]); } } } int soma_gastos ( int equipamentos,int bolsas,int consumiveis,int consultores,int deslocacoes,int gastos_gerais) { int soma; printf("\nIntroduza o valor para os gastos em compra de equipamento: "); scanf("%d",&equipamentos); printf("\nIntroduza o valor para os gastos na bolsa: "); scanf("%d",&bolsas); printf("\nIntroduza o valor para os gastos com consumiveis: "); scanf("%d",&consumiveis); printf("\nIntroduza o valor para os gastos com consultores: "); scanf("%d",&consultores); printf("\nIntroduza o valor para os gastos com deslocacoes: "); scanf("%d",&deslocacoes); printf("\nIntroduza o valor para os gastos gerais: "); scanf("%d",&gastos_gerais); soma=equipamentos+bolsas+consumiveis+consultores+deslocacoes+gastos_gerais; return soma; } int notas_avaliacao ( int originalidade1,int qualidade1,int idoneidade1,int exequibilidade1,int originalidade2,int qualidade2,int idoneidade2,int exequibilidade2,int originalidade3,int qualidade3,int idoneidade3,int exequibilidade3) { int k; int media1,media2,media3; for( k = 0 ; k<3 ; k++) { printf("\nIntroduza qual e o seu numero de avaliador: "); scanf("%d",&k); if ( k = 0) { printf("\nIntroduza a nota da Originalidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&originalidade1); printf("\nIntroduza a nota da Qualidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&qualidade1); printf("\nIntroduza a nota da Idoneidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&idoneidade1); printf("\nIntroduza a nota da Exequilibidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&exequibilidade1); media1=(originalidade1+qualidade1+idoneidade1+exequibilidade1)/4; return media1; } else if ( k=1) { printf("\nIntroduza a nota da Originalidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&originalidade2); printf("\nIntroduza a nota da Qualidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&qualidade2); printf("\nIntroduza a nota da Idoneidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&idoneidade2); printf("\nIntroduza a nota da Exequilibidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&exequibilidade2); media2=(originalidade2+qualidade2+idoneidade2+exequibilidade2)/4; return media2; } else if (k=2) { printf("\nIntroduza a nota da Originalidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&originalidade3); printf("\nIntroduza a nota da Qualidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&qualidade3); printf("\nIntroduza a nota da Idoneidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&idoneidade3); printf("\nIntroduza a nota da Exequilibidade em decimal! N=1, M=2, S=3, B=4, E=5: "); scanf("%d",&exequibilidade3); media3 =(originalidade3+qualidade3+idoneidade3+exequibilidade3)/4; return media3; } } } void inserir_candidato(char* titulo1, char* instituicao1, char* investigador1,int duracao1,char* palavras_chave1) { int l; projeto d = (projeto) malloc(sizeof(candidato)); if(d) { d->titulo = titulo1; d->instituicao = instituicao1; d->investigador = investigador1; d->duracao=duracao1; d->palavras_chave=palavras_chave1; } else { printf("MEMORIA INSUFICIENTE!\n"); } for(l=0;l<maximo;l++) { projeto pd = (projeto) array_projetos[l]; if(pd == NULL) //primeira posição livre { (array_projetos[l]) = d; printf("Inseriu o candidato\n"); break; } } } void inserir_gastos(int equipamentos1,int bolsas1,int consumiveis1,int consultores1,int deslocacoes1, int gastos_gerais1) { int r; financiamento pd = (financiamento) malloc(sizeof(gastos)); if(pd) { pd->equipamentos=equipamentos1; pd->bolsas=bolsas1; pd->consumiveis=consumiveis1; pd->consultores=consultores1; pd->deslocacoes=deslocacoes1; pd->gastos_gerais=gastos_gerais1; } else { printf("MEMORIA INSUFICIENTE!\n"); } for(r=0;r<maximo;r++) { financiamento pd = (financiamento) array_financiamentos[r]; if(pd == NULL) //primeira posição livre { (array_financiamentos[r]) = pd; printf("Inseriu o candidato\n"); break; } } } void listar_candidatos() { int i; printf("\n-------- LISTAGEM ------------\n"); for(i=0;i<maximo;i++){ if(array_projetos[i] != NULL) //candidato inserido { printf("TITULO:%s\n",array_projetos[i]->titulo); printf("INSTITUICAO:%s\n",array_projetos[i]->instituicao); printf("INVESTIGADOR:%s\n",array_projetos[i]->investigador); printf("DURACAO:%d\n",array_projetos[i]->duracao); printf("PALAVRAS_CHAVE:%s\n",array_projetos[i]->palavras_chave); } } } void mostrarCandidatoEscolhido(char* candidatoProcurado) { int i=0; int encontrado=0; for(i=0;i<maximo;i++) { if(array_projetos[i] != NULL && array_projetos[i]->titulo == candidatoProcurado) { printf("TITULO:%s\n",array_projetos[i]->titulo); printf("INSTITUICAO:%s\n",array_projetos[i]->instituicao); printf("INVESTIGADOR:%s\n",array_projetos[i]->investigador); printf("DURACAO:%d\n",array_projetos[i]->duracao); printf("PALAVRAS_CHAVE:%s\n",array_projetos[i]->palavras_chave); encontrado=1; break; } } if(encontrado==0) //!encontrado printf("O candidato não existe\n"); } void removerAlunoEscolhido(char* titCandidato) { int i=0; int encontrado=0; for(i=0;i<maximo;i++) { if(array_projetos[i] != NULL && array_projetos[i]->titulo == titCandidato) { free(array_projetos[i]); array_projetos[i]=NULL; encontrado=1; break; } } if(encontrado==0) //!encontrado printf("O aluno não existe\n"); } int main() { double valor,valor1,valor2; int avaliacoes_finais; int gastos_finais; criar_projeto(); gastos_finais = soma_gastos(1,1,1,1,1,1); printf("\nGASTOS FINAIS: %d EUROS\n",gastos_finais); avaliacoes_finais=notas_avaliacao(1,1,1,1,1,1,1,1,1,1,1,1); printf("\nAVALIACOES FINAIS: %d\n",avaliacoes_finais); if (avaliacoes_finais<3) { printf("\nPROJECTO REJEITADO!!\n"); } else if (avaliacoes_finais==3) { valor=0.3*gastos_finais; printf("\nSubsidio no valor de %0.2f\n",valor);} else if (avaliacoes_finais == 4) { valor1=0.75*gastos_finais; printf("\nSubsidio no valor de %0.2f\n",valor1);} else if ( avaliacoes_finais==5) { valor2=1*gastos_finais; printf("\nSubsidio no valor de %0.2f\n",valor2);} listar_candidatos(); system("pause"); return 0; }ola
bsccara Posted April 28, 2012 at 03:46 PM Report #451922 Posted April 28, 2012 at 03:46 PM Procura o sitio onde atribuis valores ao array 'array_projetos'. Depois procura o sitio onde chamas essa função... P.S. Lado nenhum P.P.S. Por favor, por favor, por favor indenta esse código em condições. Código dentro de chavetas -> pelo menos 2 caracteres mais à direita. Só. P.P.P.S Tira o 'ola' do fim do código.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now