Ir para conteúdo
Fórum Script Brasil

Felipe222

Membros
  • Total de itens

    89
  • Registro em

  • Última visita

Tudo que Felipe222 postou

  1. Olá! Olha sou iniciante em C e ultimamente estou meio parado na Linguagem, mas . . . Bom um pouco antes de parar com C eu comecei a pesquisar sobre interfaces gráficas e encontrei uma biblioteca muito interessante. O nome da biblioteca é GTK+ é uma biblioteca que possui funções capazes de criar interfaces gráficas. A biblioteca tem versões tanto para Windows quanto para Linux, e é capaz de ser utilizada na linguagem C, embora para este tipo de biblioteca o mais indicado seja, uma linguagem com suporte a Orientação a Objetos, sem contar que para os dois Sistemas existe um programa chamado Glade. Glade é um programa do tipo arrastar e soltar, ele pode ser usado para construir manualmente uma interface gráfica, e ao ser salvo o arquivo do programa é salvo com a extensão .glade e dentro dele existe um código xml, construído pelo próprio programa e que representa os diferentes componentes da interface feita no mesmo. Tem este link que consegui a alguns meses atrás que talvez possa lhe ser útil: https://savebutton.wordpress.com/2011/06/19/interfaces-graficas-em-c-com-glade-e-gtk/ Pela data da pagina parece que o link é um pouco antigo, mas acho que já é alguma luz para o que você deseja fazer! Infelizmente ao tentar abrir o arquivo .glade com o Glade do Linux, o mesmo apresentou a seguinte mensagem: “ Mas esta versão do Glade é somente para GTK+ 3. Certifique-se primeiro que você pode executar este projeto com Glade 3.8 sem widgets obsoletos. ” Ate que apareceu a interface que deveria dentro do programa, mas acho que o programa apresentaria problemas ao tentar manipular e salvar o arquivo! Quando tentei compilar o código em C, o programa parece ter sido executado sem problemas, inclusive a interface gráfica foi executada sem problemas ! e olha que nem cheguei a olhar direito GTK+ e Glade. Mas independente disso você vai ter que estudar a biblioteca GTK+ e buscar compreender como ela vai manipular o código XML gerado pelo Glade. Bom acho que é só, tente buscar sobre a biblioteca GTK+ e sobre o programa Glade, tenho certeza que se você estiver realmente empenhado em desenvolver uma interface gráfica simples, esses dois são a solução para você ! ! ! Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  2. Olá! Sou iniciante em C, mas acho que posso lhe ajudar . . . A forma como vou lhe explicar é baseada em um código antigo que tenho e que acho que pode lhe ser bem simples de entender. - Você vai ter de criar 4 variáveis: uma para a entrada dos números digitados – int numeros_entrada = 1; uma para somar apenas os números positivos – int numeros_positivos = 0; uma para somar apenas os números negativos – int numeros_negativos = 0; uma para somar o total de números positivos com o de números negativos – int soma_numeros = 0; - sendo que eu iniciei essa variável int numero_entrada = 1; porque caso eu iniciasse com ” 0 ” a condição do laço while() se tornaria falsa e o código não seria executado, sendo essa a exceção todas as outras você pode iniciar com “ 0 ” - Bom você vai ter que criar um laço while que seja executado continuamente ate que a condição se torne falsa, ou seja, ate que o numero “ zero ” seja digitado, então não faz sentido você colocar while ( contador < 5 ), a não ser que você tenha pensado em limitar o numero máximo de números que o usuário possa vir a digitar ! ! ! O ideal seria while ( numeros_entrada != 0 ), então a sua variável “ contador ” pelo menos neste programa com estas especificações não serve para nada, apague ela do seu código - da forma que eu vou lhe ajudar esta parte é completamente irrelevante, além de estar errada, então vou simplesmente retirá-la do programa: if (n1!=0) { resultado=(n1+n1+n1+n1+n1); printf("\no resultado e %d",resultado); } else { printf("\nencerrando programa\n"); } Aqui está o código + ou – como deve ser e com alguns comentários: #include <stdio.h> #include <stdlib.h> int main () { /*lembrando que se iniciasse a variavel numero_entrada com " zero ", o while não será executado*/ int numero_entrada = 1; int numeros_positivos = 0; int numeros_negativos = 0; int soma_numeros = 0; /*enquanto numero_entrada for diferente de " 0 " o codigo dentro do while será executado*/ while ( numero_entrada != 0 ) { printf ( "\nDigite um numero :" ); scanf ( "%d", &numero_entrada ); /* é aqui onde a magica acontece, voce tem de criar uma estrutura com IFs que vão avaliar o numero digitado e decidir como o numero vai ser processado, e tendo em mente que os IFs serão executados DENTRO do laço while */ if ( numero_entrada > 0 ) /*se o numero digitado for maior que " zero " POSITIVO ele será somado a variavel numeros_positivos*/ { numeros_positivos = numeros_positivos + numero_entrada; } else /* caso contrario se o numero digitado for menor que " zero " NEGATIVO ele será somado a variavel numeros_negativos*/ { numeros_negativos = numeros_negativos + numero_entrada; } } /* aqui é realizada a soma do total de números positivos com a do total números negativos apenas observando que tive de multiplicar numeros_negativos por " -1 " convertendo-o para positivo pois caso contrario o computador realizaria o calculo de forma diferente ! ! ! */ soma_numeros = ( numeros_negativos * -1 ) + numeros_positivos; printf ( "\nA Soma dos Números Positivos é %d\n", numeros_positivos ); printf ( "\nA Soma dos Números Negativos é %d\n", numeros_negativos ); printf ( "\nA Soma dos Positivos com os Negativos é %d\n", soma_numeros ); return 0; } Acho que este código e dicas possam lhe dar alguma luz para resolver o problema . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  3. Olá! Sou iniciante em C e tenho andado um pouco parado nas ultimas semanas, mas vou tentar lhe ajudar. - |3|fatal error: string: Arquivo ou diretório não encontrado – aqui o erro foi o de que você apenas esqueceu “.h” no final de string - para os dois alertas seguintes, basta colocar, int main() e no final antes da ultima chave de fechamento return 0; |9|warning: return type defaults to ‘int’ - como você não definiu o tipo de retorno da função main(), por padrão aqui pelo menos o compilador o definiu como “ int ” |25|warning: control reaches end of non-void function - como o compilador pelo menos aqui definiu o tipo “ int ” para a função main(), o alerta está dizendo que o a função main() deveria ter um return para retornar algum valor. - a maior parte das funções do tipo “system() “ fazem chamadas a componentes do sistema, sendo assim para aumentar a portabilidade do código entre diferentes sistemas, e para evitar possíveis problemas que tais chamadas possam causar, tente evitar fazer tais chamadas. se o seu objetivo com system (“pause”); era o de evitar que a tela do programa se feche, você pode tentar substituir system(“pause”); por getchar(); com relação ao system (“cls”); não tenho por hora nenhuma recomendação de com o que substituí-la. - na sua função menssagem(), a forma como você a declarou e usou está, OK Com relação ao código, neste caso você deve usar: - um vetor para armazenar os números ( neste caso as notas do funcionários ) int a [ 4 ] - um vetor de caracteres para armazenar uma “string” ( neste caso o nome de um funcionário ) char funcionario [ 30 ] - um vetor de strings para armazenar os nomes dos funcionários ( uma lista com o nome dos funcionários ) char funcionario [ 4 ] [ 30 ] pois da forma que você fez, int a; – char funcionario [ 30 ]; - a cada vez que você digitar um novo nome e uma nova nota os valores armazenados anteriormente vão ser apagados e substituídos pelos novos, não sei se você já teve alguma introdução a depuração - debugger, mas caso não, lhe aconselho a tentar aprender e ver como os valores estão sendo modificados no seu programa. - sendo que usando char funcionario [30]; ou char funcionario [4] [30]; muito provavelmente vai aparecer este alerta, |19|warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[30] – este alerta está relacionado ao fato de que o primeiro elemento de um vetor de ( strings e de caracteres ) é uma referencia para o restante dos elementos do vetor não sendo necessário o uso de “ & ” - Aqui “ scanf("%i",&a); ” embora funcione, o código de formatação mais adequado para números inteiros seria %d, e como você vai trabalhar com um vetor para armazenar números inteiros, scanf ( "%d",&a [ i ] ); - e com relação ao final do seu programa crie um laço for que irá varrer os vetores que você criou, e exibir os resultados Bom, por hora é só, tente aplicar as dicas acima e veja se resolve os seus problemas . . . Ubuntu 14.04 GNU GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  4. Olá! Não sei se já conseguiu resolver o problema, mas . . . veja se isso resolve o seu problema: printf("\nPosicao %d: %d\n", i, valor[i]); Com valor [ i ], sem o " & " Ubuntu 14.04 GNU GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  5. Olá! Olha sou iniciante em programação, mas vou tentar lhe ajudar . . . - Bom com relação aos 2 Alertas seguintes, eles estão ocorrendo porque a função gets(), pode causar diversos problemas, por isso é aconselhável não utilizá-la: - |15|warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) - |15|aviso: the `gets' function is dangerous and should not be used. - |18|warning: format ‘%c’ expects argument of type ‘char *’, but argument 2 has type ‘int *’ - este alerta está acontecendo porque você usou o código de formatação errado para a entrada de dados, onde o correto seria usar %d. - Além disso dependendo do caso um outro componente que pode estar causando o problema, é com relação a limpeza do buffer de entrada do teclado, leia estes posts para saber mais sobre: buffer do teclado, gets(); e fflush(stdin); https://www.scriptbrasil.com.br/forum/topic/179418-meu-programa-so-le-a-primeira-variavel/ https://www.scriptbrasil.com.br/forum/topic/179317-ajuda-em-urna-eletronica-em-c/ http://forum.imasters.com.br/topic/537641-funcao-gets/ http://forum.imasters.com.br/topic/336835-tutorial-systempause-e-fflushstdin/ - Alem do mais o seu codigo não está trabalhando com vetores, depois de fazer as alterações acima tente colocar um printf depois do laço for para exibir o conteudo, o seu codigo está apenas trabalhando com simples variaveis, ou seja, da forma que você fez apenas o ultimo valor é o que vai existir nas variaveis que você esta usando, o correto seria declarar as suas variaveis char nome [ 10 ] [ 41 ] e int idade [ 10 ] - Outra coisa tente evitar fazer chamadas ao sistema usando funções como system("pause"); alem de reduzir a portabilidade do codigo em diferentes plataformas, podem causar problemas dificeis de serem detectados, se a sua intenção era o de evitar que a tela do programa se fechasse logo apos ser aberta, você pode usar getchar(); no lugar de system("pause"); Dei uma corrigida no codigo: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char nome [ 10 ][ 41 ]; int idade [ 10 ]; int c; for ( c = 1; c <= 10; c++ ) { printf ( "Digite seu nome: " ); scanf ( "%s", nome [ c ] ); printf ( "Digite sua idade: " ); scanf ( "%d", &idade [ c ] ); } getchar (); return 0; } - Lembrete: o scanf(), tem uma caracteristica que compromete a entrada de strings neste caso (nomes) com espaços em branco e etc.... mas acho que isto está melhor explicado em um dos links que postei. Bom por hora é só, preciso ir . . . Ubuntu 14.04 GNU GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  6. Felipe222

    Duvida só pra avalia

    Olá! Olha por alguma razão eu estava achando estranho esse seu problema, eu tinha a sensacao de estar vivendo um déjà vu, dei uma busca na net e encontrei estes Links: https://www.scriptbrasil.com.br/forum/topic/179327-calculo-compra-carro-o-km/ http://forum.imasters.com.br/topic/536319-calculo-do-preço-de-automovel/ http://forum.imasters.com.br/topic/536040-menu-com-contagem-de-opcoes-c/ Tente dar uma olha neles e veja se consegue algo, talvez eu dê uma lida mais detalhada neles mais tarde. Acredito que um deles vai resolver o seu problema . . . Espero Ter Ajudado ! ! !
  7. Felipe222

    Duvida só pra avalia

    Olá! 3.5 % de 30000 = 1500? 5.0 % de 30000 = 1500 acho que 3.5 % de 30000 = 1050 - Fiz uma serie de alterações segundo o que entendi do problema: if ( opcao == TRIO || opcao == AR || opcao == DIRECAO ) { valorTotal = valorFabrica + valorFabrica * 2 / 100; } if ( opcao == COMPLETO ) { float valorIpi = valorFabrica * 8 / 100; float extraAdicional = valorIpi + ( ( valorFabrica * 2 ) / 100 ) * 3; float valorDesconto = ( extraAdicional + valorFabrica ) * 3.5 / 100; valorTotal = valorFabrica + valorDesconto; } - O que é para ser calculado no extraAdicional - acredito que seja valor ipi + os 2% de cada um dos opcionais 3 * 600 - No valorDesconto - acredito que seja para calcular 3.5 do extraAdicional + valorFabrica - ValorTotal - é a soma de valorFabrica + valorDesconto Por que assim do jeito que fiz quando entro com 30000 o calculo está dando 31197 - Tente ver se consegue os resultados corretos com o professor ou de onde você tirou o problema, acredito que é exatamente estes dados que faltam para resolvermos o problema . . .
  8. Felipe222

    Duvida só pra avalia

    Olá! Olha vamos tentar o seguinte: Provavelmente este deve ser algum exercicio de algum curso, se for este o caso, muito provavelmente o mesmo veio com algum exemplo já calculado, sendo assim tente postar tal exemplo, caso ele não venha com o exemplo, tente você mesmo postar qual deveria ser o resultado do calculo de cada opção, não faça o calculo usando o programa que você criou, e sim você mesmo fazer manualmente o calculo pelo que você entendeu do problema. Ex: aqui 30000, com as opções 1, 2, ou 3 sai 30600 , este valor é proximo aos corretos que você calculou manualmente ou proximos aos valores do exemplo do exercicio? sendo que a unica coisa que tive que modificar no seu codigo foi a parte em que eu e o britivaldo já haviamos citado anteriormente, das duas formas o programa gera a mesma saida aqui.
  9. Felipe222

    Duvida só pra avalia

    Olá! Veja se é isso: valorTotal = valorFabrica + valorFabrica * 1.02 / 100;
  10. Felipe222

    Duvida só pra avalia

    Olá! Como já disse sou pessimo em matematica e estou inciando em programação, mas . . . Eu acho que é porque 30.000 não é interpretado como 30 mil e sim como 30, com algum valor depois da virgula, Só prara confirmar 60600 não é o valor que você deseja e sim 30600? Quando tentei aqui 30000.00 saiu 30600, sendo os 600 a porcentagem do calculo realizado, porem usei está formatação: valorTotal = valorFabrica + ( valorFabrica * 2 ) / 100; porque acho que o seu codigo não tava calculando a porcentagem, a não ser que eu esteja errado . . .
  11. Felipe222

    Duvida só pra avalia

    Olá! Olha sou pessimo em matematica e não estudo C++, então vou ser pouco util . . . não tou conseguindo que saio o 2% ? Eu não entendi o que você quis dizer, você teria como postar um exemplo do calculo realizado em cada opção . . .
  12. Olá! Olha tambem sou iniciante em Programação, porem estudo C, mas vou tentar lhe ajudar . . . - Na variavel nome você esqueceu de definir o tamanho do vetor de caracteres, ex: nome [ 25 ], para a entrada de uma string que contenha 24 caracteres, pois da forma que você fez acredito que só será reconhecido um unico caractere. - No seu switch está faltando as chaves que delimitam o inicio e o fim do seu switch. - Ate onde sei no switch não é permitido a estruturação que você está tentando usar case1 idade 1 <= 10, alem disso o correto seria case 1: com o codigo a ser executado aqui - para o que você está tentando fazer acho que o correto seria usar " ifs " para a tarefa - error: ‘system’ was not declared in this scope - este erro se não me engano está relacionado ao fato de você não ter declarado a biblioteca da qual a função system("pause"); faz parte, alem disso chamadas a funções do sistema devem ser evitadas visando a portabilidade do codigo e visando reduzir possiveis problemas que tais chamadas possam causar. Se a sua intenção era o de evitar que a janela do programa se fechasse imediatamente apos a execução impossibilitando a visualização dos resultados, você pode tentar usar a função getchar(); no lugar de system("pause"); que se encontra na biblioteca #include <stdio.h> - quanto a minha sugestão de usar ifs ficaria assim: if ( idade >= 1 && idade <= 10 ) { cout << "Querida criança, estás iniciando o seu caminhar e nesta jornada que há de ser longa e feliz, nós queremos que toda a sorte de belos acontecimentos te cerquem de paz, amor, harmonia e muito sucesso \n"; } if ( idade >= 20 && idade <= 30 ) { cout << "Ao longo da vida, muitas pessoas vão tentar te desencorajar e esgotar a tua força. Não perca tempo com elas, e procure a companhia daquelas que te dão valor por aquilo que você é e não pelas coisas que você tem Essas pessoas serão a tua força\n"; } if ( idade >= 30 && idade <= 40 ) { cout << "Não basta dar os passos que nos devem levar um dia ao objetivo, cada passo deve ser ele próprio um objetivo em si mesmo, ao mesmo tempo que nos leva para diante\n"; } - Quanto a IDE infelizmente pelo que sei ela foi abandonada a muito tempo, ou seja está "morta", sei que um grupo está tentando ressucita-la atraves do projeto neste Link: http://orwelldevcpp.blogspot.com.br/, caso você seja obrigado a usa-la seja lá o motivo que for, esta ultima versão deve ser a mais apropriada, no minimo. - Eu lhe aconselho a fazer uma pesquisa na net e encontrar alguma outra que seja mais atual, no meu caso uso " codeblocks ", mas existem varias outras para as mais variadas plataformas e com as mais variadas caracteristicas . . . - Mais uma coisa, no seu switch, faltou você colocar a variavel da qual o switch vai ler o valor, ex: switch ( idade ) Bom por hora é só . . . Ubuntu 14.04 GNU GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  13. Felipe222

    Float/Double

    Olá! Não sei se entendi bem a pergunta, você quer especificar ( limitar ) o numero de casas depois da virgula? Se é isso basta colocar " %.2f " neste caso o .2 vai limitar a duas casas depois da virgula, porem poderia ser outro valor de sua necessidade . . . Caso não seja isto especifique melhor a pergunta . . . Ubuntu 14.04 GNU GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
  14. Olá! Olha não sei nem um pouco sobre C++, e ainda por cima sou iniciante em C, então vou ser pouco util. Bom a unica coisa que posso lhe ajudar é com relação ao sorteio. A função rand(), usa sempre a mesma semente para gerar os numeros, fazendo com que os mesmos numeros sejam gerados a cada nova execução do programa, para resolver isto introduza este codigo no inicio do seu codigo: srand ( ( time (NULL) ) ); Isso fará com que um numero mais aleatorio, seja gerado a cada nova execução do programa, a outra forma seria colocar: sorteio = rand()%29; Dentro de um loop durante o jogo fazendo com que um novo numero fosse gerado . . . Bom por hora é isso, só posso ir ate aqui . . . Ubuntu 14.04 GNU GCC 4.8 CodeBlocks 13.12 Espero ter ajudado ! ! !
  15. Olá! Olha não sei se você já resolveu o seu problema mas, não vou mentir ainda estou muito longe de saber qualquer coisa sobre ordenação, pois ainda sou iniciante, mas vamos lá. Bom eu fiz algumas adaptações no codigo e ele ficou assim: #include <stdio.h> #include <stdlib.h> int main () { //variaveis int vet [ 10 ], i = 0, maior = -99999, menor = 9999, x, y; //ordenação for ( i = 0; i < 10; ++i ) { printf ( "\nNumero: " ); scanf ( "%d", &vet [ i ] ); if ( vet [ i ] > maior ) { maior = vet [ i ]; x = i; } if ( vet [ i ] < menor ) { menor = vet [ i ]; y = i; } } printf ( "\nO maior numero: %d na posicao %d do Vetor\n", maior, x ); printf ( "\nO menor numero: %d na posicao %d do Vetor\n", menor, y ); return 0; } Mas infelizmente ele retorna a Posição incorreta dos elementos maior e menor, a solução foi apenas adicionar um + 1 no "x" e no" y" dentro do printf para aparentemente resolver o problema. A outra forma que fiz foi modificar apenas esta parte e sem o + 1 no "x" e no "y": for ( i = 1; i < 11; ++i ) E tambem pareceu funcionar . . . Bom só posso ir ate aqui, muito provavelmente estas não devem ser as formas corretas para encontrar e resolver o problema, mas acho que já pode lhe ajudar em algo . . . Ubuntu 14.04 GNU GCC 4.8 Codeblocks 13.12 Espero ter Ajudado ! ! !
  16. Olá! Olha como eu já mencionei em outros posts, sou iniciante em C e péssimo em matemática, então não espere muito. Aqui apareceu os seguintes erro e alertas: error: expected declaration or statement at end of input - este erro acontece porque você esqueceu uma chave de fechamento na linha 28. warning: ‘main’ is normally a non-static function – este alerta não sei ainda muito bem o porquê, mas tenho certeza que estava relacionado com o fecha chaves do erro anterior uma vez que ele desapareceu. warning: control reaches end of non-void function – este alerta ocorreu porque você esqueceu de por return 0; antes da chave de fechamento da sua função. E ao tentar converter 1450 para octal deu 2 quando o correto seria 2652, ao que parece o programa parece estar funcionando apenas na primeira parte, retornando o primeiro digito da conversão neste caso 2, mas pode não estar exibindo os outros digitos ou simplesmente não estar convertendo o resto dos dígitos. Só posso ir ate aqui, tente ver se consegue seguir a partir daqui . . . Ubuntu 14.04 GNU GCC 4.8 Codeblocks 13.12 Espero ter Ajudado ! ! ! Oi só para atualizar, deixei passar batido o return 0; no seu codigo ele está dentro do seu while no final, parece que é isto que está causando o erro de conversão, o correto seria que esse return 0; estivesse entre as duas chaves de fechamento seguintes ao while: } return 0; } int main() Ao que parece isto faz com que a conversão funcione direitinho . . . Valeu ! ! !
  17. Olá! Olha eu sou iniciante em programação e não vou mentir sou pessimo em matematica, então não vou ser util neste programa! Eu ainda não dei uma boa olha no codigo e por isso não o compreendi muito bem, mas com relação a funçao fflush(stdin); tanto no linux quanto no windows, parece estar causando algum problema na execução do programa, (pelo menos aqui está) não sei se é o seu caso mas de todo modo tente não utiliza-la, pois já li em muitos forums que ela pode apresentar um comportamento indefinido em certos momentos, por isso tente substitui-la por outra função de limpeza de buffer ou mesmo utilizar algum codigo de formatação na função scanf() que faça a limpeza. Leia este tópico: https://www.scriptbrasil.com.br/forum/topic/179317-ajuda-em-urna-eletronica-em-c/ Tambem vi alguns fflush(stdin); antes de um dos printf() se o objetivo era limpar a tela tente system ("cls"); Tambem tem em alguns ifs (if parcela = 48 ), a não ser que está parte realize alguma tarefa especifica que eu não compreenda, acho que deveria ser if ( parcela == 48 ) Nesta Parte deveria mesmo ser isso? if ( parcela = 24 || 36 || 48 ) Aqui o Compilador deu um Alerta de que a Variavel "taxa" não está sendo utilizada em nenhuma parte do programa. Bom só posso ir ate aqui por hora, vou tentar dar uma olhada no codigo e caso eu consiga algum resultado, posto amanha! E se possivel poste alguns dados de como os resultados devem ser mostrados pelo programa, não testei nas exatas condições que você especificou, mas: carro = 1 ano = 2008 marca = f modelo = p valor do financiamento = 25.000 valor da entrada = 500.00 quantidade de parcela = 24 O valor da parcela é - 20.029165 valor total é 19.300034 Acima e Abaixo usando e não usando ( . ) pelo usuario na declaração dos valores, foi falta de atenção minha . . . O valor da parcela é = 1033 valor total é = 25294 e com relação a moto com os mesmos dados o programa finaliza apos a entrada do numero de parcelas . . . Ubuntu 14.04 GNU GCC 4.8 Codeblocks 13.12 Espero ter Ajudado ! ! !
  18. Olá! Olha testei o seu codigo aqui da forma que você especificou e realmente o erro ocorre! Bom ainda não tive tempo de estudar o seu codigo a fundo, e mesmo que tivesse acho que não vou ser muito util uma vez que sou iniciante. Acho que não haveria problemas neste codigo mas tente utilizar algum codigo de formatação na função scanf(), para limpar o buffer de entrada do teclado, ou mesmo usar uma funcao ao final de cada scanf() que o faça, no meu caso uso linux " __fpurge(stdin);" Com relação ao main() no fim de cada uma de suas funções, aqui apresentou erros no final de execução do programa, acredito que o problema seja pela chamada da função main(), que você o fez para retornar ao menu de opções, neste caso criei uma função chamada menu() especificamente para essa tarefa, eliminando o erro no codigo de retorno no final de execução do programa . . . Por hora é só . . . vou testar mas não acho que vou ser muito mais util do que isso ! ! ! Ubuntu 14.04 GNU GCC 4.8 Codeblocks 13.12 Espero ter Ajudado !
  19. Olá! Iniciei meus estudos em C a pouco mais de 1 mês, mas vou tentar lhe ajudar. Com relação a linha |35| error: switch quantity not an integer|, aqui o problema era apenas com a linha 30 int opcao(); foi só tirar o () para este erro desaparecer. Com relação a linha |52| error: expected declaration or statement at end of input|, aqui o problema era que estava faltando um fecha chaves em uma parte especifica do seu código, na função void leitura(), na linha 27. Com relação a linha |15| warning: too many arguments for format [-Wformat-extra-args]|, aqui o problema ocorre porque, você não especificou os códigos de formatação para vetor e venda" %s, %c, %d ", fprintf (arquivo,"venda", &vetor, &valor); e ate onde sei se não me engano, não é necessário o & nessas suas duas variáveis, em fprintf. Bom só posso ir ate aqui... tente executar as dicas acima e poste o resultado para tentar lhe ajudar mais com o que eu puder. Ubuntu 14.04 GNU gcc 4.4.8 Codeblocks 13.12 Espero ter Ajudado ! ! !
  20. Olá! O primeiro ponto é com a declaração as suas variáveis int e float: Em int idade a não ser que você vá utilizar um vetor de inteiros do tipo int chamado idade, você deveria ter declarado a sua variável idade apenas int idade, onde o tipo inteiro int vai armazenar todos os dígitos numéricos que o usuário informar, limitando-se apenas ao tamanho máximo que o tipo int permite armazenar e o mesmo vale para as variáveis float altura e float peso. Com relação ao char nome e char telefone você os declarou de forma correta, para o que eu acredito que seja o necessário para você ate o momento, mas o tipo char pode ser usado para armazenar dois valores possíveis, você pode armazenar um único caractere ou você pode armazenar um vetor de caracteres uma “string”. Na função scanf para armazenar um único caractere char letra; como exemplo, usa-se o código de formatação %c, onde apenas um único caractere será armazenado, porem, neste seu programa você quer armazenar um vetor de caracteres “string” e para isso você deve utilizar o código de formatação %s. O mesmo vale para exibir as informações no printf ! ! ! Com relação ao fato de seu programa ler apenas a primeira variável, muito provavelmente pode estar ocorrendo por pelo fato de a função scaf() ignorar tudo o que estiver após os espaços em branco em uma string que contenha espaços, como no caso de seu progrma char nome[50]; ou pelo fato de que pode estar ocorrendo de a função scanf() estar lendo o lixo de memoria do buffer de entrada do scanf() anterior! Leia este post: https://www.scriptbrasil.com.br/forum/topic/179317-ajuda-em-urna-eletronica-em-c/ onde tem uma boa explicação sobre scanf() Espero ter Ajudado ! ! !
  21. Olá! - com relação ao espaço em branco isso ocorre, porque scanf() para de ler a string assim que encontra o primeiro espaço em branco, e ignora tudo o que estiver apos o espaço, para evitar isso é necessario a introdução de um codigo de formatação especifico no proprio scanf(), existem n formas de se fazer isto, a que eu mais uso é scanf ( "%[^\n]s"); mas existem outras formas de faze-lo! - alem, disso existe tambem a possibilidade de ocorrer de seu programa usar lixo de memoria, no scanf(), tambem existem n formas de faze-lo, uma delas é por uma função que limpe o buffer a cada scanf() ou usar algum codigo de formatação no scanf() para evitar o lixo de memoria, tente encontrar o melhora para você! - com relação a repetir 10 vezes você pode usar uma estrutura de repetição ( Laço ) para faze-lo, tente ler sobre isto e tente postar o que você conseguir entender e tentar usar no seu codigo sobre laços ! ! ! Laços: - while - do while - for a forma de implementar cada um é muito similar, com apenas algumas poucas diferenças, mas fazem basicamente a mesma coisa ! ! ! Espero ter ajudado!
  22. Olá! Não sei se entendia muito bem, Veja se é isto: printf("\nA nota do aluno %d e: %d\n\n", i, nota); if ( nota >= 5 ) { printf ( "\nAluno aprovado!!!\n" ); } else if ( nota < 5 ) { printf("\nAluno Reprovado!!!\n"); }
  23. Olá! Olha, não vou mentir para você comecei a estudar C a pouco tempo e vetores e matrizes a cerca de dois dias, então acho que não vou ser muito util. Como não sei exatamente o que o seu programa deve fazer, não compreendi muito bem a sua sintaxe, mas ao que parece aparentemente, todos os valores estão sendo gravados, não sei se corretamente mas estão. Com relação ao buffer de entrada do teclado no linux, você pode tentar usar a função __fpurge(stdin); apos cada scanf() para a limpeza do buffer de entrada do teclado, existem outros metodos que você pode tentar procurar mais tarde para a limpeza de buffer! Com relação ao codigo que você postou, acho que não deve ser todo o codigo que você fez, mas de qualquer forma tente usar um printf para exibir as informacoes que deveriam ser gravadas e mostradas na tela, como não sei como o seu codigo deve realmente fazer, nesse ponto um printf faz uma falta danada! Bem só posso ir ate aqui.... Espero ter Ajudado!
  24. Felipe222

    programa c++ /

    Olá! Olha sou iniciante em C e não sou muito bom em matematica, só mudei pequenos detalhes no seu codigo: #include <stdio.h> #include <stdlib.h> int Div (int x,int y) { int q=0; while(x>=y) { (x=x-y, q++); } return q; } int main () { int num1,num2, fim; printf("insira o numero x: " ); scanf("%d",&num1); printf("insira o numero y: "); scanf("%d", &num2); if(num1 && num2>0) fim= Div(num1,num2); printf("o quociente é %d\n", fim); return 0; } 1 - você esqueceu o & nos scanf, provavelmente o motivo de seu programa parar de funcionar na primeira variavel ! 2 - com relação a variavel div ela não foi usada em nenhuma parte deste codigo, então a exclui 3 - é sempre bom apos os scanf, por alguma função que limpe o buffer de entrada para evitar problemas com a leitura de dados inseridos anteriormente, quando da utilização de varios scanf seguidos, existem N formas de se fazer isso procure a mais adequada a você ! Bom, acho que é só isso! Espero ter Ajudado ! ! !
  25. Felipe222

    Ajuda atividade c

    Olá! Olha sou iniciante mas vou tentar lhe ajudar! 1 - você esqueceu de declarar os arquivos cabeçalhos #include <stdlib.h> e #include <stdio.h> necessarios para usar as funções printf e scanf 2- aqui na minha IDE na linha 13 você colocou o nome da variavel num como nun 3 - isto pode variar muito de sistema para sistema, mas sempre que você declarar uma variavel tente inicializa-la com um valor como exemplo =0, para prevenir que a variavel utilize lixo de memoria, algo que occorreu quando compilei aqui 4 - apos declarar a função scanf(), coloque fflush(stdin); logo abaixo, isto vai limpar o buffer do teclado e pode evitar erros na utilização de varias funções scanf() em seguida. obs: em meu sistema a função fflush(stdin); funciona, mas a mesma pode não funcionar em outros sistemas operacionais. 5 - com relação ao preço dos cigarros, neste caso eu lhe recomendo que você declare a variavel pre como um float, %f 6 - aqui em meu sistema foi necessario usar int main() no inicio do codigo e return 0; no fim 7 - o ultimo printf fica assim printf(" dinhero gasto e %d", din); 8 - com relação a função system ("pause"); essa função faz uma chamada ao sistema operacional algo que deve ser evitado tanto quanto possivel a não ser que seja necessario para o projeto do programa, para pausar o programa para que você possa visualizar o programa em execução evitando que a tela abra e feche imediatamente, neste caso recomendo que você a substitua pela função getchar(); que faz a mesma coisa porem, não faz chamada ao sistema operacional! Por hora é só. Ubuntu 14.04 GCC 4.4.8 Codeblocks 13.12 Espero ter ajudado !
×
×
  • Criar Novo...