Ir para conteúdo
Fórum Script Brasil

Ruyfreis

Membros
  • Total de itens

    108
  • Registro em

  • Última visita

Tudo que Ruyfreis postou

  1. Ruyfreis

    problema com getchar();

    é... Só gostaria de entender quando uma pessoa deixa de ser aluno para virar professor, pois todo professor por melhor se seja sempre também será aluno. E não acredito que deva ser criticado tão rudemente por algum suposto erro. Acredito que todos tem seus fatos para acreditar qual método funciona.. só que scanf("%c%*c", &cont); não funciona quando aprender um metodo que funcione e não seja fflush(), melhor! Por enquanto (e já faz um bom tempo) o utilizo e nunca fugiu do meu esperado, nenhum resultado além do meu desejo. De qualquer forma obrigado pelo esclarecimento a respeito do fflush() até então nunca havia escutado criticas a respeito dela.
  2. Ruyfreis

    problema com getchar();

    Bom se existem pessoas que não tem paciencia de explicar no forum... eu tenho Então Pigmeo, devido a um erro na funcao getchar(), scanf(), gets(), muitas vezes ela capitura o "enter" que você pressiona quando termina de digitar um dado no prompt.... e isto torna necessário a utilizacao da funcao fflush() que nada mais é, que uma funcao que limpa o buffer de um arquivo... e no caso o "arquivo"que queremos limpar o buffer é o stdin que nada mais é o que o metodo de entrada do teclado. portanto fflush(stdin) no caso se voce utilizar o linux a mesma não funciona... então voce precisa utilizar o __fpurge(stdin)...(isto mesmo com dois underlines antes do nome da fucao) PS: por experiencia propria scanf("%c%*c", &cont); //note a mudança aqui!!!!!!!!!!!!!!!!!!!!!!!!!!!!! não funciona em todos os casos, principalmente para quem utiliza LINUX Abraco Uma boa alternativa é utilizar o cin do c++ que não possui estes bugs
  3. Ruyfreis

    Primeiro programa...

    Cara vou lhe dar uma dica, acho que deve ter sido uma das primeiras que recebi na vida... NUNCA utilize "goto"... pra te falar a verdade ESQUECA que ele existe... voce não tem idéia da bagunca que seu codigo pode virar com esta função... Esta funcao foi inserida na linguagem devido a linguagens anteriores que não existia ainda comandos como de desvio condicional (IF) e loop's(WHILE, FOR, DO.. WHILE)...então não o colocar complicaria a cabeca de quem ainda não conhecia programacao estruturada aahaha.. descupa o drama, mas já o fizeram comigo e me senti na responsabilidade de o fazer.. hehehe.. Abraco
  4. Ruyfreis

    Duvida Simples em C++

    Olha... eu não utilizo o Visual Studio C++, consequentemente eu não utilizo o compilador da microsoft(acho que é o dev c++, não tenho certeza) eu uso o gcc... nunca ocorreu este erro no debuguer dele não.. mas como ocorre no final da execucao acredito que não tenha nenhum problema não.. =/ Abraco
  5. Ruyfreis

    problema com getchar();

    No caso do getchar() seria logo apos a linha cout << "\nElemento " << n << " na serie Fibonacci = " << resp; mas não entendi o porque de o programa não esperar... o que pode estar ocorrendo é que o buffer do stdin está "guardando"o ultimo "enter" que você pressionou.. e quando chega no getchar() ele já descarrega o "enter" uma opcao é colocar assim cout << "\nElemento " << n << " na serie Fibonacci = " << resp; fflush(stdin); getchar(); ou voce também pode colocar (outra alternativa) cout << "\nElemento " << n << " na serie Fibonacci = " << resp; system("pause"); veja se funciona... abraco
  6. Ruyfreis

    Duvida Simples em C++

    Esta mensagem aparece após a mudança do codigo?
  7. Ruyfreis

    Funcao

    void Decisao(char nome[255], int password) { /*Aqui coloquei dois if com duas mensagens um para o char string e o outro para o inteiro mais mesmo assim meu programa não consegeu ler esta função ajuda ai se eu colocar um else com uma mensagem qualquer ele aparece a mensagem mais os if não */ if(nome=="david") { printf("OK..."); } if(password==1234) { printf("beleza..."); } } o prototipo desta sua funcao não possui nenhum parametro... porque voce colocou parametros na função? As variaveis nome e password são globais.. então não precisa de passa-las por parametro.... mas o erro está pois o prototipo não corresponde ao cabecalho da funcao.. ok? Dica... utilize o minimo de variaveis globais possivel... tente sempre passa-las por parametro mesmo... Abraco Deixe a funcao desta forma... void Decisao() { /*Aqui coloquei dois if com duas mensagens um para o char string e o outro para o inteiro mais mesmo assim meu programa não consegeu ler esta função ajuda ai se eu colocar um else com uma mensagem qualquer ele aparece a mensagem mais os if não */ if(nome=="david") { printf("OK..."); } if(password==1234) { printf("beleza..."); } }
  8. Ruyfreis

    Duvida Simples em C++

    Aqui está um erro: int maior (int valor); int menor (int val); Esta funcão deve receber um ponteiro para inteiro, ou então um vetor(o que é a mesma coisa) Assim: int maior (int valor[]); int menor (int val[]); [\code] e o mesmo deve se repetir na funcao propriamente dita...o cabecalho da funcao deve ser igual ao prototipo. --- [code] ma = maior (v[5]); me = menor (v[5]); [\code] Então aqui segue se 2 coisas incoerentes se voce quer passar o vetor todo voce deve passar somente o v e não v[5] além do mais v[5] não existe pois o vetor vai de 0..4.. Ok? voce deve retornar o ma no maior e o me no menor... e não uma posicao do vetor... Ok? Por fim está funcao sua também está um pouco incoerente.. voce não pode chamar 0 de menor e 99999 de maior.. pois sempre existe um numero menor ou maior que estes dois que podem estar no vetor O que deve se fazer é iniciar o me e o ma com a primeira posicao do vetor, e veficicar se existe um maior que este dentro do vetor(na func maior) e um menor que este dentro do vetor (na func menor) Entendeu? Abraco Uma dica boa pra encontrar erros no código é utilizar o modo 'debug' Abraco Ahhh.. no for que varre o vetor deve ser variado de 0 até 4 e não de 1 até 5....
  9. Ruyfreis

    Duvida com listas em C

    Olá mem, Me fale melhor qual é sua duvida a respeito disto... eu não costumo ficar online em chats.. mas sempre que possivel eu dou uma passadinha aqui no script brasil... Voce deseja implentar Listas?! o c++ já tem uma biblioteca de listas e pilhas ótima e muito facil de ser utilizada... Quanto a Struct não é muito dificil não... Att
  10. Se o problema for no INSERT ta ae uma guia de referencia a esta funcão para lhe ajudar http://www.w3schools.com/sql/sql_insert.asp :mellow:
  11. E-mail enviado... qualquer duvida em funcoes para manipulacao de string me pergunta ae que eu tento lhe ajudar
  12. Eu tenho alguns códigos prontos de quando eu fiz estrutura de dados. se voce quiser eu lhe envio por e-mail... Mas assim.. voce tem de fazer várias alteracoes no codigo para prepara-lo a receber string no local de inteiro... não se pode fazer igualdades tem de utilizar a strcpy() ... estas funcoes ficam na biblioteca <string.h> Tente olhar o codigo com calma utiliza o Debuger para per onde está ocorrendo o erro... me fala que eu tento lhe ajudar porque fica dificil eu ler todo o seu código e ir debugando linha por linha... para você isto fica mais simples... Att
  13. Não sei com quem posso falar isto diretamente, mas acredito que com o advento da tecnologia mobile um forum de discussao a respeito da Android SKD seria muito interessante. Eu estou começando a aprender e é uma plataforma muito boa para desenvolvimento de aplicativos para mobile! Obrigao
  14. Vou fazer um favorzao pra ti... executei o codigo na minha maquina e corrigi todos os possiveis erros e comentei... espero ter ajudado// #include <stdio.h> #include <stdlib.h> mostrar_menu () { char opcao; puts("\n\tViaturas? É comigo!\n"); puts("0 - Sair do programa"); puts("1 - Ler o ficheiro de texto"); puts("2 - Mostrar todas as marcas"); puts("3 - Mostrar o preço de uma viatura"); puts("4 - Escrever dados num ficheiro de texto\n"); puts("5 - Mostrar modelos de uma marca"); puts("6 - Mostrar preço de uma viatura específica"); puts("7 - Alterar o preço de um veículo específico\n"); puts("8 - Escrever dados num ficheiro binário"); puts("9 - Ler dados de um ficheiro binário\n"); puts("10 - Histograma"); puts("11 - Intervalos de preço por modelo"); puts("12 - Escrita da base de dados ordenadamente\n"); printf("Escolha uma opcao: "); scanf("%c", &opcao); switch(opcao) { case '0': puts("Adeus"); break; case '1': {ler_ficheiro(); break;} case '2': puts("2 - Mostrar todas as marcas"); break; case '3': puts("3 - Mostrar o preço de uma viatura"); break; case '4': puts("4 - Escrever dados num ficheiro de texto\n"); break; default : { puts("Opcao invalida! Escolha uma das opcoes disponiveis no Menu:\n"); mostrar_menu();} } } /* -------------------------------------------------*/ int ler_ficheiro() { char s[30]; FILE *fp; puts("Introduza o nome do ficheiro: ") //Utilizei esta funcao para voce ao ter de ficar colocando "gambiarra" de 2 gets() que nem sempre funciona// scanf("%s", s); //Funcao de limpa o buffer de entrada do teclado fflush(stdin); fp= fopen(s, "r"); if (fp==NULL) printf("não foi possivel ler o ficheiro %s \n", s); else { //Voce havia esquecido de enviar o parametro para a funcao com o caminho do arquivo de entrada// ler_fich_texto(s); } } /* -------------------------------------------------*/ int ler_fich_texto(const char *fp) { int parametros; int result; FILE *stream; //Voce declarou como um caracter e não um vetor de caracteres// char s[150]; parametros = 0; //Havia esquecido de atribuir o fopen a variavel stream// stream = fopen(fp, "r"); //É melhor garantir que o ponteiro não esteja NULL// if ( !stream==NULL ) { parametros = 0; while ( fgets(&s, 150, stream) ) { ++parametros; } fclose(stream); printf("Foram lidos %d registos\n", parametros); } else { printf("Erro ao abrir o ficheiro %s para ler\n", fp); result = 0; } mostrar_menu (); } /* -------------------------------------------------*/ main () { int i=1; while(i==1) { mostrar_menu(); i++; } } Agora ta funcioando certinho ^^
  15. int ler_ficheiro() { char s[30]; FILE *fp; puts("Introduza o nome do ficheiro: "); gets(s); gets(s); fp= fopen(s, "r"); if (fp==NULL) printf("não foi possivel ler o ficheiro %s \n", s); else { ler_fich_texto(); } } Porque voce coloca 2 gets(s)? se for o caso de limpar o buffer utilize o fflush(stdin)(para windows) ou o __fpurge(stdin)(para linux) int ler_fich_texto(const char *fp) { int parametros; int result; FILE *stream; char s; parametros = 0; fopen(fp, "r"); if ( stream ) { parametros = 0; while ( fgets(&s, 150, stream) ) { ++parametros; } fclose(stream); printf("Foram lidos %d registos\n", parametros); } else { printf("Erro ao abrir o ficheiro %s para ler\n", fp); result = 0; } mostrar_menu (); } acredito que o segmet fault deve estar acontecendo no stream... pois você utlizou o fopen mas não faz o segunte stream = fopen(fp, "r"); então o stream é um ponteiro nulo
  16. Ruyfreis

    Bug no C++?

    Para Windows o fflush(stdin) funciona bem, se e o amigo estiver utilizando Linux é melhor ele utilizar a __fpurge(stdin). PS: Para utilizar o __fpurge() voce deve incluir a biblioteca <stdio_ext.h> Tem um site que eu utilizo muito como referencia para tirar duvidas de funções, além dele ter o detalhamento e exemplos de praticamente todas as funções de C++ é o http://www.cplusplus.com/ Espero ter ajudado
  17. Acredito que se você modificar a estrutura da fila typedef struct { telem v[MAX]; int inicio; int final; int tam; } para: typedef struct { char v[MAX]; int inicio; int final; int tam; } então o campo v será um vetor de caracteres que nada mais é do que uma string. Você também pode utilizar a biblioteca <string.h> que já possui várias funções de manipulacao de strings implementadas para voce. Abraco
  18. Acredito que estes códigos não resultam em diferenca nenhuma em questão de otimizacao... Provavelmente o desempenho será o mesmo, é mais questõa que preferencia ao programar(questao de gosto). Muitos códigos são otimizados diretamente pelo compilador, e até mesmo pelo processador. Espero ter ajudado
  19. Me desculpe se a resposta for muito boba, mas não seria melhor comparar com NULL ao invés de 0x00?
  20. Ruyfreis

    Ajuda While

    Que tal este código bem simples: #include <stdio.h> #include <stdlib.h> int main() { //variavel de controle do while int i = 1; //O valor significa a tabuada de qual numero voce deseja imprimir// int valor = 3; while (i <=10) { printf("\n%d * %d = %d", valor, i, valor*i); i++; } return 0; }
  21. Ruyfreis

    Dúvida- linguagem C

    Porque voce não tenta utilizar o fscanf?
  22. Olá Galera, tudo bem? Sou iniciante de Octave e estou com um probleminha eu sei que para carregar um arquivo é somente fazer "load <nome_do_arquivo>", mas eu desejo além disto armazenar a matriz em uma variavel. Tente o seguinte comando "A = load <nome_do_arquivo>", mas retornou syntax error. Vocês poderiam me ajudar? Obrigado
  23. Noosssaaaa... Valeu mesmo michels.. alem de você ter resolvido meu problema.. deu pra aprender muita coisa que eu tinha curiosidade... heh.. muito obrigado mesmooooo.... o que eu achei que vai me salvar é o do post com o TQRComposite... brigado mesmooo.. você sempre me salvando..heheheh brigaduu...
×
×
  • Criar Novo...