Jump to content
Fórum Script Brasil

Felipe222

Membros
  • Posts

    89
  • Joined

  • Last visited

About Felipe222

Perfil

  • Gender
    Male
  • Location
    Petrópolis-RJ

Recent Profile Visitors

1664 profile views

Felipe222's Achievements

0

Reputation

  1. De forma resumida, o problema parece estar acontecendo por causa de um problema ( componente ) chamado " Buffer do Teclado ", simplesmente ele tem a função de armazenar todos os caracteres de entrada do teclado, porem, em algumas situações funções como ( scanf ) não eliminam o ultimo caractere inserido normalmente Nova Linha ( \n ), normalmente associado ao presionar a tecla ENTER para finalizar a entrada de dados. Isso faz com que da proxima vez em que o Loop iniciar e tentar ler algo do teclado, ele simplesmente irá verificar que já existe um caractere no Buffer e se o mesmo for o ( \n ), a função ( scanf ) finalizará a entrada de dados causando o problema que você está tendo! Uma das formas de se resolver o problema é utilizando alguma função que faça a limpeza do Buffer do Teclado, logo apos alguma entrada: - No Linux existe a função __fpurge ( stdin ); - No Windows existe a função fflush ( stdin ); Apenas observando que a função fflush ( stdin ) não foi criada especificamente para este proposito, sendo que seu uso está associado a varios problemas que são causados por um comportamente indefinido da função, então lhe aconselho a não utiliza-la! - algo que você tambem pode fazer é utilizar a função getchar(); apos cada entrada do teclado. - Se não me engano tambem existe a possibilidade de se realizar a Limpeza do Buffer com algum caractere de escape definido pela propria função ( scanf ) só não me lembro qual . . . Por hora é só . . . tente buscar informações sobre a Limpeza do Buffer do Teclado e ver qual metodo é o mais indicado para o seu problema!
  2. Bom, ao que parece o problema parece estar sendo causado pelo chamado ( Buffer do Teclado ), é um elemento responsavel por detectar a entrada de dados provenientes do teclado, em certas situações ao presionarmos a tecla ( Enter ) um caractere "\n" nova linha fica armazenado como ultimo caractere inserido, infelizmente tambem é usado em certas situações para indicar o fim da entrada de dados do teclado, sendo assim pula a entrada de novos dados ( livros ) neste caso! Sendo assim algo que voce deve fazer é realizar a ( limpeza de Buffer ) que eliminará o caractere "\n" a cada entrada de dados ( fgets ), ( scanf ) ou similares! Normalmente voce encontrará para windows a função fflush( stdin ); porem recomendo que não a use uma vez que ela costuma ter uma comportamento indefinido passivel de causar problemas em seu programa! No proprio forum existem alguns topicos falando sobre problemas similares, recomendo que dê uma pesquisada sobre o assunto!
  3. Olha, não vou ter muito tempo para olhar o codigo, mas na pressa tentei dar uma adaptada para tentar encontrar o problema, vou deixar o codigo abaixo: #include <stdio.h> #include <string.h> int main ( void ) { struct Alunos { char nome [ 30 ]; float matematica, fisica, media; }; struct Alunos alunos [ 5 ]; int count; char Busca [ 15 ]; for ( count = 0 ; count < 5 ; count++ ) { fflush ( stdin ); printf ( "\nNome do aluno %d: ", count + 1 ); scanf ( "%s", alunos [ count ].nome ); printf ( "Nota de matematica: " ); scanf ( "%f", &alunos [ count ].matematica ); printf ( "Nota de fisica: " ); scanf ( "%f", &alunos [ count ].fisica ); alunos [ count ].media = ( alunos [ count ].matematica + alunos [ count ].fisica ) / 2; } printf ( "\nExibindo nomes e medias:\n" ); for ( count = 0 ; count < 5 ; count++) { printf("\nAluno %d\n", count + 1 ); printf("Nome: %s\n",alunos [ count ].nome ); printf("Media: %.2f\n", alunos [ count ].media ); } printf ( "\n Digite o nome do aluno a ser buscado: \n" ); printf ( "Aluno: " ); scanf ( "%s", Busca ); for ( count = 0; count < 5; count++ ) { if ( strcmp ( Busca, alunos [ count ].nome ) == 0 ) { printf(" | "); } } return 0; }
  4. Bom! Alem de tambem ser iniciante no mundo da programação, não sou lá muito bom em termos de matematica, mas . . . vamos lá! Dando uma olhada simples, não vi nada de errado, executei o seu codigo tanto em Python 2X quanto Python 3X, na plataforma Linux Ubuntu 32-bit e o codigo aparentemente faz corretamente o que deveria fazer. Se o erro existe provavelmente deve ser um ( erro de logica ), tente ver extamente o que o corretor automatico do seu curso, diz exatamente, para ver se isso ajuda a encontrar o erro de forma mais rapida! Caso contrario, você terá de realizar teste calculando valores, exemplo: 32456876 = 375 dias, 15 horas, 47 minutos e 56 segundos Aqui deu o resultado certinho, pelo menos pelos testes que fiz!
  5. Felipe222

    [DUVIDA] ELIF

    Olá! Olha de certa forma tambem sou iniciante, não dei uma observada na sitaxe em si e no que o algoritmo deveria fazer, mas . . . Aqui eu encontrei 2 problemas principais: - Ao que parece identação de certas partes do código estavam erradas e precisaram ser corrigidas: def tente ( qtdnome ): naleatorio = random.randint ( 1, 15 ) while qtdnome > 0: print ( 'Digite um numero maior que 0: ' + int ( input ( palpite ) ) ) qtdnome = qtdnome -1 if int( palpite ) == naleatorio: print ( 'Parabens! Voce ganhou , o numero aleatorio era: ' + naleatorio ) return 1 elif palpite <= 0: print ( 'Voce digitou um numero invalido' ) qtdnome = qtdnome+1 else: print ( 'Voce errou, tente novamente!' ) if qtdnome == 0: print ( 'Voce perdeu!' ) return 0 - Outro problema era com relação ao erro de sintaxe incorreta quando tentando usar ++ como incremento: acertos = acertos++ sendo assim eu a substitui por: acertos = acertos + 1 - Alem de outros pequenos problemas que tenho certeza que voce vai conseguir sanar! Obs.: Aqui eu teste o codigo no Python 3.4.3 embora na maior parte absoluta das vezes não seja dificil de se descobrir, é sempre bom especificar a versão Python usada! Ubuntu 14.04 LTS - Python 2.7.6 - Python 3.4.3 Esperto Ter Ajudado ! ! !
  6. Olá! Bom, dei uma compilada rapida e fiz algumas correções simples: #include <stdio.h> #include <string.h> int main () { char email [ 50 ], dominio [ 10 ]; printf ( "\nDigite seu e-mail: " ); scanf ( "%s", email ); char google [ 11 ]; int i, j; for ( i = strlen ( email ) - 10, j = 0; j < 10; j++, i++ ) { google [ j ] = email [ i ]; } if ( strcmp ( google, "@gmail.com" ) == 0 ) { printf ( "Email valido.\n" ); } else { printf ( "Email invalido.\n" ); } return 0; } Só vou adiantando que não dei a minima para a sintaxe do codigo, sendo assim vou deixar testes mais apurados para voce, mas ate onde pude ver o codigo parece estar funcionando! Só tenho 1 dica para você: Tente buscar informações sobre possiveis problemas envolvendo o uso das funções gets() e fflush ( stdin ), pois, estas funções possuem caracteristicas de funcionamento que podem causar Bugs em diversos codigos! Vou deixar 2 pequenos Links caso esteja interesado: http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/ http://forum.imasters.com.br/topic/537641-funcao-gets/ Ubuntu 14.04 LTS - GCC 4.8.4 - CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  7. Olá! O problema parece estar na seguinte linha: while ( num <= 10 ) O correto seria usar a variavel ( count ) . . . Alem disso, a não ser que seja extremamente necessario, tente não utilizar a bilbioteca ( conio.h ) e nenhuma de suas funções, ela é uma bilbioteca antiga, obsoleta e feita apenas paera sistemas windows, reduzindo e muito a portabilidade e compatibilidade para outras plataformas! Ubuntu 14.04 LTS - GCC 4.8 - CodeBlocks 16.01 Espero Ter Ajudado ! ! !
  8. Olá! Sei que já faz tempo do post, mas acho que posso oferecer um pequeno mas importante detalhe quanto a respostas! Olha sou iniciante em Programação e em Python, então me desculpem se dizer algo errado, mas . . . O problema que está acontecendo com você é comum a pessoas que iniciam na linguagem Python, isto porque a linguagem está em constante evolução, sendo assim existem varias versões do interpretador Python. A mais comum de se encontrar em termos de material é a Python 2.7.6, e uma das ultimas versões revisadas é a Python 3.4.3 sendo assim de uma versão para a outra alguns componentes na sintaxe da linguagem podem mudar, exigindo alterações no código, e um pouco de atenção quanto aos estudos na linguagem. No seu código você tentou utilizar 2 versões diferentes de Python: input() - essa função em Python 2.7.6 é usada para a entrada de valores numéricos, sendo assim quando você tenta entrar com uma string, o interpretador lhe retorna o erro mencionado por você, neste caso o ideal seria utilizar a função raw_input() para a entrada de strings. input() - essa função em Python 3.4.3 é usada para a entrada de strings, sendo que se você tentar utilizar a função raw_input(), o interpretador lhe retornará um erro, pois essa função já não é mais padrão da linguagem Python 3.4.3 print() - essa função em Python 2.7.6 é usada para exibir algum valor na tela, porem, em Python 2.7.6 você pode fazê-lo com a seguinte sintaxe – print vNome, sem problemas, pois a sintaxe da versão Python lhe permite isso. print() - essa função em Python 3.4.3 é usada para exibir algum valor na tela, porem, em Python 3.4.3 você não pode fazê-lo com a sintaxe – print vNome, pois, houve uma mudança na sintaxe da linguagem e isso não é mais permitido, sendo a nova sintaxe – print ( vNome ) Acho que era isso o que estava causando o seu problema . . . e como eu disse, sou inciante em Python então me desculpem se disse algo errado . . . Ubuntu 14.04 LTS - Python 2.7.6 - Python 3.4.3 Espero Ter Ajudado ! ! !
  9. Olá! Não sei se seria o mais adequado para este caso, mas . . . Você pode tentar usar o metodo .count() lista = [ "string", "string", "string", "palavra", "velocidade" ] contagem = lista.count( "string" ) print ( contagem ) O metodo tambem pode ser usado para strings individuais: lista = [ "string", "string", "string", "palavra", "velocidade" ] contagem = lista [ 3 ].count ( "a" ) print ( contagem ) Ubuntu 14.04 LTS - Python 2.7.6 - Python 3.4.3 Espero Ter Ajudado ! ! !
  10. Olá! Olha sou inciante em Python, mas . . . veja se isso serve . . . import random lista = list ( range ( 1, 101 ) ) amostra = random.sample ( lista, 10 ) print(amostra) Ubuntu 14.04 LTS - Python 2.7.6 - Python 3.4.3 Espero Ter ajudado ! ! !
  11. Olá! Um detalhe que deixei passar . . . Vi no seu codigo que voce tentou utilizar a função fflush(stdin); para realizar a limpeza de buffer do teclado, não utilize a função para isso. Embora ela funcione na maior parte das vezes, ela não foi desenvolvida para a tarefa, sendo assim nas vezes em que ela não funciona, a função costuma apresentar um comportamento indefinido, causando os mais diversos problemas durante a execução do programa, então não a use para essa tarefa! Vou deixar alguns links abaixo sobre este e outros assuntos: https://www.scriptbrasil.com.br/forum/topic/183218-dúvida-fflush-cc/#comment-688514 http:// http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/ http:// https://www.vivaolinux.com.br/tópico/C-C++/fflush(stdin); Valeu e ate a proxima ! ! !
  12. Olá! Olha sou iniciante em C, sem contar que estou um pouco enferrujado na linguagem, mas . . . Aqui o compilador retornou os seguintes alertas: Linha 106: warning: unused variable ‘logo’ 106 – pelo que o alerta diz a variavel logo não está sendo usada em nenhuma parte do seu codigo Linha 231: Warning: suggest parentheses around ‘&&’ within ‘||’ - aqui o compilador sugere que sejam colocados parentes, que separem as avaliações nas quais o “||” se encontra, por falta de experiencia na linguagem não tenho como afirmar se é isso mesmo o que o alerta diz e quais as possivies consequencias seguindo ou não o alerta, mas de todo modo tai o que entendi! pasando disso: if ( A == C && A != B && B != C || A == B && A != C && B != C || C == B && C != A && B != A ) para isso: if ( ( A == C && A != B && B != C ) || ( A == B && A != C && B != C ) || ( C == B && C != A && B != A ) ) Obs.: alem disso, como uso o Sistema Linux, me foi retornado um erro relativo a bliboteca “conio.h” e tambem em realação a função getch(); sendo assim eliminei o arquivo cabeçalho relativo a biblioteca, e substiui getch(); por getchar(); Alem disso lhe recomendo a não usar a biblioteca “conio.h” e/ou qualquer função relativa a mesma, visto que ela é uma biblioteca obsoleta, que foi desenvolvida para o sistema windows, o que causou o erro que enfrentei, sem contar que pelos motivos já citados, a biblioteca pode reduzir a compatibilidade e/ou portabilidade com outros sistemas. - sobre a execução do programa, o mesmo parece ser finalizado quando o mesmo não consegue encontrar o arquivo de texto para abri-lo, sendo assim só posso ir ate aqui . . . Ubuntu 14.04 LTS - GCC 4.8 - CodeBlocks 16.01 Espero Ter Ajudado ! ! !
  13. Olá! Olha não vou ter muito tempo de olhar e explicar o seu codigo, então vou lhe falar do que acho o mais relevante . . . Uma string não passa de uma cadeia de caracteres, e não um único caractere, em casos como esse a logica nos diria que: if ( uma_string == 'a' || uma_string == 'A' ) mostraria o resultado esperado, mas não é assim, a sintaxe da linguagem C não permite esse tipo de logica, isso acontece porque uma string é uma cadeia de caracteres ( vetor ), ou seja, um monte de char uns atrás do outro em sequencia, cada qual em sua própria posição. char string [ 25 ] = “sou uma string” Sendo que quando nos referimos a uma string na linguagem C, o endereço do primeiro elemento da string é um(a) ponteiro ( referencia ) para se encontrar todos os outros elementos do vetor. Neste caso a logica correta seria a de que você terá de ler cada caractere existente na string e comparar cada uma com as condições que você deseja, lembrando que as posições se iniciam em e não em 1 como seria o bom senso, neste caso a logica correta para a comparação seria: int i = ; while ( uma_string [ i ] != '\0' ) { if ( uma_string [ i ] == 'a' || uma_string [ i ] == 'A' ) { vogais++; } i++; } Bom por hora é isso . . . tente criar um novo projeto apenas para reproduzir a logica que lhe mostrei . . . e como disse não vou ter tempo de dar uma olhada no resto do codigo por hora! Ubuntu 14.04 LTS - GCC 4.8 - MonoDevelop 4.0.12 - CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  14. Olá! Aqui o programa retornou um erro de segmentação segmentation falt ( core dumped ) sendo assim o programa parou de funcionar! Tenho algumas Observações a fazer: - A biblioteca ( conio.h ) é uma biblioteca usada no sistema Windows, o que pode reduzir a portabilidade e/ou a compatibilidade com outros Sistemas como no meu caso Linux – Ubuntu 14.04 LTS, além do mais essa biblioteca esta obsoleta, então tanto quanto possível não use está biblioteca ou qualquer função que venha dela. - não sei qual o uso exato que você deu no seu código para a função fflush ( stdin ); mas se foi com o intuito de limpeza de buffer do teclado, não use a função para isso, ela é muitas vezes definida como tendo um comportamento ( indefinido ) o que pode causar problemas durante a execução do programa, então evite-a ao máximo possível, o mesmo vale caso você esteja usando a função para qualquer outra coisa! Vou deixar alguns links abaixo sobre a função e outros assuntos: https://www.scriptbrasil.com.br/forum/topic/183218-dúvida-fflush-cc/#comment-688514 http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/ https://www.vivaolinux.com.br/tópico/C-C++/fflush(stdin); Bom com o seu alerta e correções, ainda assim me foram retornados alguns alertas: |37|warning: return type defaults to ‘int’ [-Wreturn-type]| - você não definiu o tipo da função main() e neste caso o compilador o definiu como sendo do tipo ( int ) |177|warning: control reaches end of non-void function [-Wreturn-type]| - como o tipo de retorno da função main() foi definida pelo compilador como sendo do tipo ( int ) ela deve retornar algum valor ao final de sua execução, é só colocar um return 0; antes da ultima chave de fechamento da função |43|warning: unused variable ‘atual’ [-Wunused-variable]| - você declarou uma variável que não está sendo usada em nenhuma parte do programa |47|warning: ‘aux’ is used uninitialized in this function [-Wuninitialized]| - este alerta está lhe alertando para o fato de que a sua variável está sendo usada sem antes ter sido iniciada com algum valor seguro para a sua utilização, é só inicializar ela com algum valor, caso contrario corre o risco de utilizar lixo de memoria! |47|warning: ‘point’ is used uninitialized in this function [-Wuninitialized]| - o mesmo que o alerta anterior |209|warning: too many arguments for format [-Wformat-extra-args]| - aqui basicamente tinha um numero ( 9 ) dentro do scanf() Os 2 alertas a seguir ficaram empatados e retornaram 11 alertas cada: |752|warning: format ‘%s’ expects argument of type ‘char *’, but argument 3 has type ‘char (*)[40]’ [-Wformat=]| |211|warning: format ‘%u’ expects argument of type ‘unsigned int *’, but argument 2 has type ‘long unsigned int *’ [-Wformat=]| Eles parecem estar lhe alertando para o fato de que o tipo do código de formatação parece ser diferente do tipo da variável, o que pode acarretar os mais diversos problemas de execução, é só buscar colocar o codigo apropriado. E neste caso ao que parece você tentou criar algum tipo de código de identificação para o cadastro da pessoa, a não ser que você vá realizar alguma operação matemática com o valor, eu costumo definir este tipo de variável como do tipo string, ex: ( char código [40]; ) Além disso tem o ( int cpf; ) embora exista a possibilidade de uma pessoa digitar apenas os números, não tenho certeza se o tipo ( int ) seria o mais indicado para esta variável, você pode usar o tipo string ( char cpf [15]; ) ou mesmo utilizar algo como ( long int cpf; ) Estou um pouco enferrujado com relação a C, mas tenho quase certeza de que você vai ter de dar uma olha nos códigos de formatação usados no programa, alguns estão dentro de printf() outros dentro de scanf() |734|warning: format ‘%d’ expects argument of type ‘int’, but argument 5 has type ‘long unsigned int’ [-Wformat=]| - é basicamente o mesmo alerta do anterior Bom por hora é só . . . veja se o que lhe disse acima serve de algo para lhe ajudar . . . vou estar bastante ocupado esta semana, mas se possivel tento vir aqui para ajudar em alguma coisa . . . Valeu e ate a proxima ! ! !
  15. Olá! Olha sou iniciante em Programação e em C, alem de que sou uma completa vergonha quanto a Ponteiros e Referencia, alem de que muito provavelmente não seria capaz de lhe ajudar com o seu código, mas . . . Cara, dei uma compilada rápida usando as IDEs CodeBlocks e MonoDevelop, e aqui o console retornou um monte de mensagens de erros e alertas que não tem fim, então lhe aconselho a dar uma olhada nas mensagens de erros e alertas que a sua IDE lhe retorna e estudar o que cada mensagem significa . . . Exemplo: - Algumas das suas variáveis não estão recebendo uma valor que lhe seria atribuido: |710|error: expected expression before ‘;’ token| aux->prox = ; Pelo que pude ver a maior parte dos erros e alertas é referente a pequenos deslizes comuns em códigos como os que você está criando, acho que seguindo a dica que lhe dei você vai conseguir resolver a maior parte dos problemas! Bom por hora é isso . . . Tente o que lhe disse acima e diga o resultado . . . Ubuntu 14.04 LTS - GCC 4.8 - MonoDevelop 4.0.12 - CodeBlocks 13.12 Espero Ter Ajudado ! ! !
×
×
  • Create New...