-
Total de itens
884 -
Registro em
-
Última visita
Tudo que vangodp postou
-
Imagine o seguinte caso: int a = 7, b = 2; float f = a/b; printf("%f", f); Claramente deveria dar 3.5 porem se compilar você vai ver que esta saindo 3.0. Que aconteceu? Uma conversão implícita de tipos. você está dividindo um inteiro por outro, e guardando o resultado em um float(real), São 2 instruções, isso implica que você divide um int por outro int, e como inteiros não possuem parte fracionaria, se descarta tudo o que for depois do ponto, logo é atribuído a um float implicando um cast, uma conversão de int a float neste caso, mesmo ocorrendo a conversão o que estava depois do ponto já não existe, Como o programa não sabia o que havia na conversão de tipo, o programa preenche essa parte com um zero depois do ponto. Para que o resultado seja o correto você precisa fazer a conversão de forma explicita, indicando que se trata da divisão de um float por outro float assim: int a = 7, b = 2; float f = (float)a/b; printf("%f", f); Neste caso indicamos que desejamos conservar a parte fracionaria ao fazer um cast de int a float com a variável a, logo acontece novamente uma conversão implícita com b, pois o programa toma como se a é um float ele faz a conversão implícita de b a float também. A efeitos é a mesma coisa que fazer int a = 7, b = 2; float f = (float)a/(float)b; printf("%f", f); Nesse caso como você quer atribuir o resultado a um float, o normal seria que 'a' e 'b' fossem também flotantes, porem como nesse caso não são, se da o caso em que é preciso fazer de forma explicita, indicando que se deseja conservar as partes fracionarias. Fazer casts de forma explicita mesmo que aparentemente não faça falta quer dizer que você tem o programa baixo controle, e que você sabe em todo momento qual tipo de resultado vai ser gerado, pode se considerar uma boa pratica. Considere usar doubles neste tipo de casos. Ao se tratar de poucas variáveis o consumo de memória não é muito grande preucupe-se pela memoria quando se tratar de muitos doubles, talvez nesse caso seja melhor optar por um tipo mais pequeno como float, como por exemplo um array de 1000 doubles, talvez neste caso seja melhor 1000 floats que ocupam a metade.
- 2 respostas
-
Sim Servir serve... porem o normal é usar a STL que facilita o manejo de grandes volume de dados sem ficar queimando a cabeça do programador com pilhas, filas, listas, etc.
-
Procure informação sobre a API do sistema operativo, já que basicamente toda interface é programada sobre ela. Definitivamente não. SDL é uma biblioteca que permite manejar gráficos, áudio, eventos, tempo, etc, foi criada para fazer aplicações multimídia como videogames, reprodutor de musica, etc. Acho que você mesmo se respondeu. Busque uma biblioteca para C. C++ é melhor para jogos do que C pois é orientado a objetos que facilita enormemente. Mas nada lhe impede de criar jogos em C com SDL por exemplo. Se quiser um conselho aprenda C++ e comece por usar a biblioteca SFML2 que é própria para c++ e orientada a objetos, logo depois procure aprender opengl, ogre 3d, etc. Existem muitas bibliotecas, o melhor é que você escolha uma e prove para ver se gosta, e de preferência se tiver boa informação por internet melhor. Atualmente muita gente anda aprendendo C# e usando o tal unity, particularmente não acho uma boa ideia se o que você quer é programar o jogo. Porem devemos reconhecer que criar um jogo com unity é mais produtivo que com um linguagem de programação puro e duro, mas sinceramente programando o jogo você mesmo, as possibilidades são maiores, cabe a você escolher entre "potencia" e "facilidade". Aprendendo c++ não há limites.
-
if ( up ) { if ( i < 4 ) { if ( PiscaUmSeg ) { minutos++; PiscaUmSeg = 0; cnt = 0; i++; } } else if ( i >= 4 ) { if ( IncrementaMeioSeg ) { minutos++; IncrementaMeioSeg = 0; cnt2 = 0; i++; } } } Prove por as chaves que encerram os blocks do código. Se puder mandar o código completo melhor.
-
Ponha o que levar feito para que seja possível lhe ajudar. Use o botão <> para postar código.
-
time é um vetor( char time[15] ), você tem um só time, e não 15. Por exemplo para imprimir time fazemos printf("%s", time), sem por o o índice([+i+]), pois como falei você tem 1 só time. Seu problema é que você confunde vetor com matriz.
-
Use o botão <> para postar seu código. Se não percebeu seu código foi alterado pelo forum a causa de não usar o botão <>
-
Não esta correto? Parece funcionar perfeitamente.
-
seria criar um vetor com o mesmo numero de linhas e guardar nele o menor valor de cada linha v[0]=2 [2], v[1]=1 [1,5], v[2]=3 [8,4,3], v[3]=1 [2,3,1,7] E depois somar: v[0]+v[1]+v[2]+v[3] = 7
-
como você está imprimindo? Pegue seu programa aqui por favor. Em teoria para imprimir um simples float bastaria com algo assim: #include<stdio.h> int main(){ float f = 1456345.65; printf("%f", f); return 0; }
-
Não fazemos scripts neste fórum, respondemos duvidas pontuais sobre C ou C++, mas você poderia fazer um programa ou script que ou bem se execute a cada determinado tempo com o programador de tarefas, ou simplesmente deixar o programa rolar diretamente porem isso consumiria um mínimo de recursos do sistema.
-
#include<stdio.h> #include <string.h> #define NLINHAS 4 #define NLETRAS 10 int main(){ char *a, *b, *c, temp[10]; c=temp; int result; char m[NLINHAS][10] ={ {"Avenida"}, {"Brasil"}, {"Alfabeto"}, {"Holanda"} }; int i, j; for ( i=0; i<NLINHAS-1; i++) { a = &m[i][0]; for ( j=i+1; j<NLINHAS ; j++) { b=&m[j][0]; result = strcmp ( a, b ); if ( result > 0 ) { strcpy ( c, a ); strcpy ( a, b ); strcpy ( b, c ); } } } for ( i = 0; i<4; i++ ) { printf ( "%s\n", m[i] ); } return 0; } Tal vez seja isso o que você está buscando. Exatamente por esse motivo você deve usar strcmp, porque strcmp compara todas as letras e não só a primeira. Ainda assim acho uma estupidez de programa pois n4ao vejo sentido em usar ponteiros tal como no exemplo que deixo anexado. Se fosse uma matriz tipo vetor de ponteiros a strings então organizar seria super efetivo, porque estaria trocando a ordem dos ponteiros.
- 6 respostas
-
Não entendo a pergunta. você teria uma matriz de ponteiros? Ou simplesmente apontar os dados da matriz a ser comparado por ponteiros? Coisa que vejo, perdão, um pouco estúpida e sem sentido. Não há mais dados no enunciado?
- 6 respostas
-
você precisa indicar ao compilador que quer usar o padrão c++ 2011 que é desde esse padrão que é aceitado variáveis do tipo auto. Em codeblocks por exemplo você precisa fazer isso: não só variáveis auto estão presente no padrão c++11, estão também ponteiros únicos, lambda, e um montão de coisas bacanas. Mas também pode que algumas coisas que tiver aprendido em padrões antigos sejam desaconselhadas usar em c++11, ou inclusive marcar erro, porque existe alguma nova forma de se fazer a mesma coisa neste novo padrão.
-
Não! Definitivamente isso não é Java, é simplesmente um algoritmo que também pode ser implementado em Java. Mas se pede que faça em C++. Se ninguém responder, mais tarde passo outravez lhe ajudarei, agora to sem tempo.
-
meu caro, você tem problema de "lixo" no buffer de entrada padrão. De uma olhada aqui: http://www.clubedohardware.com.br/forums/topic/1204927-condição-while-em-c/#comment-6626978 Lhe recomendo buscar no google "como limpar o buffer de entrada em C". Se depois disso continuar com duvidas pergunte aqui. Leve seu tempo para aprender sobre o buffer e como limpa-lo pois sem isso é muito provável que você tenha sempre problemas na hora de ler strings e chars de forma consecutiva a outros tipos de dados.
-
Se quiser um programa pronto busque "Método Simplex no linguagem C" no google e sairão muitos.
- 1 resposta
-
- algoritmos
- linguagem de programaçao
- (e %d mais)
-
O pdf não está
-
aprenda a usar bem essa função. É das mais necessárias.
-
comparar nomes em C se usa strcmp(nome, nome1)==0. veja os dois
-
%*c é o contrario de %c, se o %c lê um char, %*c ignora um char. Serve para evitar erros de leitura quando pulsamos enter, pois enter é também um char, e fica no buffer causando erros. O getchar simplesmente pausa o programa, se n4ao não seria possível ver os resultados pois mostraria o testo e limparia a tela tão rápido que você não veria nada, isso é o que acontece quando você tira o getchar, o programa n4ao da tempo para ler a saida.
-
Pois usando um laço de repetição: #include <stdio.h> #include <stdlib.h> void ins() { printf ( "Instruçoes!\n" ); } void novo() { printf ( "Novo jogo!\n" ); } int main() { int menu; char nome[20]; int sair; printf ( "Digite seu nome\n" ); scanf ( "%s", nome ); system ( "clear" ); while (sair != 1){ printf ( "%s escolha uma opção\n", nome ); printf ( "[1] - Novo Jogo\n" ); printf ( "[2] - Instruções\n" ); printf ( "[0] - Sair\n" ); scanf ( "%d%*c", &menu ); switch ( menu ) { case 1: novo(); break; case 2: ins (); break; case 0: sair = 1; break; default: printf("Caso invalido.\n"); break; } getchar(); system ( "clear" ); } return 0; } Como while por exemplo
-
Não existe nenhuma norma que regule isso, porem seu chefe pode lhe despedir se pegar muitos gotos. https://es.wikipedia.org/wiki/Código_espagueti
-
tal como você está fazendo(escrevendo ao contrario) é só inverter o testo antes de compilar >_<
-
É possível!