Guest - Mutant - Postado Maio 29, 2004 Denunciar Share Postado Maio 29, 2004 Galera tenho um programa em C que não esta rodando alguém por favor me ajude, ate pago por ele rodando perfeitamente !!! Fale comigo !!! icq 128624084 O programa !!!#include <string.h>#include <conio.h>#include <stdlib.h>#include <ctype.h>#include <math.h>#include <dos.h>#define FALSO 0#define VERDADEIRO 1#define br 32#define cabtela " CADASTRO DE ATLETAS "/**********************************//** Definições dos Tipos Globais **//**********************************/taipedef char str2 [ 3],str6 [ 7],str12[13],str20[21],str25[26],str40[41];typdef struct{int codigo;str25 nome;str2 nacional;float pobtidos;} tm;typedef tm tv[50];/*******************************************//** Declaração dos protótipos das Funções **//*******************************************/void DefinirCores (void);void ImprimirTelaBasica( void );void ImprimirMsg( int beep, int x, int y, char *msg );void PressionarTecla( void );int Confirma( int tam, str40 msg );char *Maiuscula( str25 cadeia );char *Completa( str25 cadeia, int tam );void InicializarTabAtletas( str12 nomearq, int *ultimo, tv tab );void MenuPrincipal( char* op );void MenuListar( char *op );void ImprimirTelaAtletas( int codigo );void ExibirAtletas( tm atleta );int LCod( void );void ObterInclusao( tm *atleta, int *ultimo );void IncluirAtletas( int *ultimo, tv tab );void ObterAlteracao( tm *atleta );void AlterarAtletas( int ultimo, tv tab );void ConsultarAtletas( int ultimo, tv tab );void CompletaZeroDireita (char chave1[], char chave2[]);void OrdenarTatleta( int tipo, int ultimo, tv tatleta );void ImprimirCabListagem( void );void ImprimirTatleta( int ultimo, tm *tatleta );void ListarAtletas( int ultimo, tv tatleta );/***************************************************************************/void LimparArea (int x, int y, int z, int w);void ImprimirBorda(int x, int y, int z, int w);void ImprimirLinha(char ch, int x, int y, char n);/* ************************************//* ******** Programa Principal ********//* ************************************/int main( int argc, char *argc[] ){if (argc == 3){file *arq;char op, nomearq[ 13 ];integ ultimo=0;tm tatleta[50];/* float x = acos( 60 ); Floating Point Format not Linked */DefinirCores();ImprimirTelaBasica();InicializarTabAtletas( argv[1], &ultimo, tatleta );MenuPrincipal(&op);while( op != 9 ){switch( op ){case '1':IncluirAtletas( &ultimo, tatleta );case '2':AlterarAtletas( ultimo, tatleta );case '3':ExcluirAtletas( ultimo, tatleta );case '4':ConsultarAtletas( ultimo, tatleta );case '5':ListarAtletas( ultimo, tatleta );case '9': break;default:ImprimirMsg( VERDADEIRO, 5, 22,"Opcao invalida..." );PressionarTecla();break;}MenuPrincipal( &op );}GravarTabAtletas( argv[2], ultimo, tatleta );textbackground( BLACK );textcolor( WHITE );clrscr();printf ("Fim programa");}else{printf ("\n Erro nos Parametros ! Digite: prog file-in file-out");}}/*** Definição das Funções*/void ImprimirTelaBasica( void ){LimparArea( 5, 9, 50, 13 );ImprimirBorda( 1, 1, 80, 3 );ImprimirBorda( 1, 7, 80, 19 );ImprimirBorda( 1, 20, 80, 24 );ImprimirLinha( 219, 3, 2, 15 );gotoxy( 30, 2 );highvideo();printf( cabtela );lowvideo();ImprimirData( 70, 1 );}void ImprimirMsg( int beep, int x, int y, char *msg ){gotoxy( x, y );if( beep )printf( "%c %s", 7, msg );elseprintf( msg );}void PressionarTecla( void ){ImprimirMsg( VERDADEIRO, 15, 22, "Pressione uma tecla para continuar..." );getch();LimparArea( 2, 11, 79, 20 );}int Confirma( int tam, str40 msg ){char resp;gotoxy( 5, 22 );printf( "%s", msg );esp = toupper( getch() );while( ( resp != 'S' ) && ( resp != 'N' ) ){gotoxy( 5 + tam, 22 );printf( "%s", msg );resp = toupper( getch() );}if( resp == 'S' )return VERDADEIRO;elsereturn FALSO;}char Maiuscula( str25 cadeia ){}char *Completa( str25 cadeia, int tam ){int i;for( i = ( strlen( cadeia ) + 1 ); i <= tam; i++ )strcat( cadeia, " " );return cadeia;}void NomeArquivo( str12 nomearq, str20 cabini ){LimparArea( 2, 5, 79, 18 );LimparArea( 2, 21, 79, 23 );gotoxy( 30, 4 );printf( "%s", cabini );gotoxy( 23, 10 );highvideo();printf( "Entre com o nome do arquivo < nome.ext >" );lowvideo();gotoxy( 35, 13 );scanf( "%s", nomearq ); fflush (stdin);PressionarTecla();}void InicializarTabAtletas( str12 nomearq, int *ultimo, tv tab ){FILE *arq;char c;int i = 0;if ((arq = fopen( nomearq, "r" )) == NULL){printf ("Erro na abertura do arquivo de entrada");*ultimo = -1;}else{fscanf( arq, "%d", &tab.codigo );while( tab.codigo != 0 ){fscanf( arq,"%c%25c%c%2c%f",&c,tab.nome,&c,tab.nacional,&tab.pobtidos );tab.nome[25] = '\0';tab.nacional[2] = '\0';i++;fscanf( arq, "%d", &tab.codigo );}*ultimo = i - 1;fclose( arq );}}void GravarTabAtletas( str12 nomearq, int ultimo, tv tab ){FILE *arq;int cod;arq = fopen( nomearq, "w" );for( cod = 0; cod <= ultimo; cod++ )fprintf( arq, "%d%c%s%c%s%c%9.2f\n",tab[cod].codigo, br,tab[cod].nome, br,tab[cod].nacional, br, tab[cod].pobtidos );fprintf( arq, "%s%c%s%c%s%c%f","0000",br,"xxxxxxxxxxxxxxxxxxxxxxxxx",br,"xx",br,0.00 );fclose( arq );}void MenuPrincipal( char * op ){LimparArea( 2, 5, 79, 18 );LimparArea( 2, 22, 79, 23 );gotoxy( 30, 4 );printf( " MENU PRINCIPAL " );gotoxy( 32, 8 );highvideo();lowvideo();printf( " - Incluir Atleta" );gotoxy( 32, 9 );highvideo();printf( "2" );lowvideo();printf( " - Alterar Atleta" );gotoxy( 32, 10 );highvideo();printf( "3" );lowvideo();printf( " - Excluir Atleta" );gotoxy( 32, 10 );highvideo();printf( "4" );lowvideo();printf( " - Consultar Atleta" );gotoxy( 32, 12 );highvideo();printf( "5" );lowvideo();printf( " - Listar Atleta" );gotoxy( 32, 15 );highvideo();printf( "9" );lowvideo();printf( " - Fim" );gotoxy( 5, 17 );ImprimirMsg( FALSO, 5, 12, "Escolha uma opcao: " );*op = getch();}void ImprimirTelaAtletas( int codigo ){LimparArea( 2, 5, 79, 18 );LimparArea( 2, 21, 79, 23 );gotoxy( 24, 10 );printf( "Codigo.........: %d", codigo );gotoxy( 24, 12 );printf( "Nome...........: " );gotoxy( 24, 10 );printf( "Nacionalidade..: " );gotoxy( 24, 16 );printf( "Pontos Obtidos.: " );}void ExibirAtletas( tm atleta){gotoxy( 42, 12 );printf( "%s", atleta.nome );gotoxy( 42, 14 );printf( "%s", atleta.nacional );gotoxy( 42, 16 );printf( "%9.2f", atleta.pobtidos );}int LCod( void ){int codigo = 0;LimparArea( 2, 5, 79, 18 );LimparArea( 2, 21, 79, 23 );gotoxy( 22, 10 );printf( "Entre com o Codigo do Atleta: " );scanf( "%d", &codigo ); fflush (stdin);return codigo;}void ObterInclusao( tm *atleta, int *ultimo ){atleta->codigo = *ultimo + 1;gotoxy( 42, 12 );gets( atleta->nome );Completa( Maiuscula( atleta->nome ), 25 );atleta->nome[25] = '\0';gotoxy( 42, 12 );printf( atleta->nome );gotoxy( 42,14 );gets( atleta->nacional );Completa( Maiuscula( atleta->nacional ), 2 );atleta->nacional[2] = '\0';gotoxy( 42,14);printf( atleta->nacional );gotoxy( 42, 16 );scanf( "%f", &atleta->pobtidos ); fflush (stdin);gotoxy( 42, 16 );printf( "%9.2f", atleta->pobtidos );}void IncluirAtletas( int * ultimo, tv tab ){do{gotoxy( 30, 9 );printf( " I N C L U S A O " );LimparArea( 2, 5, 79, 18 );LimparArea( 2, 21, 79, 23 );*ultimo= *ultimo;ImprimirTelaAtletas( *ultimo + 1);ObterInclusao(&tab [*ultimo], ultimo);ExibirAtletas (tab [*ultimo] );PressionarTecla();}while ( Confirma( 40, "Deseja incluir outro atleta (s/n)? " ) );}void ObterAlteracao( tm atleta ){str25 nomalt;str2 nacalt;str6 pobalt;float pobalt1;gotoxy(42,12);gets(nomalt);if( strlen( nomalt ) > 0 ){Completa( Maiuscula( nomalt ), 25 );gotoxy( 42, 12 );printf( "%s", nomalt );}gotoxy( 42, 14 );gets(nacalt);if( strlen( nacalt ) > 0 ){Completa( Maiuscula( nacalt ), 2 );gotoxy( 42,14 );printf( "%s", nacalt );}gotoxy( 42, 16 );gets( pobalt );if( pobalt > 0 )pobalt1 = atof( pobalt );gotoxy( 42, 16 );printf( "%9.2f", pobalt1 );if( Confirma( 40, "Dados Ok (s/n) ? " ) ){if( strlen( nomalt ) > 0 )strcpy( atleta->nome, nomalt );if( strlen( nacalt ) > 0 )strcpy( atleta->nacional, nacalt );if( strlen( pobalt ) > 0 )atleta->pobtidos = pobalt1;}}void AlterarAtletas( int ultimo, tv tab ){int codigo;do{gotoxy( 30, 4 );printf(" A L T E R A C A O ");LimparArea( 2, 5, 79, 18 );LimparArea( 2, 21, 79, 23 );codigo = LCod();if( ( codigo > 0 ) && ( (codigo-1) <= ultimo ) ){if( tab[ultimo].nome[1] != '*' ){ImprimirTelaAtletas( codigo );ExibirAtletas( tab[codigo-1]);ObterAlteracao( &tab[ codigo-1 ] );}else{ImprimirMsg( VERDADEIRO,5,22,"Atleta Excluido !" );PressionarTecla();}}else{ImprimirMsg( VERDADEIRO, 5, 20, "Atleta não existe !" );PressionarTecla();}}while ( Confirma( 40, "Deseja alterar outro atleta(s/n) ? " ) );}void ExcluirAtletas( int ultimo, tv tab ){int codigo;do{gotoxy( 30, 4 );printf(" E X C L U S A O ");LimparArea( 2, 5, 79, 18 );LimparArea( 2, 21, 79, 23 );codigo = LCod();if( ( codigo > 0 ) && ( (codigo-1) <= ultimo ) ){if( tab[codigo-1].nome[0] != '*' ){ImprimirTelaAtletas( codigo );ExibirAtletas( tab[codigo-1] );if( Confirma( 31, "Confirma Exclusao (s/n) ? " ) )tab[codigo-1].nome[0] = '*';}else{ImprimirMsg( VERDADEIRO, 5, 22,"Atleta já Excluido !" );PressionarTecla();}}else{ImprimirMsg( VERDADEIRO, 5, 22, "Atleta não Existe !" );PressionarTecla();}}while ( Confirma( 40, "Deseja excluir outro atleta (s/n) ? ") );}void ConsultarAtletas( int ultimo, tv tab ){int codigo;do{gotoxy( 30, 4 );printf( " C O N S U L T A " );LimparArea( 2, 5, 79, 18 );LimparArea( 2, 21, 79, 23 );codigo = LCod();if( ( codigo > 0 ) && ( (codigo-1) <= ultimo ) ){if( tab[ codigo-1 ].nome[ 0 ] != '*' ){ImprimirTelaAtletas( codigo );ExibirAtletas( tab[ codigo-1 ] );}else{ImprimirMsg( VERDADEIRO, 5, 22, "Atleta Excluido !" );PressionarTecla();}}else{ImprimirMsg( VERDADEIRO, 5, 22, "Atleta não Existe !" );PressionarTecla();}}while ( Confirma(40, "Deseja consultar outro atleta (s/n) ? " ) );}void CompletaZeroDireita (char chave1[], char chave2[]){int i,j;if (strlen(chave1)<strlen(chave2))for (i=strlen(chave2),j=strlen(chave1); i>=0;i--, j--)if (j>=0)chave1=chave1[j];elsechave1='0';elseif (strlen(chave1)>strlen(chave2))for (i=strlen(chave1),j=strlen(chave2); i>=0;i--, j--)if (j>=0)chave2=chave2[j];elsechave2='0';}void OrdenarTatleta( int tipo, int ultimo, tv tatleta ){int m, k, n, tocou, dec, sign;tm aux;str25 chave1, chave2;m = ultimo - 1;k = m;do{trocou = falso;for( n = 0; n <= m; n++ ){suitch( tipo ){case 1:itoa(tatleta[ n ].codigo,chave1,10);itoa(tatleta[ n + 1 ].codigo,chave2,10);CompletaZeroDireita (chave1, chave2)break;case 2:strcpy( chave1, tatleta[ n ].nacional );strcpy( chave2, tatleta[ n + 1 ].nacional );break;}if (strcmp( chave1,chave2 ) > 0 ){aux = tatleta[ n ];tatleta[ n ] = tatleta[ n + 1 ];tatleta[ n + 1 ] = aux;trocou = VERDADEIRO;k = n;}}m = k;}while( trocou );if (tipo == 2){m = ultimo - 1;k = m;do{trocou = FALSO;for (n=0; n <= m; n++){if (strcmp(tatleta[n].nacional,tatleta[n+1].nacional) == 0){gcvt(tatleta[ n ].pobtidos, 9, chave1);gcvt(tatleta[ n + 1 ].pobtidos, 9, chave2);if (strcmp(chave1, chave2) < 0){aux = tatleta[n];tatleta[n] = tatleta[n+1];tatleta[n+1] = aux;trocou = VERDADEIRO;k = n;}}}m = k;} while ( trocou );}}void ImprimirCabListagem( void ){highvideo();gotoxy( 10, 6 );printf( "CODIGO" );gotoxy( 21, 6 );printf( "NOME DO ATLETA");gotoxy( 47, 8 );printf( "PAIS");gotoxy( 59, 6 );printf( "PONTOS OBTIDOS" );ImprimirLinha( '-', 8, 7, 73 );lowvideo();}void ImprimirTatleta( int ultimo, tm *tatleta ){int i, vezes;gotoxy( 30, 4 );printf( " I M P R E S S A O " );LimparArea( 2, 5, 79, 18 );LimparArea( 2, 21, 79, 23 );ImprimirCabListagem();i = 0;while( i <= ultimo ){LimparArea( 2, 8, 79, 18 );vezes = 0;while( ( i <= ultimo ) && ( vezes < 10 ) ){vezes++;gotoxy( 10, 7 + vezes );printf( "%4d%s%s%s%s%s%9.2f", tatleta[ i ].codigo," ", tatleta[ i ].nome, " ",tatleta.nacional, " ",tatleta[ i ].pobtidos );i++;}PressionarTecla();}}void ListarAtletas( int ultimo, tv tatleta ){OrdenarTatleta (2, ultimo, tatleta);ImprimirTatleta(ultimo, tatleta);OrdenarTatleta (1, ultimo, tatleta);}/* ************************************************************** Funções destinadas a interface gráfica utilizadas (telas) **** ************************************************************//*** Funcão ImprimirData** Imprimi a Data corrente do sistema*/void ImprimirData( int x, int y ){struct date data_sistema;char *mes[] = { "Jan", "Fev", "Mar", "Abr", "Mai", "Jun","Jul", "Ago", "Set", "Out", "Nov", "Dez" };getdate( &data_sistema );gotoxy( x, y );cprintf( "%d %s %d", data_sistema.da_day, mes[data_sistema.da_mon - 1 ],data_sistema.da_year );}/*** Função ImprimirLinha** Preenche uma linha com uma sequencia de caracteres*/void ImprimirLinha( char ch, int x, int y, int n ){int i;for( i = x; i <= n; i++ ){gotoxy( i, y );cprintf( "%c", char );}}/*** Função ImprimirBorda** Imprimi uma Borda na tela*/void ImprimirBorda( int x, int y, int z, int w ){int i;gotoxy( x, y );cprintf( "%c", 201 );gotoxy( x, w );cprintf( "%c", 200 );gotoxy( z, y );cprintf( "%c", 187 );gotoxy( z, w );cprintf( "%c", 188 );for( i = ( x + 1 ); i <= ( z - 1 ); i++ ){gotoxy( i, y );cprintf( "%c", 205 );gotoxy( i, w );cprintf( "%c", 205 );}for( i = ( y + 1 ); i <= ( w - 1 ); i++ ){gotoxy( x, i );cprintf( "%c", 186 );gotoxy( z, i );cprintf( "%c", 186 );}}/*** Função LimparArea** Limpa a Area corrente*/void LimparArea( int x, int y, int z, int w ){int i, j;for( i = y; i <= w; i++ ){gotoxy( x, i );for( j = x; j <= z; j++ )cprintf( "%c", 32 );}}/*** Função DefinirCores** Função que defini as cores do sistema*/void DefinirCores( void ){int corchar, corfun, i;char c;textbackground( WHITE );clrscr();textcolor( LIGHTBLUE );ImprimirBorda( 1, 1, 80, 24 );textcolor( RED );gotoxy( 10, 3 );cprintf( "ESCOLHA DE CORES PARA O PROGRAMA " );textcolor( LIGHTBLUE );gotoxy( 53, 4 );cprintf( "FUNDO" );ImprimirBorda( 50, 5, 60, 14 );for( i = 0; i <= 7; i++ ){textbackground( i );gotoxy( 51, 6 + i );cprintf( " " );textbackground( WHITE );cprintf( "%3d", i );}gotoxy( 64, 4 );cprintf( "CARACTER" );ImprimirBorda( 63, 5, 73, 22 );for( i = 0; i <= 15; i++ ){textcolor( i );gotoxy( 64, 6 + i );cprintf( "%c%c%c%c%c", 219, 219, 219, 219, 219 );textcolor( LIGHTBLUE );cprintf( "%3d", i );}gotoxy( 11, 7 );cprintf( "Quer alterar as cores (s/n)?" );c = toupper( getch() );while( ( c != 'S' ) && ( c != 'N' ) ){gotoxy( 41, 7 );cprintf( "%c", 7 );c = toupper( getch() );}if( c = 'S' ){gotoxy( 17, 12 );cprintf( "FUNDO : " );cscanf( "%d", &corfun );gotoxy( 17, 15 );cprintf( "CARACTER: " );cscanf( "%d", &corchar );textbackground( corfun );textcolor( corchar );while (getch()!=13);}} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eddie_666 Postado Maio 29, 2004 Denunciar Share Postado Maio 29, 2004 o que acontece? que erro? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Maio 29, 2004 Denunciar Share Postado Maio 29, 2004 Desculpa q te diga mas o erro é obvio. taipedef???? n será typedef? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest eu sei veio !!! Postado Maio 29, 2004 Denunciar Share Postado Maio 29, 2004 Desculpa q te diga mas o erro é obvio. taipedef???? n será typedef? esses erros obvio já troquei mas nem funcionou !!!!por favor ajudme coloque o programa para rodar plz !!! eu ti amo galera !!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Junho 1, 2004 Denunciar Share Postado Junho 1, 2004 Dei varias arrumadas no código, muitas delas foram falta de atenção como: Ausência de alguns protótipos de função;Trocar uma letra de uma variável;Declarar funçãoes que recebem o tipo de argumento errado;Algumas palavras do C++ escritas errado;E por último voce declarou uma constante como VERDADEIRO, e usou "verdadeiro" em minusculo no programa.Mas não consegui arrumar a função "void ImprimirData( int x, int y )". #include <string.h> #include <conio.h> #include <stdlib.h> #include <ctype.h> #include <math.h> #include <dos.h> #define FALSO 0 #define VERDADEIRO 1 #define br 32 #define cabtela " CADASTRO DE ATLETAS " /**********************************/ /** Definições dos Tipos Globais **/ /**********************************/ typedef char str2 [ 3], str6 [ 7], str12[13], str20[21], str25[26], str40[41]; typedef struct { int codigo; str25 nome; str2 nacional; float pobtidos; } tm; typedef tm tv[50]; /*******************************************/ /** Declaração dos protótipos das Funções **/ /*******************************************/ void DefinirCores (void); void ImprimirTelaBasica( void ); void ImprimirMsg( int beep, int x, int y, char *msg ); void PressionarTecla( void ); int Confirma( int tam, str40 msg ); char *Maiuscula( char *cadeia ); char *Completa( str25 cadeia, int tam ); void InicializarTabAtletas( str12 nomearq, int *ultimo, tv tab ); void MenuPrincipal( char* op ); void MenuListar( char *op ); void ImprimirTelaAtletas( int codigo ); void ExibirAtletas( tm atleta ); int LCod( void ); void ObterInclusao( tm *atleta, int *ultimo ); void IncluirAtletas( int *ultimo, tv tab ); void ObterAlteracao( tm *atleta ); void AlterarAtletas( int ultimo, tv tab ); void ConsultarAtletas( int ultimo, tv tab ); void CompletaZeroDireita (char chave1[], char chave2[]); void OrdenarTatleta( int tipo, int ultimo, tv tatleta ); void ImprimirCabListagem( void ); void ImprimirTatleta( int ultimo, tm *tatleta ); void ListarAtletas( int ultimo, tv tatleta ); void GravarTabAtletas( str12 nomearq, int ultimo, tv tab ); void ExcluirAtletas( int ultimo, tv tab ); void ImprimirData( int x, int y ); /***************************************************************************/ void LimparArea (int x, int y, int z, int w); void ImprimirBorda(int x, int y, int z, int w); void ImprimirLinha(char ch, int x, int y, char n); /* ************************************/ /* ******** Programa Principal ********/ /* ************************************/ int main( int argc, char *argv[] ) { if (argc == 3) { FILE *arq; char op, nomearq[ 13 ]; int ultimo=0; tm tatleta[50]; /* float x = acos( 60 ); Floating Point Format not Linked */ DefinirCores(); ImprimirTelaBasica(); InicializarTabAtletas( argv[1], &ultimo, tatleta ); MenuPrincipal(&op); while( op != 9 ) { switch( op ) { case '1': IncluirAtletas( &ultimo, tatleta ); case '2': AlterarAtletas( ultimo, tatleta ); case '3': ExcluirAtletas( ultimo, tatleta ); case '4': ConsultarAtletas( ultimo, tatleta ); case '5': ListarAtletas( ultimo, tatleta ); case '9': break; default: ImprimirMsg( VERDADEIRO, 5, 22, "Opcao invalida..." ); PressionarTecla(); break; } MenuPrincipal( &op ); } GravarTabAtletas( argv[2], ultimo, tatleta ); textbackground( BLACK ); textcolor( WHITE ); clrscr(); printf ("Fim programa"); } else { printf ("\n Erro nos Parametros ! Digite: prog file-in file-out"); } } /* ** Definição das Funções */ void ImprimirTelaBasica( void ) { LimparArea( 5, 9, 50, 13 ); ImprimirBorda( 1, 1, 80, 3 ); ImprimirBorda( 1, 7, 80, 19 ); ImprimirBorda( 1, 20, 80, 24 ); ImprimirLinha( 219, 3, 2, 15 ); gotoxy( 30, 2 ); highvideo(); printf( cabtela ); lowvideo(); ImprimirData( 70, 1 ); } void ImprimirMsg( int beep, int x, int y, char *msg ) { gotoxy( x, y ); if( beep ) printf( "%c %s", 7, msg ); else printf( msg ); } void PressionarTecla( void ) { ImprimirMsg( VERDADEIRO, 15, 22, "Pressione uma tecla para continuar..." ); getch(); LimparArea( 2, 11, 79, 20 ); } int Confirma( int tam, str40 msg ) { char resp; gotoxy( 5, 22 ); printf( "%s", msg ); resp = toupper( getch() ); while( ( resp != 'S' ) && ( resp != 'N' ) ) { gotoxy( 5 + tam, 22 ); printf( "%s", msg ); resp = toupper( getch() ); } if( resp == 'S' ) return VERDADEIRO; else return FALSO; } char *Maiuscula( char *cadeia ) { } char *Completa( str25 cadeia, int tam ) { int i; for( i = ( strlen( cadeia ) + 1 ); i <= tam; i++ ) strcat( cadeia, " " ); return cadeia; } void NomeArquivo( str12 nomearq, str20 cabini ) { LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); gotoxy( 30, 4 ); printf( "%s", cabini ); gotoxy( 23, 10 ); highvideo(); printf( "Entre com o nome do arquivo < nome.ext >" ); lowvideo(); gotoxy( 35, 13 ); scanf( "%s", nomearq ); fflush (stdin); PressionarTecla(); } void InicializarTabAtletas( str12 nomearq, int *ultimo, tv tab ) { FILE *arq; char c; int i = 0; if ((arq = fopen( nomearq, "r" )) == NULL) { printf ("Erro na abertura do arquivo de entrada"); *ultimo = -1; } else { fscanf( arq, "%d", &tab[i].codigo ); while( tab[i].codigo != 0 ) { fscanf( arq,"%c%25c%c%2c%f",&c,tab[i].nome,&c,tab[i].nacional, &tab[i].pobtidos ); tab[i].nome[25] = '\0'; tab[i].nacional[2] = '\0'; i++; fscanf( arq, "%d", &tab[i].codigo ); } *ultimo = i - 1; fclose( arq ); } } void GravarTabAtletas( str12 nomearq, int ultimo, tv tab ) { FILE *arq; int cod; arq = fopen( nomearq, "w" ); for( cod = 0; cod <= ultimo; cod++ ) fprintf( arq, "%d%c%s%c%s%c%9.2f\n", tab[cod].codigo, br,tab[cod].nome, br, tab[cod].nacional, br, tab[cod].pobtidos ); fprintf( arq, "%s%c%s%c%s%c%f","0000",br,"xxxxxxxxxxxxxxxxxxxxxxxxx", br,"xx",br,0.00 ); fclose( arq ); } void MenuPrincipal( char * op ) { LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 22, 79, 23 ); gotoxy( 30, 4 ); printf( " MENU PRINCIPAL " ); gotoxy( 32, 8 ); highvideo(); lowvideo(); printf( " - Incluir Atleta" ); gotoxy( 32, 9 ); highvideo(); printf( "2" ); lowvideo(); printf( " - Alterar Atleta" ); gotoxy( 32, 10 ); highvideo(); printf( "3" ); lowvideo(); printf( " - Excluir Atleta" ); gotoxy( 32, 10 ); highvideo(); printf( "4" ); lowvideo(); printf( " - Consultar Atleta" ); gotoxy( 32, 12 ); highvideo(); printf( "5" ); lowvideo(); printf( " - Listar Atleta" ); gotoxy( 32, 15 ); highvideo(); printf( "9" ); lowvideo(); printf( " - Fim" ); gotoxy( 5, 17 ); ImprimirMsg( FALSO, 5, 12, "Escolha uma opcao: " ); *op = getch(); } void ImprimirTelaAtletas( int codigo ) { LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); gotoxy( 24, 10 ); printf( "Codigo.........: %d", codigo ); gotoxy( 24, 12 ); printf( "Nome...........: " ); gotoxy( 24, 10 ); printf( "Nacionalidade..: " ); gotoxy( 24, 16 ); printf( "Pontos Obtidos.: " ); } void ExibirAtletas( tm atleta) { gotoxy( 42, 12 ); printf( "%s", atleta.nome ); gotoxy( 42, 14 ); printf( "%s", atleta.nacional ); gotoxy( 42, 16 ); printf( "%9.2f", atleta.pobtidos ); } int LCod( void ) { int codigo = 0; LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); gotoxy( 22, 10 ); printf( "Entre com o Codigo do Atleta: " ); scanf( "%d", &codigo ); fflush (stdin); return codigo; } void ObterInclusao( tm *atleta, int *ultimo ) { atleta->codigo = *ultimo + 1; gotoxy( 42, 12 ); gets( atleta->nome ); Completa( Maiuscula( atleta->nome ), 25 ); atleta->nome[25] = '\0'; gotoxy( 42, 12 ); printf( atleta->nome ); gotoxy( 42,14 ); gets( atleta->nacional ); Completa( Maiuscula( atleta->nacional ), 2 ); atleta->nacional[2] = '\0'; gotoxy( 42,14); printf( atleta->nacional ); gotoxy( 42, 16 ); scanf( "%f", &atleta->pobtidos ); fflush (stdin); gotoxy( 42, 16 ); printf( "%9.2f", atleta->pobtidos ); } void IncluirAtletas( int * ultimo, tv tab ) { do { gotoxy( 30, 9 ); printf( " I N C L U S A O " ); LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); *ultimo= *ultimo; ImprimirTelaAtletas( *ultimo + 1); ObterInclusao(&tab [*ultimo], ultimo); ExibirAtletas (tab [*ultimo] ); PressionarTecla(); } while ( Confirma( 40, "Deseja incluir outro atleta (s/n)? " ) ); } void ObterAlteracao( tm atleta ) { str25 nomalt; str2 nacalt; str6 pobalt; float pobalt1; gotoxy(42,12); gets(nomalt); if( strlen( nomalt ) > 0 ) { Completa( Maiuscula( nomalt ), 25 ); gotoxy( 42, 12 ); printf( "%s", nomalt ); } gotoxy( 42, 14 ); gets(nacalt); if( strlen( nacalt ) > 0 ) { Completa( Maiuscula( nacalt ), 2 ); gotoxy( 42,14 ); printf( "%s", nacalt ); } gotoxy( 42, 16 ); gets( pobalt ); if( pobalt > 0 ) pobalt1 = atof( pobalt ); gotoxy( 42, 16 ); printf( "%9.2f", pobalt1 ); if( Confirma( 40, "Dados Ok (s/n) ? " ) ) { if( strlen( nomalt ) > 0 ) strcpy( atleta.nome, nomalt ); if( strlen( nacalt ) > 0 ) strcpy( atleta.nacional, nacalt ); if( strlen( pobalt ) > 0 ) atleta.pobtidos = pobalt1; } } void AlterarAtletas( int ultimo, tv tab ) { int codigo; do { gotoxy( 30, 4 ); printf(" A L T E R A C A O "); LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); codigo = LCod(); if( ( codigo > 0 ) && ( (codigo-1) <= ultimo ) ) { if( tab[ultimo].nome[1] != '*' ) { ImprimirTelaAtletas( codigo ); ExibirAtletas( tab[codigo-1]); ObterAlteracao( &tab[ codigo-1 ] ); } else { ImprimirMsg( VERDADEIRO,5,22,"Atleta Excluido !" ); PressionarTecla(); } } else { ImprimirMsg( VERDADEIRO, 5, 20, "Atleta não existe !" ); PressionarTecla(); } } while ( Confirma( 40, "Deseja alterar outro atleta(s/n) ? " ) ); } void ExcluirAtletas( int ultimo, tv tab ) { int codigo; do { gotoxy( 30, 4 ); printf(" E X C L U S A O "); LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); codigo = LCod(); if( ( codigo > 0 ) && ( (codigo-1) <= ultimo ) ) { if( tab[codigo-1].nome[0] != '*' ) { ImprimirTelaAtletas( codigo ); ExibirAtletas( tab[codigo-1] ); if( Confirma( 31, "Confirma Exclusao (s/n) ? " ) ) tab[codigo-1].nome[0] = '*'; } else { ImprimirMsg( VERDADEIRO, 5, 22, "Atleta já Excluido !" ); PressionarTecla(); } } else { ImprimirMsg( VERDADEIRO, 5, 22, "Atleta não Existe !" ); PressionarTecla(); } } while ( Confirma( 40, "Deseja excluir outro atleta (s/n) ? ") ); } void ConsultarAtletas( int ultimo, tv tab ) { int codigo; do { gotoxy( 30, 4 ); printf( " C O N S U L T A " ); LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); codigo = LCod(); if( ( codigo > 0 ) && ( (codigo-1) <= ultimo ) ) { if( tab[ codigo-1 ].nome[ 0 ] != '*' ) { ImprimirTelaAtletas( codigo ); ExibirAtletas( tab[ codigo-1 ] ); } else { ImprimirMsg( VERDADEIRO, 5, 22, "Atleta Excluido !" ); PressionarTecla(); } } else { ImprimirMsg( VERDADEIRO, 5, 22, "Atleta não Existe !" ); PressionarTecla(); } } while ( Confirma(40, "Deseja consultar outro atleta (s/n) ? " ) ); } void CompletaZeroDireita (char chave1[], char chave2[]) { int i,j; if (strlen(chave1)<strlen(chave2)) for (i=strlen(chave2),j=strlen(chave1); i>=0;i--, j--) if (j>=0) chave1[i]=chave1[j]; else chave1[i]='0'; else if (strlen(chave1)>strlen(chave2)) for (i=strlen(chave1),j=strlen(chave2); i>=0;i--, j--) if (j>=0) chave2[i]=chave2[j]; else chave2[i]='0'; } void OrdenarTatleta( int tipo, int ultimo, tv tatleta ) { int m, k, n, tocou, dec, sign; tm aux; str25 chave1, chave2; m = ultimo - 1; k = m; do { tocou = FALSO; for( n = 0; n <= m; n++ ) { switch( tipo ) { case 1: itoa(tatleta[ n ].codigo,chave1,10); itoa(tatleta[ n + 1 ].codigo,chave2,10); CompletaZeroDireita (chave1, chave2); break; case 2: strcpy( chave1, tatleta[ n ].nacional ); strcpy( chave2, tatleta[ n + 1 ].nacional ); break; } if (strcmp( chave1,chave2 ) > 0 ) { aux = tatleta[ n ]; tatleta[ n ] = tatleta[ n + 1 ]; tatleta[ n + 1 ] = aux; tocou = VERDADEIRO; k = n; } } m = k; } while( tocou ); if (tipo == 2) { m = ultimo - 1; k = m; do { tocou = FALSO; for (n=0; n <= m; n++) { if (strcmp(tatleta[n].nacional,tatleta[n+1].nacional) == 0) { gcvt(tatleta[ n ].pobtidos, 9, chave1); gcvt(tatleta[ n + 1 ].pobtidos, 9, chave2); if (strcmp(chave1, chave2) < 0) { aux = tatleta[n]; tatleta[n] = tatleta[n+1]; tatleta[n+1] = aux; tocou = VERDADEIRO; k = n; } } } m = k; } while ( tocou ); } } void ImprimirCabListagem( void ) { highvideo(); gotoxy( 10, 6 ); printf( "CODIGO" ); gotoxy( 21, 6 ); printf( "NOME DO ATLETA"); gotoxy( 47, 8 ); printf( "PAIS"); gotoxy( 59, 6 ); printf( "PONTOS OBTIDOS" ); ImprimirLinha( '-', 8, 7, 73 ); lowvideo(); } void ImprimirTatleta( int ultimo, tm *tatleta ) { int i, vezes; gotoxy( 30, 4 ); printf( " I M P R E S S A O " ); LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); ImprimirCabListagem(); i = 0; while( i <= ultimo ) { LimparArea( 2, 8, 79, 18 ); vezes = 0; while( ( i <= ultimo ) && ( vezes < 10 ) ) { vezes++; gotoxy( 10, 7 + vezes ); printf( "%4d%s%s%s%s%s%9.2f", tatleta[ i ].codigo, " ", tatleta[ i ].nome, " ", tatleta[i].nacional, " ", tatleta[ i ].pobtidos ); i++; } PressionarTecla(); } } void ListarAtletas( int ultimo, tv tatleta ) { OrdenarTatleta (2, ultimo, tatleta); ImprimirTatleta(ultimo, tatleta); OrdenarTatleta (1, ultimo, tatleta); } /* ************************************************************ ** Funções destinadas a interface gráfica utilizadas (telas) ** ** ************************************************************/ /* ** Funcão ImprimirData ** Imprimi a Data corrente do sistema */ void ImprimirData( int x, int y ) { struct date data_sistema; char *mes[] = { "Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez" }; getdate( &data_sistema ); gotoxy( x, y ); cprintf( "%d %s %d", data_sistema.da_day, mes[data_sistema.da_mon - 1 ], data_sistema.da_year ); } /* ** Função ImprimirLinha ** Preenche uma linha com uma sequencia de caracteres */ void ImprimirLinha( char ch, int x, int y, int n ) { int i; for( i = x; i <= n; i++ ) { gotoxy( i, y ); cprintf( "%c", char ); } } /* ** Função ImprimirBorda ** Imprimi uma Borda na tela */ void ImprimirBorda( int x, int y, int z, int w ) { int i; gotoxy( x, y ); cprintf( "%c", 201 ); gotoxy( x, w ); cprintf( "%c", 200 ); gotoxy( z, y ); cprintf( "%c", 187 ); gotoxy( z, w ); cprintf( "%c", 188 ); for( i = ( x + 1 ); i <= ( z - 1 ); i++ ) { gotoxy( i, y ); cprintf( "%c", 205 ); gotoxy( i, w ); cprintf( "%c", 205 ); } for( i = ( y + 1 ); i <= ( w - 1 ); i++ ) { gotoxy( x, i ); cprintf( "%c", 186 ); gotoxy( z, i ); cprintf( "%c", 186 ); } } /* ** Função LimparArea ** Limpa a Area corrente */ void LimparArea( int x, int y, int z, int w ) { int i, j; for( i = y; i <= w; i++ ) { gotoxy( x, i ); for( j = x; j <= z; j++ ) cprintf( "%c", 32 ); } } /* ** Função DefinirCores ** Função que defini as cores do sistema */ void DefinirCores( void ) { int corchar, corfun, i; char c; textbackground( WHITE ); clrscr(); textcolor( LIGHTBLUE ); ImprimirBorda( 1, 1, 80, 24 ); textcolor( RED ); gotoxy( 10, 3 ); cprintf( "ESCOLHA DE CORES PARA O PROGRAMA " ); textcolor( LIGHTBLUE ); gotoxy( 53, 4 ); cprintf( "FUNDO" ); ImprimirBorda( 50, 5, 60, 14 ); for( i = 0; i <= 7; i++ ) { textbackground( i ); gotoxy( 51, 6 + i ); cprintf( " " ); textbackground( WHITE ); cprintf( "%3d", i ); } gotoxy( 64, 4 ); cprintf( "CARACTER" ); ImprimirBorda( 63, 5, 73, 22 ); for( i = 0; i <= 15; i++ ) { textcolor( i ); gotoxy( 64, 6 + i ); cprintf( "%c%c%c%c%c", 219, 219, 219, 219, 219 ); textcolor( LIGHTBLUE ); cprintf( "%3d", i ); } gotoxy( 11, 7 ); cprintf( "Quer alterar as cores (s/n)?" ); c = toupper( getch() ); while( ( c != 'S' ) && ( c != 'N' ) ) { gotoxy( 41, 7 ); cprintf( "%c", 7 ); c = toupper( getch() ); } if( c = 'S' ) { gotoxy( 17, 12 ); cprintf( "FUNDO : " ); cscanf( "%d", &corfun ); gotoxy( 17, 15 ); cprintf( "CARACTER: " ); cscanf( "%d", &corchar ); textbackground( corfun ); textcolor( corchar ); while (getch()!=13); } } Espero ter ajudado... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Junho 2, 2004 Denunciar Share Postado Junho 2, 2004 Dei varias arrumadas no código, muitas delas foram falta de atenção como: Ausência de alguns protótipos de função;Trocar uma letra de uma variável;Declarar funçãoes que recebem o tipo de argumento errado;Algumas palavras do C++ escritas errado;E por último voce declarou uma constante como VERDADEIRO, e usou "verdadeiro" em minusculo no programa.Mas não consegui arrumar a função "void ImprimirData( int x, int y )". #include <string.h> #include <conio.h> #include <stdlib.h> #include <ctype.h> #include <math.h> #include <dos.h> #define FALSO 0 #define VERDADEIRO 1 #define br 32 #define cabtela " CADASTRO DE ATLETAS " /**********************************/ /** Definições dos Tipos Globais **/ /**********************************/ typedef char str2 [ 3], str6 [ 7], str12[13], str20[21], str25[26], str40[41]; typedef struct { int codigo; str25 nome; str2 nacional; float pobtidos; } tm; typedef tm tv[50]; /*******************************************/ /** Declaração dos protótipos das Funções **/ /*******************************************/ void DefinirCores (void); void ImprimirTelaBasica( void ); void ImprimirMsg( int beep, int x, int y, char *msg ); void PressionarTecla( void ); int Confirma( int tam, str40 msg ); char *Maiuscula( char *cadeia ); char *Completa( str25 cadeia, int tam ); void InicializarTabAtletas( str12 nomearq, int *ultimo, tv tab ); void MenuPrincipal( char* op ); void MenuListar( char *op ); void ImprimirTelaAtletas( int codigo ); void ExibirAtletas( tm atleta ); int LCod( void ); void ObterInclusao( tm *atleta, int *ultimo ); void IncluirAtletas( int *ultimo, tv tab ); void ObterAlteracao( tm *atleta ); void AlterarAtletas( int ultimo, tv tab ); void ConsultarAtletas( int ultimo, tv tab ); void CompletaZeroDireita (char chave1[], char chave2[]); void OrdenarTatleta( int tipo, int ultimo, tv tatleta ); void ImprimirCabListagem( void ); void ImprimirTatleta( int ultimo, tm *tatleta ); void ListarAtletas( int ultimo, tv tatleta ); void GravarTabAtletas( str12 nomearq, int ultimo, tv tab ); void ExcluirAtletas( int ultimo, tv tab ); void ImprimirData( int x, int y ); /***************************************************************************/ void LimparArea (int x, int y, int z, int w); void ImprimirBorda(int x, int y, int z, int w); void ImprimirLinha(char ch, int x, int y, char n); /* ************************************/ /* ******** Programa Principal ********/ /* ************************************/ int main( int argc, char *argv[] ) { if (argc == 3) { FILE *arq; char op, nomearq[ 13 ]; int ultimo=0; tm tatleta[50]; /* float x = acos( 60 ); Floating Point Format not Linked */ DefinirCores(); ImprimirTelaBasica(); InicializarTabAtletas( argv[1], &ultimo, tatleta ); MenuPrincipal(&op); while( op != 9 ) { switch( op ) { case '1': IncluirAtletas( &ultimo, tatleta ); case '2': AlterarAtletas( ultimo, tatleta ); case '3': ExcluirAtletas( ultimo, tatleta ); case '4': ConsultarAtletas( ultimo, tatleta ); case '5': ListarAtletas( ultimo, tatleta ); case '9': break; default: ImprimirMsg( VERDADEIRO, 5, 22, "Opcao invalida..." ); PressionarTecla(); break; } MenuPrincipal( &op ); } GravarTabAtletas( argv[2], ultimo, tatleta ); textbackground( BLACK ); textcolor( WHITE ); clrscr(); printf ("Fim programa"); } else { printf ("\n Erro nos Parametros ! Digite: prog file-in file-out"); } } /* ** Definição das Funções */ void ImprimirTelaBasica( void ) { LimparArea( 5, 9, 50, 13 ); ImprimirBorda( 1, 1, 80, 3 ); ImprimirBorda( 1, 7, 80, 19 ); ImprimirBorda( 1, 20, 80, 24 ); ImprimirLinha( 219, 3, 2, 15 ); gotoxy( 30, 2 ); highvideo(); printf( cabtela ); lowvideo(); ImprimirData( 70, 1 ); } void ImprimirMsg( int beep, int x, int y, char *msg ) { gotoxy( x, y ); if( beep ) printf( "%c %s", 7, msg ); else printf( msg ); } void PressionarTecla( void ) { ImprimirMsg( VERDADEIRO, 15, 22, "Pressione uma tecla para continuar..." ); getch(); LimparArea( 2, 11, 79, 20 ); } int Confirma( int tam, str40 msg ) { char resp; gotoxy( 5, 22 ); printf( "%s", msg ); resp = toupper( getch() ); while( ( resp != 'S' ) && ( resp != 'N' ) ) { gotoxy( 5 + tam, 22 ); printf( "%s", msg ); resp = toupper( getch() ); } if( resp == 'S' ) return VERDADEIRO; else return FALSO; } char *Maiuscula( char *cadeia ) { } char *Completa( str25 cadeia, int tam ) { int i; for( i = ( strlen( cadeia ) + 1 ); i <= tam; i++ ) strcat( cadeia, " " ); return cadeia; } void NomeArquivo( str12 nomearq, str20 cabini ) { LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); gotoxy( 30, 4 ); printf( "%s", cabini ); gotoxy( 23, 10 ); highvideo(); printf( "Entre com o nome do arquivo < nome.ext >" ); lowvideo(); gotoxy( 35, 13 ); scanf( "%s", nomearq ); fflush (stdin); PressionarTecla(); } void InicializarTabAtletas( str12 nomearq, int *ultimo, tv tab ) { FILE *arq; char c; int i = 0; if ((arq = fopen( nomearq, "r" )) == NULL) { printf ("Erro na abertura do arquivo de entrada"); *ultimo = -1; } else { fscanf( arq, "%d", &tab[i].codigo ); while( tab[i].codigo != 0 ) { fscanf( arq,"%c%25c%c%2c%f",&c,tab[i].nome,&c,tab[i].nacional, &tab[i].pobtidos ); tab[i].nome[25] = '\0'; tab[i].nacional[2] = '\0'; i++; fscanf( arq, "%d", &tab[i].codigo ); } *ultimo = i - 1; fclose( arq ); } } void GravarTabAtletas( str12 nomearq, int ultimo, tv tab ) { FILE *arq; int cod; arq = fopen( nomearq, "w" ); for( cod = 0; cod <= ultimo; cod++ ) fprintf( arq, "%d%c%s%c%s%c%9.2f\n", tab[cod].codigo, br,tab[cod].nome, br, tab[cod].nacional, br, tab[cod].pobtidos ); fprintf( arq, "%s%c%s%c%s%c%f","0000",br,"xxxxxxxxxxxxxxxxxxxxxxxxx", br,"xx",br,0.00 ); fclose( arq ); } void MenuPrincipal( char * op ) { LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 22, 79, 23 ); gotoxy( 30, 4 ); printf( " MENU PRINCIPAL " ); gotoxy( 32, 8 ); highvideo(); lowvideo(); printf( " - Incluir Atleta" ); gotoxy( 32, 9 ); highvideo(); printf( "2" ); lowvideo(); printf( " - Alterar Atleta" ); gotoxy( 32, 10 ); highvideo(); printf( "3" ); lowvideo(); printf( " - Excluir Atleta" ); gotoxy( 32, 10 ); highvideo(); printf( "4" ); lowvideo(); printf( " - Consultar Atleta" ); gotoxy( 32, 12 ); highvideo(); printf( "5" ); lowvideo(); printf( " - Listar Atleta" ); gotoxy( 32, 15 ); highvideo(); printf( "9" ); lowvideo(); printf( " - Fim" ); gotoxy( 5, 17 ); ImprimirMsg( FALSO, 5, 12, "Escolha uma opcao: " ); *op = getch(); } void ImprimirTelaAtletas( int codigo ) { LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); gotoxy( 24, 10 ); printf( "Codigo.........: %d", codigo ); gotoxy( 24, 12 ); printf( "Nome...........: " ); gotoxy( 24, 10 ); printf( "Nacionalidade..: " ); gotoxy( 24, 16 ); printf( "Pontos Obtidos.: " ); } void ExibirAtletas( tm atleta) { gotoxy( 42, 12 ); printf( "%s", atleta.nome ); gotoxy( 42, 14 ); printf( "%s", atleta.nacional ); gotoxy( 42, 16 ); printf( "%9.2f", atleta.pobtidos ); } int LCod( void ) { int codigo = 0; LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); gotoxy( 22, 10 ); printf( "Entre com o Codigo do Atleta: " ); scanf( "%d", &codigo ); fflush (stdin); return codigo; } void ObterInclusao( tm *atleta, int *ultimo ) { atleta->codigo = *ultimo + 1; gotoxy( 42, 12 ); gets( atleta->nome ); Completa( Maiuscula( atleta->nome ), 25 ); atleta->nome[25] = '\0'; gotoxy( 42, 12 ); printf( atleta->nome ); gotoxy( 42,14 ); gets( atleta->nacional ); Completa( Maiuscula( atleta->nacional ), 2 ); atleta->nacional[2] = '\0'; gotoxy( 42,14); printf( atleta->nacional ); gotoxy( 42, 16 ); scanf( "%f", &atleta->pobtidos ); fflush (stdin); gotoxy( 42, 16 ); printf( "%9.2f", atleta->pobtidos ); } void IncluirAtletas( int * ultimo, tv tab ) { do { gotoxy( 30, 9 ); printf( " I N C L U S A O " ); LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); *ultimo= *ultimo; ImprimirTelaAtletas( *ultimo + 1); ObterInclusao(&tab [*ultimo], ultimo); ExibirAtletas (tab [*ultimo] ); PressionarTecla(); } while ( Confirma( 40, "Deseja incluir outro atleta (s/n)? " ) ); } void ObterAlteracao( tm atleta ) { str25 nomalt; str2 nacalt; str6 pobalt; float pobalt1; gotoxy(42,12); gets(nomalt); if( strlen( nomalt ) > 0 ) { Completa( Maiuscula( nomalt ), 25 ); gotoxy( 42, 12 ); printf( "%s", nomalt ); } gotoxy( 42, 14 ); gets(nacalt); if( strlen( nacalt ) > 0 ) { Completa( Maiuscula( nacalt ), 2 ); gotoxy( 42,14 ); printf( "%s", nacalt ); } gotoxy( 42, 16 ); gets( pobalt ); if( pobalt > 0 ) pobalt1 = atof( pobalt ); gotoxy( 42, 16 ); printf( "%9.2f", pobalt1 ); if( Confirma( 40, "Dados Ok (s/n) ? " ) ) { if( strlen( nomalt ) > 0 ) strcpy( atleta.nome, nomalt ); if( strlen( nacalt ) > 0 ) strcpy( atleta.nacional, nacalt ); if( strlen( pobalt ) > 0 ) atleta.pobtidos = pobalt1; } } void AlterarAtletas( int ultimo, tv tab ) { int codigo; do { gotoxy( 30, 4 ); printf(" A L T E R A C A O "); LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); codigo = LCod(); if( ( codigo > 0 ) && ( (codigo-1) <= ultimo ) ) { if( tab[ultimo].nome[1] != '*' ) { ImprimirTelaAtletas( codigo ); ExibirAtletas( tab[codigo-1]); ObterAlteracao( &tab[ codigo-1 ] ); } else { ImprimirMsg( VERDADEIRO,5,22,"Atleta Excluido !" ); PressionarTecla(); } } else { ImprimirMsg( VERDADEIRO, 5, 20, "Atleta não existe !" ); PressionarTecla(); } } while ( Confirma( 40, "Deseja alterar outro atleta(s/n) ? " ) ); } void ExcluirAtletas( int ultimo, tv tab ) { int codigo; do { gotoxy( 30, 4 ); printf(" E X C L U S A O "); LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); codigo = LCod(); if( ( codigo > 0 ) && ( (codigo-1) <= ultimo ) ) { if( tab[codigo-1].nome[0] != '*' ) { ImprimirTelaAtletas( codigo ); ExibirAtletas( tab[codigo-1] ); if( Confirma( 31, "Confirma Exclusao (s/n) ? " ) ) tab[codigo-1].nome[0] = '*'; } else { ImprimirMsg( VERDADEIRO, 5, 22, "Atleta já Excluido !" ); PressionarTecla(); } } else { ImprimirMsg( VERDADEIRO, 5, 22, "Atleta não Existe !" ); PressionarTecla(); } } while ( Confirma( 40, "Deseja excluir outro atleta (s/n) ? ") ); } void ConsultarAtletas( int ultimo, tv tab ) { int codigo; do { gotoxy( 30, 4 ); printf( " C O N S U L T A " ); LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); codigo = LCod(); if( ( codigo > 0 ) && ( (codigo-1) <= ultimo ) ) { if( tab[ codigo-1 ].nome[ 0 ] != '*' ) { ImprimirTelaAtletas( codigo ); ExibirAtletas( tab[ codigo-1 ] ); } else { ImprimirMsg( VERDADEIRO, 5, 22, "Atleta Excluido !" ); PressionarTecla(); } } else { ImprimirMsg( VERDADEIRO, 5, 22, "Atleta não Existe !" ); PressionarTecla(); } } while ( Confirma(40, "Deseja consultar outro atleta (s/n) ? " ) ); } void CompletaZeroDireita (char chave1[], char chave2[]) { int i,j; if (strlen(chave1)<strlen(chave2)) for (i=strlen(chave2),j=strlen(chave1); i>=0;i--, j--) if (j>=0) chave1[i]=chave1[j]; else chave1[i]='0'; else if (strlen(chave1)>strlen(chave2)) for (i=strlen(chave1),j=strlen(chave2); i>=0;i--, j--) if (j>=0) chave2[i]=chave2[j]; else chave2[i]='0'; } void OrdenarTatleta( int tipo, int ultimo, tv tatleta ) { int m, k, n, tocou, dec, sign; tm aux; str25 chave1, chave2; m = ultimo - 1; k = m; do { tocou = FALSO; for( n = 0; n <= m; n++ ) { switch( tipo ) { case 1: itoa(tatleta[ n ].codigo,chave1,10); itoa(tatleta[ n + 1 ].codigo,chave2,10); CompletaZeroDireita (chave1, chave2); break; case 2: strcpy( chave1, tatleta[ n ].nacional ); strcpy( chave2, tatleta[ n + 1 ].nacional ); break; } if (strcmp( chave1,chave2 ) > 0 ) { aux = tatleta[ n ]; tatleta[ n ] = tatleta[ n + 1 ]; tatleta[ n + 1 ] = aux; tocou = VERDADEIRO; k = n; } } m = k; } while( tocou ); if (tipo == 2) { m = ultimo - 1; k = m; do { tocou = FALSO; for (n=0; n <= m; n++) { if (strcmp(tatleta[n].nacional,tatleta[n+1].nacional) == 0) { gcvt(tatleta[ n ].pobtidos, 9, chave1); gcvt(tatleta[ n + 1 ].pobtidos, 9, chave2); if (strcmp(chave1, chave2) < 0) { aux = tatleta[n]; tatleta[n] = tatleta[n+1]; tatleta[n+1] = aux; tocou = VERDADEIRO; k = n; } } } m = k; } while ( tocou ); } } void ImprimirCabListagem( void ) { highvideo(); gotoxy( 10, 6 ); printf( "CODIGO" ); gotoxy( 21, 6 ); printf( "NOME DO ATLETA"); gotoxy( 47, 8 ); printf( "PAIS"); gotoxy( 59, 6 ); printf( "PONTOS OBTIDOS" ); ImprimirLinha( '-', 8, 7, 73 ); lowvideo(); } void ImprimirTatleta( int ultimo, tm *tatleta ) { int i, vezes; gotoxy( 30, 4 ); printf( " I M P R E S S A O " ); LimparArea( 2, 5, 79, 18 ); LimparArea( 2, 21, 79, 23 ); ImprimirCabListagem(); i = 0; while( i <= ultimo ) { LimparArea( 2, 8, 79, 18 ); vezes = 0; while( ( i <= ultimo ) && ( vezes < 10 ) ) { vezes++; gotoxy( 10, 7 + vezes ); printf( "%4d%s%s%s%s%s%9.2f", tatleta[ i ].codigo, " ", tatleta[ i ].nome, " ", tatleta[i].nacional, " ", tatleta[ i ].pobtidos ); i++; } PressionarTecla(); } } void ListarAtletas( int ultimo, tv tatleta ) { OrdenarTatleta (2, ultimo, tatleta); ImprimirTatleta(ultimo, tatleta); OrdenarTatleta (1, ultimo, tatleta); } /* ************************************************************ ** Funções destinadas a interface gráfica utilizadas (telas) ** ** ************************************************************/ /* ** Funcão ImprimirData ** Imprimi a Data corrente do sistema */ void ImprimirData( int x, int y ) { struct date data_sistema; char *mes[] = { "Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez" }; getdate( &data_sistema ); gotoxy( x, y ); cprintf( "%d %s %d", data_sistema.da_day, mes[data_sistema.da_mon - 1 ], data_sistema.da_year ); } /* ** Função ImprimirLinha ** Preenche uma linha com uma sequencia de caracteres */ void ImprimirLinha( char ch, int x, int y, int n ) { int i; for( i = x; i <= n; i++ ) { gotoxy( i, y ); cprintf( "%c", char ); } } /* ** Função ImprimirBorda ** Imprimi uma Borda na tela */ void ImprimirBorda( int x, int y, int z, int w ) { int i; gotoxy( x, y ); cprintf( "%c", 201 ); gotoxy( x, w ); cprintf( "%c", 200 ); gotoxy( z, y ); cprintf( "%c", 187 ); gotoxy( z, w ); cprintf( "%c", 188 ); for( i = ( x + 1 ); i <= ( z - 1 ); i++ ) { gotoxy( i, y ); cprintf( "%c", 205 ); gotoxy( i, w ); cprintf( "%c", 205 ); } for( i = ( y + 1 ); i <= ( w - 1 ); i++ ) { gotoxy( x, i ); cprintf( "%c", 186 ); gotoxy( z, i ); cprintf( "%c", 186 ); } } /* ** Função LimparArea ** Limpa a Area corrente */ void LimparArea( int x, int y, int z, int w ) { int i, j; for( i = y; i <= w; i++ ) { gotoxy( x, i ); for( j = x; j <= z; j++ ) cprintf( "%c", 32 ); } } /* ** Função DefinirCores ** Função que defini as cores do sistema */ void DefinirCores( void ) { int corchar, corfun, i; char c; textbackground( WHITE ); clrscr(); textcolor( LIGHTBLUE ); ImprimirBorda( 1, 1, 80, 24 ); textcolor( RED ); gotoxy( 10, 3 ); cprintf( "ESCOLHA DE CORES PARA O PROGRAMA " ); textcolor( LIGHTBLUE ); gotoxy( 53, 4 ); cprintf( "FUNDO" ); ImprimirBorda( 50, 5, 60, 14 ); for( i = 0; i <= 7; i++ ) { textbackground( i ); gotoxy( 51, 6 + i ); cprintf( " " ); textbackground( WHITE ); cprintf( "%3d", i ); } gotoxy( 64, 4 ); cprintf( "CARACTER" ); ImprimirBorda( 63, 5, 73, 22 ); for( i = 0; i <= 15; i++ ) { textcolor( i ); gotoxy( 64, 6 + i ); cprintf( "%c%c%c%c%c", 219, 219, 219, 219, 219 ); textcolor( LIGHTBLUE ); cprintf( "%3d", i ); } gotoxy( 11, 7 ); cprintf( "Quer alterar as cores (s/n)?" ); c = toupper( getch() ); while( ( c != 'S' ) && ( c != 'N' ) ) { gotoxy( 41, 7 ); cprintf( "%c", 7 ); c = toupper( getch() ); } if( c = 'S' ) { gotoxy( 17, 12 ); cprintf( "FUNDO : " ); cscanf( "%d", &corfun ); gotoxy( 17, 15 ); cprintf( "CARACTER: " ); cscanf( "%d", &corchar ); textbackground( corfun ); textcolor( corchar ); while (getch()!=13); } } Espero ter ajudado... Que trabalho. Fico burro com isto lolé bem. De certeza q ajusdas-te Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest - Mutant -
Galera tenho um programa em C que não esta rodando alguém por favor me ajude, ate pago por ele rodando perfeitamente !!! Fale comigo !!! icq 128624084
O programa !!!
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <dos.h>
#define FALSO 0
#define VERDADEIRO 1
#define br 32
#define cabtela " CADASTRO DE ATLETAS "
/**********************************/
/** Definições dos Tipos Globais **/
/**********************************/
taipedef char str2 [ 3],
str6 [ 7],
str12[13],
str20[21],
str25[26],
str40[41];
typdef struct
{
int codigo;
str25 nome;
str2 nacional;
float pobtidos;
} tm;
typedef tm tv[50];
/*******************************************/
/** Declaração dos protótipos das Funções **/
/*******************************************/
void DefinirCores (void);
void ImprimirTelaBasica( void );
void ImprimirMsg( int beep, int x, int y, char *msg );
void PressionarTecla( void );
int Confirma( int tam, str40 msg );
char *Maiuscula( str25 cadeia );
char *Completa( str25 cadeia, int tam );
void InicializarTabAtletas( str12 nomearq, int *ultimo, tv tab );
void MenuPrincipal( char* op );
void MenuListar( char *op );
void ImprimirTelaAtletas( int codigo );
void ExibirAtletas( tm atleta );
int LCod( void );
void ObterInclusao( tm *atleta, int *ultimo );
void IncluirAtletas( int *ultimo, tv tab );
void ObterAlteracao( tm *atleta );
void AlterarAtletas( int ultimo, tv tab );
void ConsultarAtletas( int ultimo, tv tab );
void CompletaZeroDireita (char chave1[], char chave2[]);
void OrdenarTatleta( int tipo, int ultimo, tv tatleta );
void ImprimirCabListagem( void );
void ImprimirTatleta( int ultimo, tm *tatleta );
void ListarAtletas( int ultimo, tv tatleta );
/***************************************************************************/
void LimparArea (int x, int y, int z, int w);
void ImprimirBorda(int x, int y, int z, int w);
void ImprimirLinha(char ch, int x, int y, char n);
/* ************************************/
/* ******** Programa Principal ********/
/* ************************************/
int main( int argc, char *argc[] )
{
if (argc == 3)
{
file *arq;
char op, nomearq[ 13 ];
integ ultimo=0;
tm tatleta[50];
/* float x = acos( 60 ); Floating Point Format not Linked */
DefinirCores();
ImprimirTelaBasica();
InicializarTabAtletas( argv[1], &ultimo, tatleta );
MenuPrincipal(&op);
while( op != 9 )
{
switch( op )
{
case '1':
IncluirAtletas( &ultimo, tatleta );
case '2':
AlterarAtletas( ultimo, tatleta );
case '3':
ExcluirAtletas( ultimo, tatleta );
case '4':
ConsultarAtletas( ultimo, tatleta );
case '5':
ListarAtletas( ultimo, tatleta );
case '9': break;
default:
ImprimirMsg( VERDADEIRO, 5, 22,
"Opcao invalida..." );
PressionarTecla();
break;
}
MenuPrincipal( &op );
}
GravarTabAtletas( argv[2], ultimo, tatleta );
textbackground( BLACK );
textcolor( WHITE );
clrscr();
printf ("Fim programa");
}
else
{
printf ("\n Erro nos Parametros ! Digite: prog file-in file-out");
}
}
/*
** Definição das Funções
*/
void ImprimirTelaBasica( void )
{
LimparArea( 5, 9, 50, 13 );
ImprimirBorda( 1, 1, 80, 3 );
ImprimirBorda( 1, 7, 80, 19 );
ImprimirBorda( 1, 20, 80, 24 );
ImprimirLinha( 219, 3, 2, 15 );
gotoxy( 30, 2 );
highvideo();
printf( cabtela );
lowvideo();
ImprimirData( 70, 1 );
}
void ImprimirMsg( int beep, int x, int y, char *msg )
{
gotoxy( x, y );
if( beep )
printf( "%c %s", 7, msg );
else
printf( msg );
}
void PressionarTecla( void )
{
ImprimirMsg( VERDADEIRO, 15, 22, "Pressione uma tecla para continuar..." );
getch();
LimparArea( 2, 11, 79, 20 );
}
int Confirma( int tam, str40 msg )
{
char resp;
gotoxy( 5, 22 );
printf( "%s", msg );
esp = toupper( getch() );
while( ( resp != 'S' ) && ( resp != 'N' ) )
{
gotoxy( 5 + tam, 22 );
printf( "%s", msg );
resp = toupper( getch() );
}
if( resp == 'S' )
return VERDADEIRO;
else
return FALSO;
}
char Maiuscula( str25 cadeia )
{
}
char *Completa( str25 cadeia, int tam )
{
int i;
for( i = ( strlen( cadeia ) + 1 ); i <= tam; i++ )
strcat( cadeia, " " );
return cadeia;
}
void NomeArquivo( str12 nomearq, str20 cabini )
{
LimparArea( 2, 5, 79, 18 );
LimparArea( 2, 21, 79, 23 );
gotoxy( 30, 4 );
printf( "%s", cabini );
gotoxy( 23, 10 );
highvideo();
printf( "Entre com o nome do arquivo < nome.ext >" );
lowvideo();
gotoxy( 35, 13 );
scanf( "%s", nomearq ); fflush (stdin);
PressionarTecla();
}
void InicializarTabAtletas( str12 nomearq, int *ultimo, tv tab )
{
FILE *arq;
char c;
int i = 0;
if ((arq = fopen( nomearq, "r" )) == NULL)
{
printf ("Erro na abertura do arquivo de entrada");
*ultimo = -1;
}
else
{
fscanf( arq, "%d", &tab.codigo );
while( tab.codigo != 0 )
{
fscanf( arq,"%c%25c%c%2c%f",&c,tab.nome,&c,tab.nacional,
&tab.pobtidos );
tab.nome[25] = '\0';
tab.nacional[2] = '\0';
i++;
fscanf( arq, "%d", &tab.codigo );
}
*ultimo = i - 1;
fclose( arq );
}
}
void GravarTabAtletas( str12 nomearq, int ultimo, tv tab )
{
FILE *arq;
int cod;
arq = fopen( nomearq, "w" );
for( cod = 0; cod <= ultimo; cod++ )
fprintf( arq, "%d%c%s%c%s%c%9.2f\n",
tab[cod].codigo, br,tab[cod].nome, br,
tab[cod].nacional, br, tab[cod].pobtidos );
fprintf( arq, "%s%c%s%c%s%c%f","0000",br,"xxxxxxxxxxxxxxxxxxxxxxxxx",
br,"xx",br,0.00 );
fclose( arq );
}
void MenuPrincipal( char * op )
{
LimparArea( 2, 5, 79, 18 );
LimparArea( 2, 22, 79, 23 );
gotoxy( 30, 4 );
printf( " MENU PRINCIPAL " );
gotoxy( 32, 8 );
highvideo();
lowvideo();
printf( " - Incluir Atleta" );
gotoxy( 32, 9 );
highvideo();
printf( "2" );
lowvideo();
printf( " - Alterar Atleta" );
gotoxy( 32, 10 );
highvideo();
printf( "3" );
lowvideo();
printf( " - Excluir Atleta" );
gotoxy( 32, 10 );
highvideo();
printf( "4" );
lowvideo();
printf( " - Consultar Atleta" );
gotoxy( 32, 12 );
highvideo();
printf( "5" );
lowvideo();
printf( " - Listar Atleta" );
gotoxy( 32, 15 );
highvideo();
printf( "9" );
lowvideo();
printf( " - Fim" );
gotoxy( 5, 17 );
ImprimirMsg( FALSO, 5, 12, "Escolha uma opcao: " );
*op = getch();
}
void ImprimirTelaAtletas( int codigo )
{
LimparArea( 2, 5, 79, 18 );
LimparArea( 2, 21, 79, 23 );
gotoxy( 24, 10 );
printf( "Codigo.........: %d", codigo );
gotoxy( 24, 12 );
printf( "Nome...........: " );
gotoxy( 24, 10 );
printf( "Nacionalidade..: " );
gotoxy( 24, 16 );
printf( "Pontos Obtidos.: " );
}
void ExibirAtletas( tm atleta)
{
gotoxy( 42, 12 );
printf( "%s", atleta.nome );
gotoxy( 42, 14 );
printf( "%s", atleta.nacional );
gotoxy( 42, 16 );
printf( "%9.2f", atleta.pobtidos );
}
int LCod( void )
{
int codigo = 0;
LimparArea( 2, 5, 79, 18 );
LimparArea( 2, 21, 79, 23 );
gotoxy( 22, 10 );
printf( "Entre com o Codigo do Atleta: " );
scanf( "%d", &codigo ); fflush (stdin);
return codigo;
}
void ObterInclusao( tm *atleta, int *ultimo )
{
atleta->codigo = *ultimo + 1;
gotoxy( 42, 12 );
gets( atleta->nome );
Completa( Maiuscula( atleta->nome ), 25 );
atleta->nome[25] = '\0';
gotoxy( 42, 12 );
printf( atleta->nome );
gotoxy( 42,14 );
gets( atleta->nacional );
Completa( Maiuscula( atleta->nacional ), 2 );
atleta->nacional[2] = '\0';
gotoxy( 42,14);
printf( atleta->nacional );
gotoxy( 42, 16 );
scanf( "%f", &atleta->pobtidos ); fflush (stdin);
gotoxy( 42, 16 );
printf( "%9.2f", atleta->pobtidos );
}
void IncluirAtletas( int * ultimo, tv tab )
{
do
{
gotoxy( 30, 9 );
printf( " I N C L U S A O " );
LimparArea( 2, 5, 79, 18 );
LimparArea( 2, 21, 79, 23 );
*ultimo= *ultimo;
ImprimirTelaAtletas( *ultimo + 1);
ObterInclusao(&tab [*ultimo], ultimo);
ExibirAtletas (tab [*ultimo] );
PressionarTecla();
}
while ( Confirma( 40, "Deseja incluir outro atleta (s/n)? " ) );
}
void ObterAlteracao( tm atleta )
{
str25 nomalt;
str2 nacalt;
str6 pobalt;
float pobalt1;
gotoxy(42,12);
gets(nomalt);
if( strlen( nomalt ) > 0 )
{
Completa( Maiuscula( nomalt ), 25 );
gotoxy( 42, 12 );
printf( "%s", nomalt );
}
gotoxy( 42, 14 );
gets(nacalt);
if( strlen( nacalt ) > 0 )
{
Completa( Maiuscula( nacalt ), 2 );
gotoxy( 42,14 );
printf( "%s", nacalt );
}
gotoxy( 42, 16 );
gets( pobalt );
if( pobalt > 0 )
pobalt1 = atof( pobalt );
gotoxy( 42, 16 );
printf( "%9.2f", pobalt1 );
if( Confirma( 40, "Dados Ok (s/n) ? " ) )
{
if( strlen( nomalt ) > 0 )
strcpy( atleta->nome, nomalt );
if( strlen( nacalt ) > 0 )
strcpy( atleta->nacional, nacalt );
if( strlen( pobalt ) > 0 )
atleta->pobtidos = pobalt1;
}
}
void AlterarAtletas( int ultimo, tv tab )
{
int codigo;
do
{
gotoxy( 30, 4 );
printf(" A L T E R A C A O ");
LimparArea( 2, 5, 79, 18 );
LimparArea( 2, 21, 79, 23 );
codigo = LCod();
if( ( codigo > 0 ) && ( (codigo-1) <= ultimo ) )
{
if( tab[ultimo].nome[1] != '*' )
{
ImprimirTelaAtletas( codigo );
ExibirAtletas( tab[codigo-1]);
ObterAlteracao( &tab[ codigo-1 ] );
}
else
{
ImprimirMsg( VERDADEIRO,5,22,"Atleta Excluido !" );
PressionarTecla();
}
}
else
{
ImprimirMsg( VERDADEIRO, 5, 20, "Atleta não existe !" );
PressionarTecla();
}
}
while ( Confirma( 40, "Deseja alterar outro atleta(s/n) ? " ) );
}
void ExcluirAtletas( int ultimo, tv tab )
{
int codigo;
do
{
gotoxy( 30, 4 );
printf(" E X C L U S A O ");
LimparArea( 2, 5, 79, 18 );
LimparArea( 2, 21, 79, 23 );
codigo = LCod();
if( ( codigo > 0 ) && ( (codigo-1) <= ultimo ) )
{
if( tab[codigo-1].nome[0] != '*' )
{
ImprimirTelaAtletas( codigo );
ExibirAtletas( tab[codigo-1] );
if( Confirma( 31, "Confirma Exclusao (s/n) ? " ) )
tab[codigo-1].nome[0] = '*';
}
else
{
ImprimirMsg( VERDADEIRO, 5, 22,
"Atleta já Excluido !" );
PressionarTecla();
}
}
else
{
ImprimirMsg( VERDADEIRO, 5, 22, "Atleta não Existe !" );
PressionarTecla();
}
}
while ( Confirma( 40, "Deseja excluir outro atleta (s/n) ? ") );
}
void ConsultarAtletas( int ultimo, tv tab )
{
int codigo;
do
{
gotoxy( 30, 4 );
printf( " C O N S U L T A " );
LimparArea( 2, 5, 79, 18 );
LimparArea( 2, 21, 79, 23 );
codigo = LCod();
if( ( codigo > 0 ) && ( (codigo-1) <= ultimo ) )
{
if( tab[ codigo-1 ].nome[ 0 ] != '*' )
{
ImprimirTelaAtletas( codigo );
ExibirAtletas( tab[ codigo-1 ] );
}
else
{
ImprimirMsg( VERDADEIRO, 5, 22, "Atleta Excluido !" );
PressionarTecla();
}
}
else
{
ImprimirMsg( VERDADEIRO, 5, 22, "Atleta não Existe !" );
PressionarTecla();
}
}
while ( Confirma(40, "Deseja consultar outro atleta (s/n) ? " ) );
}
void CompletaZeroDireita (char chave1[], char chave2[])
{
int i,j;
if (strlen(chave1)<strlen(chave2))
for (i=strlen(chave2),j=strlen(chave1); i>=0;i--, j--)
if (j>=0)
chave1=chave1[j];
else
chave1='0';
else
if (strlen(chave1)>strlen(chave2))
for (i=strlen(chave1),j=strlen(chave2); i>=0;i--, j--)
if (j>=0)
chave2=chave2[j];
else
chave2='0';
}
void OrdenarTatleta( int tipo, int ultimo, tv tatleta )
{
int m, k, n, tocou, dec, sign;
tm aux;
str25 chave1, chave2;
m = ultimo - 1;
k = m;
do
{
trocou = falso;
for( n = 0; n <= m; n++ )
{
suitch( tipo )
{
case 1:
itoa(tatleta[ n ].codigo,chave1,10);
itoa(tatleta[ n + 1 ].codigo,chave2,10);
CompletaZeroDireita (chave1, chave2)
break;
case 2:
strcpy( chave1, tatleta[ n ].nacional );
strcpy( chave2, tatleta[ n + 1 ].nacional );
break;
}
if (strcmp( chave1,chave2 ) > 0 )
{
aux = tatleta[ n ];
tatleta[ n ] = tatleta[ n + 1 ];
tatleta[ n + 1 ] = aux;
trocou = VERDADEIRO;
k = n;
}
}
m = k;
}
while( trocou );
if (tipo == 2)
{
m = ultimo - 1;
k = m;
do
{
trocou = FALSO;
for (n=0; n <= m; n++)
{
if (strcmp(tatleta[n].nacional,tatleta[n+1].nacional) == 0)
{
gcvt(tatleta[ n ].pobtidos, 9, chave1);
gcvt(tatleta[ n + 1 ].pobtidos, 9, chave2);
if (strcmp(chave1, chave2) < 0)
{
aux = tatleta[n];
tatleta[n] = tatleta[n+1];
tatleta[n+1] = aux;
trocou = VERDADEIRO;
k = n;
}
}
}
m = k;
} while ( trocou );
}
}
void ImprimirCabListagem( void )
{
highvideo();
gotoxy( 10, 6 );
printf( "CODIGO" );
gotoxy( 21, 6 );
printf( "NOME DO ATLETA");
gotoxy( 47, 8 );
printf( "PAIS");
gotoxy( 59, 6 );
printf( "PONTOS OBTIDOS" );
ImprimirLinha( '-', 8, 7, 73 );
lowvideo();
}
void ImprimirTatleta( int ultimo, tm *tatleta )
{
int i, vezes;
gotoxy( 30, 4 );
printf( " I M P R E S S A O " );
LimparArea( 2, 5, 79, 18 );
LimparArea( 2, 21, 79, 23 );
ImprimirCabListagem();
i = 0;
while( i <= ultimo )
{
LimparArea( 2, 8, 79, 18 );
vezes = 0;
while( ( i <= ultimo ) && ( vezes < 10 ) )
{
vezes++;
gotoxy( 10, 7 + vezes );
printf( "%4d%s%s%s%s%s%9.2f", tatleta[ i ].codigo,
" ", tatleta[ i ].nome, " ",
tatleta.nacional, " ",
tatleta[ i ].pobtidos );
i++;
}
PressionarTecla();
}
}
void ListarAtletas( int ultimo, tv tatleta )
{
OrdenarTatleta (2, ultimo, tatleta);
ImprimirTatleta(ultimo, tatleta);
OrdenarTatleta (1, ultimo, tatleta);
}
/* ************************************************************
** Funções destinadas a interface gráfica utilizadas (telas) **
** ************************************************************/
/*
** Funcão ImprimirData
** Imprimi a Data corrente do sistema
*/
void ImprimirData( int x, int y )
{
struct date data_sistema;
char *mes[] = { "Jan", "Fev", "Mar", "Abr", "Mai", "Jun",
"Jul", "Ago", "Set", "Out", "Nov", "Dez" };
getdate( &data_sistema );
gotoxy( x, y );
cprintf( "%d %s %d", data_sistema.da_day, mes[data_sistema.da_mon - 1 ],
data_sistema.da_year );
}
/*
** Função ImprimirLinha
** Preenche uma linha com uma sequencia de caracteres
*/
void ImprimirLinha( char ch, int x, int y, int n )
{
int i;
for( i = x; i <= n; i++ )
{
gotoxy( i, y );
cprintf( "%c", char );
}
}
/*
** Função ImprimirBorda
** Imprimi uma Borda na tela
*/
void ImprimirBorda( int x, int y, int z, int w )
{
int i;
gotoxy( x, y );
cprintf( "%c", 201 );
gotoxy( x, w );
cprintf( "%c", 200 );
gotoxy( z, y );
cprintf( "%c", 187 );
gotoxy( z, w );
cprintf( "%c", 188 );
for( i = ( x + 1 ); i <= ( z - 1 ); i++ )
{
gotoxy( i, y );
cprintf( "%c", 205 );
gotoxy( i, w );
cprintf( "%c", 205 );
}
for( i = ( y + 1 ); i <= ( w - 1 ); i++ )
{
gotoxy( x, i );
cprintf( "%c", 186 );
gotoxy( z, i );
cprintf( "%c", 186 );
}
}
/*
** Função LimparArea
** Limpa a Area corrente
*/
void LimparArea( int x, int y, int z, int w )
{
int i, j;
for( i = y; i <= w; i++ )
{
gotoxy( x, i );
for( j = x; j <= z; j++ )
cprintf( "%c", 32 );
}
}
/*
** Função DefinirCores
** Função que defini as cores do sistema
*/
void DefinirCores( void )
{
int corchar, corfun, i;
char c;
textbackground( WHITE );
clrscr();
textcolor( LIGHTBLUE );
ImprimirBorda( 1, 1, 80, 24 );
textcolor( RED );
gotoxy( 10, 3 );
cprintf( "ESCOLHA DE CORES PARA O PROGRAMA " );
textcolor( LIGHTBLUE );
gotoxy( 53, 4 );
cprintf( "FUNDO" );
ImprimirBorda( 50, 5, 60, 14 );
for( i = 0; i <= 7; i++ )
{
textbackground( i );
gotoxy( 51, 6 + i );
cprintf( " " );
textbackground( WHITE );
cprintf( "%3d", i );
}
gotoxy( 64, 4 );
cprintf( "CARACTER" );
ImprimirBorda( 63, 5, 73, 22 );
for( i = 0; i <= 15; i++ )
{
textcolor( i );
gotoxy( 64, 6 + i );
cprintf( "%c%c%c%c%c", 219, 219, 219, 219, 219 );
textcolor( LIGHTBLUE );
cprintf( "%3d", i );
}
gotoxy( 11, 7 );
cprintf( "Quer alterar as cores (s/n)?" );
c = toupper( getch() );
while( ( c != 'S' ) && ( c != 'N' ) )
{
gotoxy( 41, 7 );
cprintf( "%c", 7 );
c = toupper( getch() );
}
if( c = 'S' )
{
gotoxy( 17, 12 );
cprintf( "FUNDO : " );
cscanf( "%d", &corfun );
gotoxy( 17, 15 );
cprintf( "CARACTER: " );
cscanf( "%d", &corchar );
textbackground( corfun );
textcolor( corchar );
while (getch()!=13);
}
}
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.