Ir para conteúdo
Fórum Script Brasil

Wicker Man

Membros
  • Total de itens

    268
  • Registro em

  • Última visita

Sobre Wicker Man

  • Data de Nascimento 26/08/1987

Contatos

  • MSN
    diego.stefano@hotmail.com
  • ICQ
    237549002

Perfil

  • Gender
    Male
  • Location
    Salvador

Wicker Man's Achievements

0

Reputação

  1. Wicker Man

    Código Mostrando Erro

    Opa! Cara, comentei os erros em seu código no bloco abaixo: #include <stdio.h> #include <stdlib.h> // você deve abrir um bloco com "{" e no final da função fechar "}" se // estiver definindo a função void troco( int *mvintecinco, int moedas25, int *mdez, int moedas10, int *mcinco, int moedas5, int *mum, int moedas1, int valor ); mvintecinco = &moedas25; mdez = &moedas10; mcinco = &moedas5; mum = &moedas1; *moedas25 = valor / 25; // "moedas25" não é ponteiro valor = valor % 25 // sem ";" *moedas10=valor / 10; // "moedas10" não é ponteiro valor = valor % 10 // sem ";" *moedas5 = valor / 5; // "moedas5" não é ponteiro valor = valor % 5 // sem ";" *moedas1 = valor / 1; // "moedas1" não é ponteiro valor = valor % 1; printf( "\tQuant. de moedas de 25 e' %d\n", *mvintecinco ); printf( "\tQuant. de moedas de 10 e' %d\n", *mdez ); printf( "\tQuant. de moedas de 5 e' %d\n", *mcinco ); printf( "\tQuant. de moedas de 1 e' %d\n", *mum ); main() { int valor; printf( "\t************************************************\n" ); printf( "\t************************************************\n" ); printf( "\t*************** Digite o valor *****************\n" ); printf( "\t************************************************\n" ); printf( "\t************************************************\n" ); scanf( "%d", &valor ); troco( valor ); // "troc" possui 9 argumentos system( "pause" ); } Esse erro que você mostra não é o único. Como você não definiu o bloco do escopo da função, as variáveis que você declara como argumentos dela não estão definidas no escopo global, que é o escopo em que elas acabam caindo. Você não precisa usar todas essas manipulações de ponteiros; o código pode ser mais "direto". Veja: #include <stdio.h> #include <stdlib.h> void troco( int valor ) { int moedas25, moedas10, moedas5, moedas1; moedas25 = valor / 25; valor = valor % 25; moedas10 = valor / 10; valor = valor % 10; moedas5 = valor / 5; valor = valor % 5; moedas1 = valor / 1; valor = valor % 1; printf( "\tQuant. de moedas de 25 e' %d\n", moedas25 ); printf( "\tQuant. de moedas de 10 e' %d\n", moedas10 ); printf( "\tQuant. de moedas de 5 e' %d\n", moedas5 ); printf( "\tQuant. de moedas de 1 e' %d\n", moedas1 ); } main() { int valor; printf( "\t************************************************\n" ); printf( "\t************************************************\n" ); printf( "\t*************** Digite o valor *****************\n" ); printf( "\t************************************************\n" ); printf( "\t************************************************\n" ); scanf( "%d", &valor ); troco( valor ); system( "pause" ); } Dê uma lida nesse tutorial: http://www.mtm.ufsc.br/~azeredo/cursoC/aulas-main.html. Boa sorte!
  2. Wicker Man

    Joguinho Simples Em C

    Opa! Cara, dois sites podem te ajudar: -> UNIDEV; -> GameDev. Boa sorte!
  3. Opa! Cara, com essa atribuição você está determinando que c1, final e nome são todos o mesmo vetor, pois estão apontando para a mesma posição de memória. Sendo mais claro, se você faz um ponteiro apontar para a primeira posição de memória de um vetor, aquele ponteiro "também será" aquele vetor. Não sei se isso esclarece a sua dúvida. Se não o fizer, poste-a novamente, explicando melhor. Boa sorte!
  4. Opa! Nesse caso as coisas ficam muito complicadas, porque é até possível implementar uma função que trate do caso do mouse passar sobre um elemento gráfico na tela, mas usando BGI o único modo que vejo de isso ser implementado é testando se as coordenadas do ponteiro do mouse "invadem" certa região da tela correspondente a um botão, digamos. Mas para isso ser feito seria necessário que esse teste ficasse rodando permanentemente, em paralelo à execução da linha de execução principal do programa. Mas como o compilador Turbo C++ não pode criar de linhas de execução que rodem concorrentemente dentro do programa (multithreading), então este método não é viável. Isso já não ocorre com eventos como um clique, onde você tem uma posição definida com a qual você pode trabalhar. A menos que seja estritamente necessário para você continuar usando a biblioteca BGI para criar interfaces gráficas, eu recomendo que você passe a estudar algo com Win32 (tutorial), ou a IDE Borland C++ Builder (links) (esta última, aliás, torna bem simples o desenvolvimento de aplicações relativamente complexas), por serem mais robustas e, além disso, elas fornecem recursos para desenvolvimento não só de interfaces gráficas, mas também para manipulação de vários outros recursos do sistema. Mas, se tiver mesmo que continuar com a BGI, aqui vão dois links que achei instrutivos: -> http://electrosofts.com/cgraphics/index.html -> http://electrosofts.com/cgraphics/mouse.html Boa sorte!
  5. Wicker Man

    Duvida Em Buidel

    Opa! Você poderia tentar o seguinte: declarar dois objetos do tipo AnsiString e atribuir os valores das suas variáveis que resultaram da consulta a esses objetos. Assim: ... AnsiString T_str, V_str; T_str = Query1->fields->FieldByName( T )->value; V_str = Query1->fields->FieldByName( V )->value; ... Depois você usa o método c_str para retornar a string no estilo C (array de caracteres com terminador nulo): ... fprintf( fp, "%s;%s", T_str.c_str(), V_str.c_str() ); ... Boa sorte!
  6. Opa! A biblioteca dirent.h fornece recursos para manipulação de diretórios. Nela você tem a função opendir, que abre um diretório cujo caminho deve ser especificado em seu único argumento. Depois de ter o diretório aberto, você pode usar a função readdir, que tem como único argumento o ponteiro para uma estrutura DIR retornado por opendir, para percorrer o conteúdo do diretório. Esta última função retorna um ponteiro para uma estrutura do tipo struct dirent, a qual possui um membro string chamado d_name, que armazena os nomes de arquivos e diretórios dentro do seu diretório. Você deve realizar várias chamadas à função readdir para obter o conteúdo do seu diretório. Por exemplo, se você tiver três arquivos no seu diretório, fará três chamadas a readdir, em cada uma delas o membro d_name da estrutura retornada terá o nome de cada arquivo presente no seu diretório. E quando o final do diretório é alcançado, readdir retorna NULL (você pode rewinddir para "voltar" ao início do diretório e poder usar readdir novamente; o único argumento de rewinddir é o ponteiro para DIR retornado por opendir). Finalmente, closedir recebe como único parâmetro a nossa estrutura DIR e fecha o diretório. Veja o exemplo: #include <stdio.h> #include <stdlib.h> #include <dirent.h> int main() { DIR *dp; struct dirent *d; dp = opendir( "C:\\Docume~1\\Diego\\Desktop" ); while ( ( d = readdir( dp ) ) != NULL ) printf( "%s\n", d->d_name ); closedir( dp ); system( "pause" ); return 0; } Agora, uma vez que você tem o nome dos arquivos no diretório, você pode filtrar a exibição (utilizando manipulação de strings) mostrando apenas arquivos com a extensão desejada. Ou pode dar uma busca mais profunda sobre essa biblioteca e ver se já existe algo mais eficiente. Boa sorte!
  7. Opa! As APIs gráficas já implementam esse tipo de tratamento. Com qual API você está trabalhando? Boa sorte!
  8. Wicker Man

    Ponteiro Para Matriz

    Opa! Ok, entendi a sua dúvida agora. Para passar um array n-dimensional (com n inteiro maior que ou igual a 2) para uma função, você deve fornecer também os últimos n - 1 índices do array (o primeiro pode ser passado também, mas não é obrigatório). O seu código deveria ficar assim: ... #define coluna 3 void imprimeMatriz( int matriz[][ coluna ], int linha ) { int count1, count2; for ( count1 = 0; count1 < coluna; count1++) { for ( count2 = 0; count2 < linha; count2++ ) { printf( "%d ", matriz[ count2 ][ count1 ] ); } printf( "\n" ); } } ... Mas se você deseja passar um ponteiro para uma matriz junto com suas dimensões (número de colunas e número de linhas), a sua matriz deve ser criada alocando memória dinamicamente. Para isso, pode-se usar a função malloc para alocar memória e free para liberar o espaço alocado. Veja este link sobre alocação dinâmica de arrays multidimensionais. Boa sorte!
  9. Wicker Man

    Guardar A Base De Dados

    Opa! Veja esses tópicos: -> http://scriptbrasil.com.br/forum/index.php?showtopic=108990 -> http://scriptbrasil.com.br/forum/index.php?showtopic=108781 Boa sorte!
  10. Wicker Man

    Compilador C++

    Opa! Que compilador você baixou? Que problema está ocorrendo? Boa sorte!
  11. Opa! Cara, dá uma olhada nesse tópico: http://scriptbrasil.com.br/forum/index.php?showtopic=108990. Dê também uma pesquisada em arquivos de acesso aleatório. Com eles você pode guardar dados contidos em uma estutura num arquivo (com fwrite) de modo que, com o auxílio das funções fseek e fread, você pode acessar uma estrutura específica dentre as armazenadas no arquivo. Veja o exemplo: #include <stdio.h> #include <stdlib.h> #include <conio.h> struct pessoa { char nome[ 30 ]; int idade; }; int main(int argc, char *argv[]) { FILE *_file; int i = 0, n; struct pessoa p; if ( ( _file = fopen( "arq.txt", "w+" ) ) == NULL ) { return 0; } while ( i < 5 ) { scanf( "%s", p.nome ); scanf( "%d", &p.idade ); fwrite( &p, sizeof( p ), 1, _file ); i++; } printf( "\n\n----------------\n\n" ); printf( "Digite a ordem do elemento que quer acessar: " ); scanf( "%d", &n ); fseek( _file, ( n - 1 ) * sizeof( struct pessoa ), SEEK_SET ); fread( &p, sizeof( struct pessoa ), 1, _file ); printf( "Nome: %s;\nIdade: %d.\n\n", p.nome, p.idade ); system("PAUSE"); return 0; } A função fseek somente localiza a posição do registro a ser lido. A leitura é feita com a função fread. O primeiro argumento da função fseek é o ponteiro para a estrutura FILE, o segundo é o número de bytes que se deve percorrer, a partir de uma posição inicial indicada no terceiro argumento, para se chegar à posição do registro desejado no arquivo. A constante SEEK_SET indica que a supramencionada posição inicial deve ser o início do arquivo. SEEK_CUR e SEEK_END são outros valores possíveis, correspondendo às posições atual e final, respectivamente. Boa sorte!
  12. Opa! Você deve usar as funções fread e fwrite para ler e escrever, respectivamente, estruturas em arquivos. Como exemplo, assuma que você possui a seguinte estrutura: ... struct pessoa { char nome[ 30 ]; int idade; }; ... Depois instanciar o objeto FILE tal como você o fez, você deve fazer o seguinte para gravar dados da estrutura no arquivo: ... struct pessoa p; int i = 0; while ( i < 3 ) { scanf( "%s", p.nome ); scanf( "%d", &p.idade ); fwrite( &p, sizeof( p ), 1, fp ); i++; } ... O primeiro argumento de fwrite é um ponteiro para o objeto da estrutura que contém os dados a serem armazenados, o segundo é o tamanho da estrutura em bytes, o terceiro é o número de elementos a serem inseridos e o último é o ponteiro para o arquivo (isto é, para o seu objeto da estrutura FILE). A função fread é usada de maneira similar: ... struct pessoa p; int i = 0; while ( i < 3 ) { fread( &p, sizeof( struct pessoa ), 1, fp ); printf( "Nome: %s;\nIdade: %d.\n\n", p.nome, p.idade ); i++; } ... Para entender mais sobre o uso desta função e outras de manipulação de arquivos de acesso aleatório, dê uma procurada no Google por exemplo, e dê uma olhada neste link. Boa sorte!
  13. Wicker Man

    Ponteiro Para Matriz

    Opa! Tem como especificar mais a sua dúvida, jovem? Por agora, posso te passar o seguinte: http://informatica.hsw.uol.com.br/programacao-em-c34.htm. Boa sorte!
  14. Opa! Para enviar e receber sinais pela porta paralela, eu uso e recomendo a DLL "inpout32.dll". Este link mostra como usá-la. Dê uma fuçada nesse site, pois há muito material que lhe pode ser útil. Qualquer dúvida, poste. Boa sorte!
  15. Wicker Man

    String

    Opa! Use a função strcpy da biblioteca string.h. Para entender como essa função funciona, veja a seguinte página: http://www.cplusplus.com/reference/clibrar...ing/strcpy.html. Boa sorte!
×
×
  • Criar Novo...