-
Posts
40 -
Cadastrado em
-
Última visita
Reputação
18-
Olá! Oi de novo Zennon . . . Bom é exatamente o que disseram MassakiMsk e CiroboyBR apenas complementando . . . - Os cinco alertas seguintes são relativos ao fato de você ter colocado “ & ” para as suas variáveis dentro do printf(); o que não é necessário: |16|warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]| |23|warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]| |30|warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]| |38|warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]| |45|warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]| - Os dois alertas seguintes estão lhe alertando para o fato de você não ter definido o tipo da função main() |4|warning: return type defaults to ‘int’ [-Wreturn-type]| como você não definiu o tipo, o compilador tomou a liberdade de o definir como sendo “ int ” |51|warning: control reaches end of non-void function [-Wreturn-type]| como a função main(), foi definida como sendo do tipo “ int ” ela deve retornar algum valor, sendo assim você deve colocar um valor de retorno antes da ultima chave de fechamento da função main(): int main() { . . . return 0; } - Este é o seu principal problema, e é exatamente o que nos e o alerta queremos lhe dizer |8|warning: ‘codigo’ is used uninitialized in this function [-Wuninitialized]| O alerta está lhe alertando que a variável “ código ” está sendo utilizada no código sem que antes ela fosse inicializada com algum valor, para evitar usar o lixo de memoria. Mas especificamente, está mensagem esta associada ao fato de que quando você vai utilizar uma variável, em uma estrutura de controle, como: if for while switch É sempre bom você definir um valor ( inicializar ) a variável com um valor nulo para evitar que a mesma use lixo de memoria, dados ( valores ) armazenados naquela porção de memoria e que não foi apagado. E é exatamente esse o motivo para o seu programa pular direto para o default, já que o valor é diferente de qualquer case dentro do switch, tente colocar um printf(), antes do switch para mostrar o valor que está sendo armazenado pela variável “ código ” Bom era isso . . tente seguinr as dicas postadas acima por todos nós e o codigo vai rodar liso . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
-
Olá! Olha sou inciante em C . . . Cara ate entendo o que você quer fazer, mas pelo que sei o jeito mais seguro, se não o ÚNICO é utilizando um vetor dinamicamente alocado, tente dar uma pesquisada sobre isso, se possível tento postar tópicos que já vi aqui mesmo no fórum que tratam sobre esse assunto . . . Mas Tenho algumas duvidas, não quero passar a ideia de prepotencia ou arrogancia, mas . . .: - onde você leu ou aprendeu que definindo uma variável como: int magica [ 0 ]; a mesma iria armazenar uma quantidade infinita de números? - sobre a sua citação: E testando ele funcionou, ele armazena infinitamente, se eu armazenar algo no mágica [191629] ele vai armazenar Existem uma serie de fatores que podem contribuir para o sucesso ou o fracasso dessa sua afirmação, mas você poderia ter a gentileza de nos dizer se você realmente testou essa sua hipotipose, principalmente atribuindo valores a CADA posição do vetor: criando uma variável como: int magica [ 0 ]; e colocando um valor em: magica [ 191629 ]; ele vai armazenar ! ! ! Essa duvida me veio atona porque sabendo como a linguagem c funciona e fazendo um pequeno teste aqui para a sua hipótese, atribuindo um valor numérico a CADA posição, em determinado momento recebi uma mensagem de falha de segmentação de memoria, normalmente associado a tentativa de acessar partes da memoria não alocados para o meu algoritmo. Apenas lembrando que dependendo de uma conjectura de fatores da sua maquina, envolvendo: # o compilador e a forma como o mesmo está configurado; # o tamanho da memoria que você possui na sua maquina; # a quantidade de programas em execução; # e a forma como o sistema operacional esta usando e redistribuindo os recursos de memoria da maquina; As chances de você receber alguma mensagem de ERRO, são no mínimo enormes, pois aqui nem com 50 números, consigo executar o algoritmo sem receber a mensagem de falha de segmentação de memoria ! ! ! ! ! Bom por hora é isso . . . tente buscar informações sobre vetores dinamicamnete alocados que certamente funcionarão para o que você quer fazer, e nos diga se com os testes que lhe pedi você não recebeu nenhuma mensagem de erro do seu programa. E como eu já disse tente buscar no fórum Tópicos sobre esse assunto, se possivel tento postar algo ainda hoje! Obervações: - Tente postar qualquer mensagem de erro ou alerta que o compilador ou a IDE lhe retornem, ou mesmo qualquer mensagem ao final de execução do seu programa. - Aqui o algoritmo parace estar funcionando, pois, o numero 2 é printado na tela . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
-
Opa! Apenas algumas observações e correções adicionais . . . - Na parte relativa ao intervalo que eu codifiquei o correto seria: if ( valor >= 0 && valor <= 100 ) - E com relação ao erro no sinal de avaliação de valores em expressões: || - é usado para avaliar dois valores onde se apenas um deles for verdadeiro, a expressão inteira se tornará verdadeira, sendo este o motivo para o primeiro if ser sempre executado, pois, um dos valores sempre é verdadeiro, se entrarmos com os valores apropriados, para o algoritmo! && - é usado para avaliar dois valores, onde os dois tem de ser verdadeiros para que a expressão inteira se torne verdadeira, caso um dos dois não seja verdadeiro, a expressão inteira se tornará falsa! Era só isso . . .
-
Olá! Olha sou iniciante em C, mas já tive um problema similar no inicio de meus estudos . . . - acho que você fez confusão com os sinais que são usados para a avaliação de valores, você colocou ( || ) quando acredito que o correto seja ( && ), quando fiz alguns testes aqui apenas o ( && ) apresentou o comportamento certo. |13|error: expected ‘}’ before ‘else’| - ao que me parece o erro está lhe dizendo que está faltando uma chave de fechamento para o if anterior ao ELSE |29|error: expected identifier or ‘(’ before ‘else’| - este erro parece estar associado ao momento em que consertei o erro da linha 13, acho que pelo que pude entender da logica do seu algoritmo você queria um if inicial que fizesse uma avaliação inicial que avaliasse se a variável está fora de uma valor especifico: if ( valor > 0 && valor < 100 ) { . . . } else printf ( "\nFora de intervalo\n" ); colocando o restante dos seus ifs aqui dentro com o correto sinal de avaliacao, o programa apresentou o comportamento que acredito que seja o esperado por voce. - tambem faltou definir o tipo da função main() bem como colocar um return 0; antes da ultima chave de fechamento da funcao main(), pois, aqui o programa retornou alertas sobre os mesmos. Bom por hora é só . . . Veja se as dicas acima lhe ajudam . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
-
Olá! Bom pelo que vi você cometeu alguns pequenos, porém, importantes erros . . . |9|warning: format ‘%c’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[50]’ aqui o alerta está lhe dizendo que o código de formatação é incompatível com o tipo da variável que você deseja usar, neste caso você só precisa colocar o código de formatação certo “ %s ” muito provavelmente você vai receber este outro alerta, após colocar o código de formatação certo: |13|warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[50]’ isso ocorre porque em uma cadeia de caracteres ( string ) não é necessário a utilização de “ & ” dentro de um scanf(). - Outra coisa que pode estar causando o problema é o fato de que em funções para a entrada de dados, como scanf(), o buffer usado para armazenar os dados que entraram tem a tendencia de deixar o ultimo caractere armazenado no buffer, sendo que na maior parte das vezes o caractere será o “ \n ” ( pula linha ), sendo assim no scanf() seguinte o “ \n ” será usado finalizando assim a entrada de dados, não permitindo ao usuário entrar com os dados corretos. * Uma das forma que você pode usar para evitar este problema é usando dentro dos seus scanf() um código de formatação que realizada a limpeza do buffer do teclado, um dos que existem é o %*c, colocado logo apos o codigo convencional neste caso " %s " * Outra forma é utilizando funções que realizem a tarefa, para o Linux e Windows você pode tentar usar a função getchar(); não é sempre que ela funciona mas dependendo da ocasião pode quebrar uma galho. Para o Linux você pode usar __fpurge ( stdin ); Como não tenho muito conhecimento nesta parte voce deixar para voce buscar a melhor função para os seus algoritmos . . . OBS: para os sistemas Windows e Linux você muito provavelmente vai encontrar a função fflush ( stdin ); NÃO a use, ela é uma função que não foi desenvolvida especificamente para está tarefa e costuma ter um comportamento indefinido, podendo causar problemas durante a sua utilização. - |28|warning: format ‘%c’ expects argument of type ‘int’, but argument 3 has type ‘char *’ aqui este alerta está lhe alertando para o fato de que o código de formatação " %c " não é compativel com o tipo da variável “ palavra ” que neste caso é uma string, é só colocar o código de formatação certo “ %s ” e o alerta seguinte é o principal problema: |22|warning: comparison between pointer and integer [enabled by default]| ele ocorre porque não linguagem C você não pode fazer a comparação direta entre uma variável do tipo string e um caractere, como você tentou fazer. Neste caso você deve alterar o código: for ( i = 0; i < 5; i++ ) { if ( palavra == caractere ) { quantidade = 1 + quantidade; } } por: for ( i = 0; i < 5; i++ ) { if ( palavra [ 0 ] == caractere ) { quantidade = 1 + quantidade; } } Bom por hora era só isso . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
-
Olá! Oi, sou inciante em C, sem contar que por hora estou parado na linguagem, mas a alguns meses atrás quando mais ativo busquei uma serie de links que talvez me pudessem ser uteis no futuro . . . Bom a maior parte dos links nada mais vai ser do que mais do mais do que você provavelmente já sabe, além de que a maioria esmagadora é em inglês, mas de todo modo: Este é um dos que acho mais bem detalhados ao meu ver, fala o que acredito ser o mais próximo do que você já sabe, sem contar que tem uma referencia no final da pagina sobre os principais comandos e funções da biblioteca: https://computing.llnl.gov/tutorials/pthreads/ Este link em inglês traz uma breve explicação básica sobre pthreads, porém possui no final da pagina algumas descrições básicas sobre alguns dos comandos e funções da biblioteca: http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html Este Link é a mesma coisa, usando inclusive como referencia os links de descrição de comandos e funções do link anterior: http://www.cs.cmu.edu/afs/cs/academic/class/15492-f07/www/pthreads.html Também tem este link que possui dois PDFs, o primeiro é em português enquanto que o segundo em Inglês: http://www.cin.ufpe.br/~rngs/Arquivos/pthreads/ Obs.: apenas atente para o fato de que não tenho certeza se os links que lhe passei acima podem ser uteis para o sistema que você usa, mas de todo modo acho que lhe dá alguma luz. Bom por hora é só, apenas lembrando que sou inciante em C, não tenho nenhum conhecimento sobre threads e que estou parado a algum tempo . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
-
Olá! Olha sou inciante em programação, e principalmente em Python, então muito provavelmente vou dizer algo errado . . . Já me aconteceu algo parecido a algumas semanas, pela busca que fiz, o erro: unsupported operand type(s) for *: 'int' and 'NoneType' Parece estar sendo causado pelo uso da função print() na variável ( dias ), o que acho que esta acontecendo é que: - você declara uma variável chamada dias, e atribui a ela o seguinte comando: print ( str ( input ( "Digite o número de dias no hotel" ) ) ) - primeiro, essa linha vai fazer é chamar a função input(), para receber um valor introduzido pelo teclado, neste caso do tipo string, sendo assim o tipo da variável dias, assim que ela receber o valor de retorno da função input() vai ser do tipo string - segundo, ao vai ser receber o valor de retorno da função int(), a qual foi usada para converter o valor de string para o tipo inteiro, nesse momento o tipo da variável dias vai mudar do tipo ( string ) para o tipo ( int ) - terceiro e ultimo, a variável dias vai receber o valor de retorno da função print(), e esse é o seu problema, a função print() é uma função que não retorna nenhum valor, ou seja ela é um objeto cujo tipo é ( NoneType ), sendo assim neste momento o tipo da variável dias vai mudar do tipo ( inteiro ) para o tipo ( NoneType ), que não possui nenhum valor É isso que que está causando a mensagem de erro: pois, quando você chama a sua função hotel(), passa para ela o valor da variável (dias) que tem como valor ( NoneType ), isso é completamente permitido, pela sintaxe da linguagem Python, mas quando você esta tenta realizar a operação de multiplicação, entre um valor inteiro e um valor do tipo NoneType, é retornado um erro pela tentativa de realizar uma operação que não é permitida ( suportada ) Ate onde pude estudar de Python você só precisa, mudar a linha para: dias = int ( input ( "Digite o número de dias no hotel" ) ) - alias você usou str() para a conversão, quando o apropriado seria int(), digo apropriado, pois, ela ate é passada corretamente para a sua função, mas quando o valor fosse ser exibido, o numero 3 seria impresso 140 vezes, isso é uma característica de Python, por isso o apropriado seria o valor ser do tipo int Bom por hora é só . . . Veja se as dicas acima lhe ajudam . . . Ubuntu 14.04 Python 3.4.3 Espero Ter Ajudado ! ! !
-
Apenas uma correção: Realmente o código de formatação ” %2s “ parece limitar o numero máximo de caracteres que a função scanf() pode ler da string, ou seja, char nome [ 6 ]; scanf ( "%6s", nome ); entrada: alexandre print ( "%s", nome ); saida: alexan No código acima apenas os 6 primeiras letras do nome serão exibidas na tela, porque o o código de formatação força a função scanf(); parar de ler tudo o que vier depois do numero especificado de caracteres a serem lidos. Caso contrario, o programa poderia apresentar problemas ao chegar nesta parte, caso a quantidade de caracteres passados seja maior do que a capacidade de armazenamento da variável. E como aconteceu aqui quando testei, o Compilador e a IDE podem não apresentar qualquer mensagem de Alerta ou Erro, ficando assim a supressa no momento de execução do programa. Eu quase deixei esse detalhe passar . . . Obs.: mas o que eu e o Math.Pi lhe dissemos, ainda conta . . . é sempre bom definir bem como a(s) sua(s) variáveis vão funcionar . . . Pois, caso você queria testar com a dica do Math.Pi, da forma como está o seu código, tecnicamente ele está correto, apenas dentro dos IFs é que você vai ter de colocar uma função para fazer a comparação entre strings. Caso você queira fazer do jeito que lhe expliquei, você pode fazer a comparação de forma direta, bastando para isso seguir as dicas que já lhe disse no post anterior . . . Ate a Próxima ! ! !
-
Olá! Sou iniciante em C, mas acho que posso lhe ajudar . . . Ate onde sei o tipo char pode ser usado de duas maneiras: - Na representação de um único caractere char carta; você está declarando uma variável de nome carta que irá receber um único caractere - Na representação de uma cadeia de caracteres ( string ) char carta [ 3 ]; Você está declarando uma variável de nome carta que irá receber uma cadeia de caracteres ( string ), onde uma string pode ser uma única palavra ou mesmo uma frase e ate mesmo um texto inteiro, necessitando para isso que o tamanho seja grande o bastante para armazenar todos os caracteres, quanto maior a string maior vai ser o valor de dentro de char nome [ . . . ]; - nesta parte do código não sei para que serve a o código de formatação “ %2s ”, mas a não ser que ele sirva para ler apenas o primeiro caractere, será completamente inútil se você quer ler apenas um único caractere. scanf("%2s", carta); onde o código correto para ler um único caractere seria: scanf ( "%c", &carta ); - aqui acho que você cometeu um equivoco: if ( carta == "r") { valor = 10; } Quando você quer atribuir ou especificar a leitrua ou comparação de um valor do tipo “ char ”, existe diferença entre usar aspas simples e aspas duplas: - As aspas simples são usadas para a trabalharem em conjunto com caracteres únicos ( 1 ) char nome; sendo assim dentro do if você pode fazer a comparação direta entre o valor de uma variável do tipo char nome; e um valor qualquer desejado, sendo para isso necessário que o valor seja um único caractere e que o mesmo esteja entre aspas simples: if ( carta == 'r') { valor = 10; } - As aspas duplas são usadas para a representação de strings char nome [ 3 ]; Sendo assim, a instrução abaixo ate pode funcionar, mas dependendo do caso poderia causar erros de tempo de execução que são muito difíceis de serem detectados: if ( carta == "r" ) { valor = 10; } e que poderia retornar a(s) seguinte(s) mensagem(ns) de alerta dependendo do seu Compilador e da sua IDE, só não vou explicar isso agora por falta de tempo: |14|warning: comparison between pointer and integer [enabled by default]| |14|warning: comparison with string literal results in unspecified behavior [-Waddress]| Sendo assim o que o usuário Math.PI disse é apropriado caso no futuro você queira fazer a comparação de uma string especifica com o valor de outra string armazenada na variável alvo. - Além disso a atribuição de valores dentro dos seus IFs todas resultam em 10, quando o correto seria que cada IFs atribua um valor diferente, claro que isso vai depender do que o código deve fazer. - Na instrução: printf ( "\n %i", valor ); não sei detalhes sobre todos os usos de todos os códigos de formatação capazes de serem utilizadas em conjunto com printf(), mas para o tipo int o mais apropriado seria utilizar o código %d Bom por hora é só . . veja se as dicas lhe ajudam . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
-
Python! NameError: name 'raw_input' is not defined
FelipePetropolis respondeu ao tópico de Gerivan Jose_756224 em Programação - outros
Olá! Olha eu sou novo no mundo da Programação e comecei a poucos dias em Python, então não espere muito . . . Alguns dias atrás eu tive o mesmo problema, pela pesquisa simples e rápida que fiz, parece que a partir da versão 3 da linguagem Python o raw_input(), foi alterado para apenas input(), ou seja raw_input(), não existe no python3, por isso o erro: NameError: name 'raw_input' is not defined tente por apenas: nome = input("Qual seu nome? \n") Aqui no Python 3.4.3 (default, Oct 14 2015, 20:33:09), funcionou normalmente. - Sem querer ser prepotente ou mesmo rude, você deve estar lendo alguma documentação, livro ou apostila, baseados na versão Python 2, sendo assim se você quiser usar raw_input(), muito provavelmente você vai ter de usar a versão 2 do Python. É bom você dar uma pesquisada sobre as diferença, vantagens e desvantagens de usar cada versão de Python, seja ela a 2 ou a 3, no meu caso eu preferi começar por Python 2.7.6, para depois passar para Python 3. E se você ler o meu Tópico que postei a alguns dias, você vai perceber que escolher uma versão ou outra de Python pode ser uma experiencia agradável ou desagradável, dependendo das Características e modificações de cada versão de Python ! ! ! Mas é claro que isso depende de cada pessoa . . . Bom por hora é só . . . só para terminar, se você tiver um tempinho ou mesmo souber inglês, ou acesso a um tradutor online, você pode dar uma olhada neste link: Documentação Python 3 - raw_input() to input() ,que fala um pouco das motivações que levaram a esta mudança . . . Ubuntu 14.04 Python 2.7.6 Espero Ter Ajudado ! ! ! -
nao acho o erro desse codigo
FelipePetropolis respondeu ao tópico de Lucas Moraes_757048 em C/C#/C++
Olá! Sou iniciante em C, mas acho que posso lhe ajudar . . . - |24|error: expected ‘;’ before ‘else’| - esse erro está dizendo que é esperado um ponto e virgula ( ; ), antes do else, ou seja, você esqueceu de colocar o ponto e virgula após algum comando, mais especificamente a função printf() da linha anterior - |14|warning: spurious trailing ‘%’ in format – esse alerta está lhe alertando para a falto do código de formatação do scanf() da linha anterior, scanf ("%", login); faltou você apenas colocar a letra “ s ” após o “ % ” - |13|warning: too many arguments for format – esse alerta está lhe dizendo que você tem mais argumentos do que códigos de formatação para representar os mesmos, ou seja, você colocou o argumento “ login ” para a função scanf(), mas como você não definiu o código de formatação de forma correta %s, o compilador esta interpretando que % não é um código de formatação, por isso ele está dizendo que está faltando códigos de formatação para os argumentos. - |19|error: ‘logado’ undeclared (first use in this function)| - aqui o erro está lhe dizendo que a variável logado, não foi declarada ainda em nenhuma parte do programa, e por isso mesmo você não pode atribuir nenhum valor a variável antes de declará-la, basta declará-la no inicio do código junto as outras variáveis - os três alertas seguintes ocorrem pelo mesmo problema, o fato de você ter colocado o “ ; ” onde não deveria scanf ; ("%s",senha); é só tirar o “ ; ” do meio: scanf ("%s",senha); |16|warning: statement with no effect |16|warning: left-hand operand of comma expression has no effect |16|warning: statement with no effect - esta parte está completamente errada por dois motivos: if (login ="admin") e (senha="123");logado = 1; O primeiro motivo é que: Na linguagem C o sinal ( operador ) “ = ” e o sinal ( operador ) ” == ”, tem significados e funções completamente diferentes: O sinal “ = ” é usado como operador de atribuição, ou seja, é usado para atribuir um valor a uma determinada variável, e não para comparação de valores, por exemplo: int idade;idade = 12; Primeiro foi declarado uma variável do tipo inteiro cujo nome é idade, depois foi atribuído ( dado – atribuído ) o valor 12 a variável idade, que a partir deste momento armazena o valor 12, apenas observando que você pode fazer as duas coisas ao mesmo tempo int idade = 12; neste exemplo atribuiu-se um valor a variável idade ao mesmo tempo em que ela foi declarada. O sinal “ == ” é um operador usado para a realização de comparação entre dois valores, exemplo: int idade_1 = 12;int idade_2 = 13;if ( idade_1 == idade_2 ) { printf(“Idades Iguais . . .”); } O segundo motivo é que: O comando if() é usado para a avaliação de condições, ou seja, o if irá avaliar uma ou mais condições, e caso a/as condições sejam verdadeira irá executar o código logo após o if, e que de preferência o código deve estar contido dentro de abre e fecha chaves { } se fosse o caso do exemplo acima que citei o código estaria correto e poderia ser usado sem problemas, pois, se está comparando dois valores numericos, mas no seu caso você que comparar os valores de um vetor de caracteres ( strings ) palavras e infelizmente a linguagem c não consegue fazer a comparação entre duas strings ( palavras ) de forma direta, causando erros, exemplo: char nome_1 [ 10 ] = “marcos”;char nome_2 [ 10 ] = “jose”;if ( nome_1 == nome_2 ) { printf(“Nomes Iguais . . .”); } Muito provavelmente o código acima seria compilado e executado normalmente, mas o código após o if não seria executado, pelo motivo acima já citado. Para resolver este problema você tem que usar uma função que tenha sido especialmente desenvolvida para a tarefa, strcmp(); char nome_1 [ 10 ] = “marcos”;char nome_2 [ 10 ] = “jose”;if ( strcmp ( nome_1, nome_2 ) == 0 ) { printf(“Nomes Iguais . . .”); } strcmp() recebe os valores de duas variáveis do tipo ( string ) e as analisa ( compara ), se os valores das duas é igual, a função retorna 0, caso contrario retorna 1, sendo que independentemente de retronar 0 ou 1, o valor de retorno será avaliado diretamente pelo if() A função se encontra na biblioteca #include<string.h> Bom por hora é só, espero que tenha entendido o que eu quis dizer, com o que eu lhe expliquei acima tenho certeza que lhe dará alguma luz para terminar o seu codigo! Obs: a não ser que o problema tenha sido causado por editores de texto, tome muito cuidado por onde você deixa os ; isso pode lhe causar problemas no futuro. Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! ! -
Não sei qual é o problema. Compilação normal.
FelipePetropolis respondeu ao tópico de Diego Aquino em C/C#/C++
Olá! Olha sou iniciante em C, mas dei uma olhada rápida, e parece que o problema parece estar relacionado aos seguintes alertas apresentados a seguir: |69|warning: format ‘%d’ expects a matching ‘int’ argument |79|warning: format ‘%d’ expects a matching ‘int’ argument - você esqueceu de colocar os argumentos para os printf(): printf("- %d - "); acredito que o correto seria : printf ( "- %d - ", vetor [ i ] ); - uso o sistema operacional Linux Ubuntu 14.04, então tive que substituir a função gech(); por getchar(); e não tive nenhum problema, por hora. - funções do tipo system(); como - system("pause"); fazem chamadas a componentes do sistema, e que dependendo do sistema, pode vir a causar problemas no seu programa durante a execução, por isso só use tais chamadas se for necessario e se tiver plena certeza de seu funcionamento. se voce usou system("pause"); para poder visualizar os resultados evitando que a tela se feche, você pode substitui-la por getchar(); - Tente especificar os problemas que o programa está apresentando, pois, os testes simples que realizei o programa parece estar funcionando, com execeção das opções " b " e " c ", se der tempo tento postar algo ainda hoje . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! ! -
Olá! Sou iniciante em C, alem de que sou pessimo em matrizes, mas . . . acho que só faltou os laços for para mostrar os valores da matriz: int p = 0;int k = 0;for ( p = 0; p < 3; p++ ) { for ( k = 0; k < 3; k++ ) printf ( "%d", x [ p ] [ k ] ); printf ( "\n" ); } return 0;} Lembrando que sou pessimo em matrizes, mas acho que o codigo que lhe passei acima já lhe dará alguma luz . . . - a proposito, a observação feita pelo Math.P é muito importante, voce deve tomar muito cuidado na hora de preencher um vetor, principalmente para não ultrapassar os seus limites . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espqero Ter Ajudado ! ! !
-
[Linker error] undefined reference to 'WinMain@16'
FelipePetropolis respondeu ao tópico de mariafernanda em C/C#/C++
Olá! Sou iniciante mas, acho que posso ajudar . . . - |34|warning: unused variable ‘soma’ -este alerta está lhe dizendo que a variável soma não está sendo usada para nada, pelo menos ate esta parte do código. - O problema que deve estar impedindo a compilação e execução do programa, pelo menos aqui, deve estar na chave de fechamento da função que você definiu “ void soma_matriz(int a[M][N]) ” você a colocou na linha 62 após a chave de fechamento de main(), é só tira-la de lá e coloca-la no lugar certo - Mas após corrigir a chave cria-se um erro: |35|error: ‘fp’ undeclared (first use in this function)| - deve estar ocorrendo porque o ponteiro para o arquivo ficou visível apenas dentro da função que você definiu e não pode ser visualizada na função main(), para mim foi só colocar “ FILE *fp; “ no inicio da função main() - e como é de se esperar como não tenho o arquivo, deu erro na leitura do mesmo . . . - e um observação as ultimas linhas da sua função main() estão estranhas, acho que você deveria inverte-las, colocando o return 0; depois da chamada a função " soma_matriz() " return 0;soma_matriz(matriz); Bom por hora é só . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! ! -
Olá! Sou iniciante em C, mas acho que posso lhe ajudar . . . - |10|warning: format ‘%c’ expects argument of type ‘char *’, but argument 2 has type ‘char (*) - aqui este alerta está lhe dizendo que os tipos definidos no código de formatação do scanf() “ %c ” e do argumento “ Senha ” são diferentes. Isso ocorre porque você definiu a sua variável “ char Senha[100] ” como sendo uma cadeia de caracteres ( string ) enquanto que o código de formatação " %c " é usado para ler um único caractere armazenado em uma variável “ char Senha ”, é só colocar o código de formatação correto “ %s ” - Sendo que após a mudança caso apareça este alerta e você não saiba o seu significado: |10|warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*) - é porque em uma cadeia de caracteres o endereço do primeiro elemento é usado para referenciar ao restante dos elementos subsequentes, sendo assim na função scanf() não é necessário o uso do “ & ” para ( strings ) - |11|warning: comparison with string literal results in unspecified behavior – este alerta é também uma das possíveis, senão a principal causa do que está causando o erro no seu programa. Aqui o alerta está lhe dizendo que a comparação direta entre o valor da variavel “ Senha ” ( string ) e a string “ Ola ”, pode vir a causar efeitos inesperados. O modo certo de fazer tal comparação seria usando uma função especialmente desenvolvida para a tarefa strcmp(); if ( strcmp ( Senha, "Ola") == 0 ) Alem disso o voce deve colocar o codigo a ser executado caso a comparação do if seja positiva entre chaves de abertura e de fechamento e apos, o else, tambem é aconselhado colocar o codigo que será executado caso a comparação do if seja negativa entre chaves de abertura e de fechamento. - Sendo que se o seu compilador apresentar algum erro ou alerta referente a linha na qual a função strcmp(); foi usada, isso deve ocorrer porque faltou colocar a biblioteca da qual a função faz parte #include <string.h> - quase esqueci, funções como system ("pause"); são funções que fazem chamadas a componentes do sistema, e que podem variar conforme o sistema, principalmente se houver algum problema no sistema que impeça o seu programa de usar tais chamadas, sendo assim é aconselhavel evitar tanto quanto possivel tais chamadas. Se a sua intenção erra o de evitar que a tela do programa se fechasse imediatamente, apos a execução do mesmo impossibilitando você de visualizar o conteudo, você pode usar a função getchar(); no lugar de system ("pause"); Bom por hora é só, veja se as dicas acima lhe ajudam . . . Ubuntu 14.04 GCC 4.8 CodeBlocks 13.12 Espero Ter Ajudado ! ! !
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais