Ir para conteúdo
Fórum Script Brasil

== Douplus ==

Membros
  • Total de itens

    203
  • Registro em

  • Última visita

Tudo que == Douplus == postou

  1. == Douplus ==

    Arquivo .o

    Funcionou, muito obrigado.
  2. == Douplus ==

    Arquivo .o

    No meu caso, os métodos da classe estão implementados, você sabe como posso gerar o arquivo .o ?
  3. == Douplus ==

    Arquivo .o

    Eu tenho um arquivo de cabeçalho com a definição de uma classe. Eu gostaria de saber se é possível e como gerar um arquivo .o apartir do arquivo de cabeçalho. Obrigado.
  4. Do mesmo jeito que você não pode usar uma variável antes de declará-la, ex.: /*Programa com erro: tentar usar uma variável antes de declará-la.*/ #include <stdio.h> int main(void) { for (i = 0; i < 8; i++) printf("%d", i); printf("\n"); int i; } Assim que funciona as funções, se chamá-las antes de declará-las ocorrerá um erro. Então você tem duas opções: Ou você define as funções antes de main() ou qualquer outra função que a chame. Ex.: #include <stdio.h> int soma(int v1, int v2) { return v1 + v2; } int main(void) { printf("A soma de 2 + 3 e igual a: %d", soma(2,3)); return 0; } Ou você usa protótipos de função, isto é, declarar uma função e antes de defini-la. Ex.: #include <stdio.h> /* PROTÓTIPO */ int soma(int, int); int main(void) { printf("A soma de 2 + 3 e igual a: %d", soma(2,3)); return 0; } int soma(int v1, int v2) { return v1 + v2; }
  5. Dei uma arrumada no código, agora funciona: /*Arquivo de cabeçalho*/ #include <stdio.h> /*Protótipos de funções*/ int ad(int,int); int sub(int,int); int mlt(int,int); int div(int,int); void main() { int op, pum, pdois, res; printf("Temos 5 operacoes. Digite \n 1)+ \n 2)-\n 3)* \n 4)/ \n"); printf("Escolha a opcao: "); scanf("%d",&op); if (op==1){ printf("Passe o primeiro numero: "); scanf("%d",&pum); printf("Agora o segundo: "); scanf("%d",&pdois); res=ad(pum,pdois); } else if (op==2){ printf("Passe o primeiro numero: "); scanf("%d",&pum); printf("Agora o segundo: "); scanf("%d",&pdois); res=sub(pum,pdois); } else if (op==3){ printf("Passe o primeiro numero: "); scanf("%d",&pum); printf("Agora o segundo: "); scanf("%d",&pdois); res=mlt(pum,pdois); } else if (op==4){ printf("Passe o primeiro numero: "); scanf("%d",&pum); printf("Agora o segundo: "); scanf("%d",&pdois); res=div(pum,pdois); } printf("%d",res); } int ad(int x, int y) { int z; z=x+y; return z; } int sub(int x, int y) { int z; z=x-y; return z; } int mlt(int x, int y) { int z; z=x*y; return z; } int div(int x, int y) { int z; z=x/y; return z; } Os erros foram os segintes: - Não foi incluido o arquivo de cabeçalho stdio.h , para usar printf() e scanf(); - Você não usou protótipos de funçao, no seu programa você definiu as funções depois de main, então você precisa de protótipos; - Nas funções scanf(), deve existir uma tag indicando o tipo de valor que você quer armazenar em uma variável, e & antes de uma variável. Ex: scanf("%d", &variavel")
  6. É só incluir (#include) o clientes.c e/ou cadastro.c em comercio.c . Exemplo: Untitled2.c #include <stdio.h> void imprimir(void) { printf("Imprimindo...\n"); } Untitled1.c #include "Untitled2.c" int main(void) { imprimir(); getchar(); return 0; }
  7. == Douplus ==

    Existe Isso?

    Não sei se ajuda, mas existe uma macro que informa a linha do código(C++) que o programa está executando: __LINE__
  8. == Douplus ==

    Perfumaria

    Sim. Mas mesmo que você não inicialize, o computador já possui valores armazenados no endereço de memória reservado para a matriz. Faça o seguinte: int matriz[m][n]; Tendo em mente que m e n já tenham sido declaradas. Eu não conheço... Porque o sinal de comparação é ==, e na 17ª linha está =. Simplesmente mude o = para ==
  9. == Douplus ==

    Raiz Quadrada Em C

    Elaborei uma função, veja: long double square(long double num) { long double result; for (result = 0; 1 == 1; result = result + 1) { if (result * result == num) return result; else if (result * result > num) { result = result - 1; break; } else if (result * result < num) continue; } while (result * result < num) { //cout<<result<<"\n"; result = result + 0.000001; } return result; } A função ve qual número inteiro se aproxima mais do numero pedido, depois se ainda o número conseguido veses ele próprio ainda não é igual ao número introduzido, ele vai adicionando 0.000001 ao número até encontrar o resultado mais próximo (não exato).
  10. == Douplus ==

    Ajuda!

    Olá, Bom, não é nada muito grave, na verdade são erros comuns de programação (eu acho), você só esqueceu alguns ponto-e-vírgula( ; ) e esqueceu de fechar um bloco. Eu dei uma arrumada, compilei no meu Dev-C++ e funcionou. Veja: /* 115829,96,2004/06/23 19:31:29,1354 */ #include <stdio.h> int main (void) { char c; double v1 , v2; double a; char linha[121]; FILE* ent=fopen("entrada.txt", "wt"); FILE* sai=fopen("saida.txt", "wt"); if ((ent==NULL) || (sai==NULL)) { printf("problemas com os arquivos\n"); return 0; } while (fgets(linha,121,ent)) { int n = sscanf(linha," %c %lf %lf ",&c,&v1,&v2); if (n>0) { switch(c){ case '#': continue; break; case 'T': if (n!=3){ printf("ERRO\n"); } else{ a=(v1*v2)/2; printf("%f\n", a); fprintf(sai,"%c %lf",c,a); } break; case 'R': if (n!=3){ printf("ERRO\n"); } else { a=(v1*v2); printf("%lf\n", a); fprintf(sai,"%c %lf",c,a); } break; case 'C': if (n!=2){ printf("ERRO\n"); } else { a=3.14*(v1*v1); printf("%lf\n", a); fprintf(sai,"%c %lf",c,a); } break; default: printf("ERRO\n"); break; } fclose(ent); fclose(sai); return 0; } } }
  11. == Douplus ==

    C/c++

    Se não me engano, C é um subconjunto de C++, a diferença é que C++ possibilita uma programação orientada a objetos e C não. Isto é, em C++ você pode declarar classes que representam objetos da vida real. Exemplo: classe Data: variável Dia, variavel Mes, variavel Ano. Se voce for criar um objeto da classe Data, ele poderá acessar as variáveis Dia, Mes e Ano e modifica-las.
  12. Oi, Tem alguns tutoriais de C/C++ em http://www.linhadecodigo.com.br/lista_tutoriais.asp?sub=17 . Se tiver enteressado em funções, de uma olhada em http://scriptbrasil.com.br/forum/index.php?showtopic=21550 .
  13. == Douplus ==

    Debugger

    Agradeço, mas não sei usa-lo, poderia por favor me recomendar um tutorial de como usa-lo? Obrigado.
  14. == Douplus ==

    Debugger

    Oi, Por favor, alguém poderia me recomendar um depurador (debugger) de preferência com um link pro download? Obrigado.
  15. == Douplus ==

    Problema No Código

    Oi, Fiz um teste e conclui que o problema deve estar no uso da função strcmp. Neste teste criei uma função, mesmo porque não sei usar a srtcmp direito, veja: #include <stdio.h> #include <string.h> #include <stdlib.h> /* NOVA FUNÇÃO */ bool comparar(char str1[], char str2[]) /* Recebe 2 strings como argumentos; */ { bool status = 1; /* Cria uma variável do tipo bool (0 e 1) com o valor 1; */ for (int i = 0; str1[i] != '\0'; i++) /* Estrutura de repetição for; */ if (str1[i] != str2[i]) /* Se elemento atual de str1 == elemneto atual de str2; */ status = 0; /* status = 0.*/ return status; /* Retorna o valor de status */ } /* FIM DA NOVA FUNÇÃO */ int logar(char login[], char senha[]) { if((comparar(login, "igor")) == 1 && (comparar(senha, "senha")) == 1) { printf("logado\n"); } else { printf("login ou senha incorreto\n"); } } int main(void) { char login[12]; char senha[12]; system("clear"); printf("+-------------------------------------------+\n"); printf(" programa p/ logar-se \n"); printf("+-------------------------------------------+\n\n"); printf("login: "); gets(login); printf("senha: "); gets(senha); logar(login,senha); } Veja a função comparar, ela começa com a inicialização da variável status do tio bool, que só pode armazenar 0 ou (falso ou verdadeiro): bool status = 1; /* Cria uma variável do tipo bool (0 e 1) com o valor 1; */ Dopois é criada uma estrutura de repetição for que compara elemento por elemanto do array até o caractere nulo necessário no final de toda string, e se for diferente status = 0 (false). Veja: for (int i = 0; str1[i] != '\0'; i++) /* Estrutura de repetição for; */ if (str1[i] != str2[i]) /* Se elemento atual de str1 == elemneto atual de str2; */ status = 0; /* status = 0.*/ Agora a função que desenvolvi chega ao fim retornando o valor de status. return status; /* Retorna o valor de status */ } A função logar só verifica se as duas comparações retornaram 1 (true). Se isso for verdadeiro mostra a mensagem "logado" e termina a linha, senão mostra "login ou senha incorreto" na tela e acaba a linha.
  16. == Douplus ==

    Ajudem-me

    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...
  17. == Douplus ==

    Data

    Qual arquivo de cabeçalho tem que incluir para executar esta função?
  18. == Douplus ==

    Data

    Tem uma macro que é: __DATE__ , ela te da a data no formato: mes dia ano. Ex.: "May 25 2004"
  19. Também achei isto aqui: http://www.cppreference.com/index.html
  20. == Douplus ==

    Dlls,

    Oi, Gostaria de um material que ensine como trabalhar(criar, usar) com DLLs em C++, alguém poderia me indicar? Obrigado
  21. Oi, já tive que enfrentar este problema, a solução que encontrei para este foi uma função que retorna o valor do carectere acentuado desejado. Veja: /*VALORES ANTES DE SEREM CORRIGIDOS*/ #define AMAE -63 #define EMAE -55 #define IMAE -51 #define OMAE -45 #define UMAE -38 #define AAE -31 #define EAE -23 #define IAE -19 #define OAE -13 #define UAE -6 #define CMCE -57 #define CCE -25 #define AMTE -61 #define OMTE -43 #define NMTE -47 #define ATE -29 #define OTE -11 #define NTE -15 /*VALORES CORRETOS*/ //Á = -75 char ama = -75; //É = -112 char ema = -112; //Í = -42 char ima = -42; //Ó = -32 char oma = -32; //Ú = -23 char uma = -23; //á = -96 char aa = -96; //é = -126 char ea = -126; //í = -95 char ia = -95; //ó = -94 char oa = -94; //ú = -75 char ua = -93; //Ç = -128 char ccm = -128; //ç = -121 char cc = -121; //Ã = -57 char amt = -57; //Õ = -27 char omt = -27; //não = -91 char nmt = -91; //ã = -58 char at = -58; //õ = -28 char ot = -28; //não = -92 char nt = -92; /*FUNÇÃO QUE RETORNA CARACTERES ACENTUADOS*/ char retlet(int lete) { char letc; switch (lete) { case AMAE: letc = ama; break; case EMAE: letc = ema; break; case IMAE: letc = ima; break; case OMAE: letc = oma; break; case UMAE: letc = uma; break; case AAE: letc = aa; break; case EAE: letc = ea; break; case IAE: letc = ia; break; case OAE: letc = oa; break; case UAE: letc = ua; break; case CMCE: letc = ccm; break; case CCE: letc = cc; break; case AMTE: letc = amt; break; case OMTE: letc = omt; break; case NMTE: letc = nmt; break; case ATE: letc = at; break; case OTE: letc = ot; break; case NTE: letc = nt; break; } return letc; } /*FUNÇÃO QUE CRIEI PARA TESTAR SE ESTAVA FUNCIONANDO CORRETAMENTE*/ void prateste(void) { char carag[10] = {'Á', 'É', 'Í', 'Ó', 'Ú', 'á', 'é', 'í', 'ó', 'ú'}; char carc[2] = {'Ç', 'ç'}; char cart[6] = {'Ã', 'Õ', 'não', 'ã', 'õ', 'não'}; cout<<"\n\nCARACTERES COM ACENTO AG"<<retlet('Ú')<<"DO: \n"<<endl; for (int i = 0; i < 10; i++) cout<<retlet(carag[i])<<endl; cout<<"\n\nCARACTERES COM CEDILHA: \n"<<endl; for (int i = 0; i < 2; i++) cout<<retlet(carc[i])<<endl; cout<<"\n\nCARACTERES COM TIL: \n"<<endl; for (int i = 0; i < 6; i++) cout<<retlet(cart[i])<<endl; cin.get(); } É só usar a função retlet para mostrar um caractere acentuado na tela, ex.: cout<<retlet('á')<<endl;
  22. == Douplus ==

    Comparação

    //Bom, eu criei um programa para tentar explicar... #include <iostream> #include <cstdlib> using namespace std; void organizar(int *, const int); // Protótipo de função. int main() // Função principal. { int qnt = 0; /* Espaco de memoria reservado para armazenar a quantidade de números. */ cout<<"Digite a quantidade de numeros que deseja: "; cin>>qnt; // Armazena a quantidade de números em qnt. cout<<"\n"<<endl; int nums[qnt]; // Inicializa uma array com a quantidade de números desejada. /* PEGA OS NUMEROS. */ for (int i = 0; i < qnt; i++) { cout<<"Digite um dos numeros :"; cin>>nums[i]; } cout<<"\n\n Números em ordem crescente :"<<endl; organizar(nums, qnt); // Chama a função de organizar. /* MOSTRA O ARRAY. */ for (int i = 0; i < qnt; i++) cout<<" "<<nums[i]; /* TERMINA O PROGRAMA. */ cout<<"\n"<<endl; system("PAUSE"); return 0; } // FUNCAO ORGANIZAR. void organizar(int *array, const int tam) //Chamada por referência. { long int aux = 0; // Variável para ajudar na organização. /* O R G A N I Z A O A R R A Y. */ for (int pass = 0; pass < (tam - 1); pass++) for (int i = 0; i < (tam - 1); i++) { if (array[i] > (array[i + 1])) { // Se o número for maior que o seguinte... aux = array[i]; // aux = número... array[i] = (array[i + 1]); // Posição do número = numero seguinte... (array[i + 1]) = aux; // Posição do número seguinte = aux. } } } /* FIM DO CODIGO */ Agora tentarei explicar melhor o programa... Ele começa com uma variável: int qnt = 0; /* Espaco de memoria reservado para armazenar a quantidade de números. */ que serve para posteriormente armazenar a quantidade de números desejada. Depois o programa pede ao usuário para que introduza a quantidade de números e armazena na variável inteira: qnt. O programa agora inicia um array com a quantidade de números introduzida: int nums[qnt]; // Inicializa uma array com a quantidade de números desejada. Com um laço de repetição, o programa vai armazenando os numeros para organizar, um por um: int nums[qnt]; // Inicializa uma array com a quantidade de números desejada. /* PEGA OS NUMEROS. */ for (int i = 0; i < qnt; i++) { cout<<"Digite um dos numeros :"; cin>>nums[i]; } Em seguida é chamada a função "organizar(int *, const int)": cout<<"\n\n Números em ordem crescente :"<<endl; organizar(nums, qnt); // Chama a função de organizar. que organiza o array da seguinte forma: // FUNCAO ORGANIZAR. void organizar(int *array, const int tam) //Chamada por referência. { long int aux = 0; // Variável para ajudar na organização. /* O R G A N I Z A O A R R A Y. */ for (int pass = 0; pass < (tam - 1); pass++) for (int i = 0; i < (tam - 1); i++) { if (array[i] > (array[i + 1])) { // Se o número for maior que o seguinte... aux = array[i]; // aux = número... array[i] = (array[i + 1]); // Posição do número = numero seguinte... (array[i + 1]) = aux; // Posição do número seguinte = aux. } } } Por ser uma chamada de função por referência, ao modificarmos "array[]", automáicamente modificamos "nums[]". Agora, com dois laços de repetição, o programa vai verificando se na posição atual de "array" (nums) tiver um número maior do que o número na posição seguinte: a váriável aux = "posição atual" "posição atual" = "posição seguinte" "posição seguinte" = aux Na função "main()", já é hora de mostrar o array em ordem crescente: /* MOSTRA O ARRAY. */ for (int i = 0; i < qnt; i++) cout<<" "<<nums[i]; Agora são mostrados todos os números de "nums[]", o elemento do array que será mostrado está indicado por "i", que vai sendo incrementado cada vez que as instruções forem repetidas. O programa termina com: /* TERMINA O PROGRAMA. */ cout<<"\n"<<endl; system("PAUSE"); return 0; } "cout<<"\n"<<endl;" posiciona o cursor duas linhas para baixo; "system("PAUSE");" para o programa até o usuário pressionar qualquer tecla (com algumas exeções), isto serve para a pessoa conseguir ler o que apareceu em sua tela; "return 0;" retorna o valor '0'; "}" termina "main()". Por favor me corrijam se fiz ou escrevi alguma besteira.
  23. == Douplus ==

    Função...

    Oi, Por favor, gostaria de saber para que serve a função cin.putback© . Obrigado.
  24. Dê uma olhada em: http://www.cplusplus.com/ref/
  25. Eu também gostaria de ajudar, posso participar?
×
×
  • Criar Novo...