Ir para conteúdo
Fórum Script Brasil
  • 0

Ajudem-me


Guest - Mutant -

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

  • 0
Guest eu sei veio !!!
Desculpa q te diga mas o erro é obvio. laugh.gif

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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0
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. laugh.gif

Fico burro com isto lol

é bem. De certeza q ajusdas-te wink.gif

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...