-
Total de itens
884 -
Registro em
-
Última visita
Tudo que vangodp postou
-
duvida sobre a criação de um jogo do pacman
pergunta respondeu ao LeoRocha de vangodp em Tutoriais & Dicas - C, C++
vc precisa buscar um tileset e substituir cada letra por uma parte do tal tileset: https://www.google.es/search?q=pacman+tileset&num=100&newwindow=1&client=firefox-b&tbm=isch&tbo=u&source=univ&sa=X&ved=0ahUKEwjVxKyM0qTTAhXCDxoKHX4jBnkQsAQIJA -
suponho que ao comparar um double com um int o erro está nisso. A Solução arrumada de tal maneira funcionou corretamente: #include <stdio.h> int main() { float f; scanf ( "%f", &f ); if(f < 0.0000) printf("Fora de intervalo\n"); else if(f >= 0.0000 && f <= 25.0000) printf("Intervalo [0,25]\n"); else if(f > 25.0000 && f <=50.0000) printf("Intervalo (25,50]\n"); else if(f > 50.0000 && f <=75.0000) printf("Intervalo (50,75]\n"); else if(f > 75.0000 && f <=100.0000) printf("Intervalo (75,100]\n"); else if(f > 100.0000) printf("Fora de intervalo\n"); return 0; } Para você fazer uma ideia do problema veja isso: #include <stdio.h> int main() { float f = 3.14; if (f == 3.14) printf( "igual"); else printf( "diferente"); return 0; } Da errado não é?(diferente) Pois é... o que acontece nesse caso é que você ta comparando f que é um float com 3.14 que é uma literal e nesse caso a literal é como se fosse um double. Se eu trocar o tipo de dado de f por double funcionaria. Vamos ver: #include <stdio.h> int main() { double f = 3.14; if (f == 3.14) printf( "igual"); else printf( "diferente"); return 0; } Agora trata-se de comparar 2 doubles e então essa comparação é correta. Outra forma de solucionar o problema é fazendo um cast desta forma: #include <stdio.h> int main() { float f = 3.14; if (f == (float)3.14) printf( "igual"); else printf( "diferente"); return 0; } Nesse caso estamos informando que o valor literal 3.14 dentro do if trata-se explicitamente de um float, e não de um double, que é tomado de forma não transparente ao usuário(implicitamente) por não expor de forma clara de que tipo de dado o usuario quer que tome a literal já que 3.14 pode ser tanto float como double, e o compilador toma como double se o usuario não indicar que é float ou outra coisa, já que pode ser char, int, etc. >_< Pode ser feito tambem if (f == 3.14f).
-
#include <iostream> #include <list> using namespace std; int main ( void ) { //Declaração de variáveis. list<int> L1[3]; list<int>::iterator it; list<int> *P1; int i, j; //Inicializa as três listas. for ( i = 0; i < 3; i++ ) { for ( j = 0; j < 4; j++ ) { L1[i].push_back ( j ); } } L1[2].pop_back(); P1 = L1; for ( i = 0; i < 3; i++ ) { for ( it = (*( L1 + i )).begin(); it != (*( L1 + i )).end(); it++ ) { cout << *it << endl; } cout << endl; } return 0; }
-
Onde ta a função criatela? Se ficar soltando código a conta gotas fica difícil lhe ajudar >_<
-
#include <stdio.h> #include <stdlib.h> #include<windows.h> int main() { char textogame ( char text[100] ); textogame ( (char*)"Hello world" ); return 0; } void textogame ( char text[100] ) { int i; for ( i = 0; text[i] != '\0'; i++ ) { printf ( "%c", text[i] ); if( text[i] != ' ' ) Sleep ( 1000 ); } } Lembre que toda string tem o caracter '\0' que indica o fim da palavra/frase, em teoria vc deve imprimir por enquanto text for diferente a '\0'. E uma modificação que acho mais atraente é pausar somente quando a letra for diferente de um espaço. if( text[i] != ' ' ) Sleep ( 1000 );
-
Fica meio difícil lhe ajudar sem saber o que vc ta querendo fazer não acha?
-
Digrafo e grafo contruir matriz
pergunta respondeu ao rhiancb de vangodp em Tutoriais & Dicas - C, C++
Isso dai é algo complicado de explicar vei. Da uma olhada ai e se tiver alguma duvida entre aqui e pergunte. -
#include<stdio.h> #include<string.h> #include<stdlib.h> char* invchar ( char str[10], char *str2 ) { int a = 0, i = 0; // rafael // 012345 for ( i = ( strlen ( str ) - 1 ); i >= 0; i-- ) { str2[a] = str[i]; a++; } return str2; } int main() { char str2[10], str[10]; printf ( "digite a palavra a ser invertida" ); gets ( str ); printf ( "o inverso eh %s", invchar ( str, str2 ) ); } vc ta retornando um char e o especificador %s espera char*
-
vc tem varias formas de declarar múltiplas variáveis. //Normal int a; int b; int c; ... Ou pode fazer isso na mesma linha: int a, b, c... O fato que faço: int maior=0, a,b,c,d,e; não quer dizer que a maior eu atribui o valor de a,b,c,d, e. quer dizer que declarei maior, a,b,c,d,e porem só dei valor inicial a maior. Em outras palavras fazer int maior=0, a,b,c,d,e; é a mesma coisa que fazer: int maior; maior = 0; int a; int b; int c; int d; int e; Porem em uma só linha. E não é a unica forma... olhe essa: int maior = 0, a, b, c, d, e; Não confunda declaração com atribuição. ;)
-
vc pode declarar uma variável chamada int maior = 0; Dai vc lê por exemplo a variavel int a com scanf igual vc está fazendo, depois de ler faça o seguinte: if(a>maior) maior = a; Logo repita para a variável b, depois c... Por ultimo a variável "maior" vai conter o maior numero. int maior=0, a,b,c,d,e; scanf("%d", &a); if(a>maior) maior = a; scanf("%d", &b); if(b>maior) maior = b; ... repita para todas as variáveis. Logo por ultimo imprima "maior".
-
vc podia facilitar explicando o que vc espera que seu programa faça, fica difícil para alguns entender o que vc quer.
-
é a mesma coisa, a formula é a mesma. se vc tem um numero: int n1 = 22; vc aplica a formula: if (n1 % 2 == 0) printf("%d", n1); faça isso para os 5 numeros. E para o impar: int n1 = 33; if (n1 % 2 != 0) printf("%d", n1); Vc tem que pensar que "if (n1 % 2 == 0) printf("%d", n1)" é como dizer: Se o resto da divisão de n1 dividido por 2 é igual a zero então imprime porque é par. E "if (n1 % 2 != 0) printf("%d", n1)": Se o resto da divisão de n1 dividido por 2 for diferente de zero então imprima pq é ímpar. Entendeu? Vc pode ler unsigned int a, b, c, d, e... e fazer isso que expliquei antes para cada um deles. Faça a prova e me diga como foi. ;)
-
vc deve usar arrays. Para poder ler 5 numeros: #include<stdio.h> int main() { int array[5] = {0}; //Reservando memoria para 5 inteiros que iniciam com o valor de 0 int i; //pedindo 5 numeros for (i = 0; i<5; i++) { printf("Entre com o %d\xA7 numero: ",i+1 ); scanf("%d%*c", &array[i]); } getchar(); // pausa return 0; } Agora para poder imprimir pares ou impares devemos usar o operador modulo %. O operador modulo retorna o resto de uma divisão, é dizer se eu faço 11/2 a resposta é 5, mas se faço 11%2 a resposta é 1, se o numero for par, qualquer numeroPar % 2 será igual a zero, ou seja n4ao há resto, então: if(numero % 2 == 0) imprime par E if(numero % 2 != 0) imprime ímpar #include<stdio.h> int main() { int array[5] = {0}; //Reservando memoria para 5 inteiros que iniciam com o valor de 0 int i; //pedindo 5 numeros for (i = 0; i<5; i++) { printf("Entre com o %d\xA7 numero: ",i+1 ); scanf("%d%*c", &array[i]); } //imprime pares printf("Pares: "); for (i = 0; i<5; i++) { if(array[i]%2==0){ printf("%d ", array[i]); } } printf("\n\n"); //Imprime impares printf("Impares: "); for (i = 0; i<5; i++) { if(array[i]%2!=0){ printf("%d ", array[i]); } } printf("\n"); getchar(); // pausa return 0; } Guarde esse exemplo e recorde: Qualquer numero % 2 e o resultado sobrar 0, ou seja, for igual a zero, é par, se não é ímpar.
-
use um laço for que funcione até 20 e ponha dentro o printf. Imprima o índice i que vc usa no laço for como contador 40 vezes para os numero pares, e cada vez que imprimir faça dentro do for if(i%2==0) imprimir i(imprime i somente se for par). E para os números ímpares a mesma coisa, if (i%2!=0) imprimir i(imprime i somente se for ímpar), faça isso 50 vezes. Não entendo o que vc quer. Pode explicar melhor?
-
Aplicativo em C/C++
pergunta respondeu ao Andre Fellipe Lima de vangodp em Tutoriais & Dicas - C, C++
vc pode perfeitamente fazer isso em java. Agora se vai ser uma aplicação web então HTML, CSS, javascript, php... -
Não sei em outros linguagens mas em C/C++ se começa contando desde 0 até o numero indicado. Por exemplo... se temos um vetor de 100 casinhas começamos a contar desde 0 até 100 menos 1, porque de 0 a 99 são 100 valores os que guarda o vetor. Então se eu declaro um vetor tal como int vetor[100] eu tenho que ler desde vetor[0] até vetor[100-1] que é vetor[99]. Compreendeu? vetor// char vetorInt[6] = {'a','e','i','o','u','\0'}; //leva NULL pq toda string leva NULL ao final Ou como isso é uma string tambem podemos fazer: char vetorInt[6] = "aeiou"; // Nesse caso não precisa por NULL pq o programa ja coloca NULL por vc. //vetor de ints ou floats/doubles etc int vetor[5]={1,2,3,4,5}; float vetor[5]={1.1,2.2,3.3,4.4,5.555}; //Matriz char matriz1[3][6]= { {'a','e','i','o','u','\0'},{'a','e','i','o','u','\0'},{'a','e','i','o','u','\0'} }; char matriz2[3][6]= { {"aeiou"},{"aeiou"},{"aeiou"} }; char matriz3[3][6]= { "aeiou","aeiou","aeiou" }; //vetor de ints ou floats/doubles etc. int matriz[3][5]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}}; float matriz[3][5]={{1.1,2.2,3.3,4.4,5.555},{1.1,2.2,3.3,4.4,5.555},{1.1,2.2,3.3,4.4,5.555}}; Se inicializar apenas uma parte de um array o resto fica null: char matriz1[3][6]= { {'a','e','i','o','u','\0'}}; é como se fosse: char matriz1[3][6]= { {'a','e','i','o','u','\0'},{'\0','\0','\0','\0','\0','\0'},{'\0','\0','\0','\0','\0','\0'} }; Em fim... certamente existe algumas formas mais de inicializar uma matriz e um vetor, como por exemplo a nulos completamente: char vetor[6]= {0}; char matriz[3][6]= {0}; Eu só coloquei as mais tradicionais. Um array/matriz de vetores também pode inicializar a nulos como na forma anterior. Busque por intenrnet e investigue sobre o tema. pense que uma matriz é como as paginas de um livro. Nessa pagina vc tem varias linhas, por exemplo 10: char matriz[10][...] E cada linha tem 100 letras: char matriz[10][100]; Se eu quero guardar uma palavra na linha 3 eu faço strcpy(matriz[2], "Ola"); //Em C e C++ Ou tenho que ir indicando uma a uma as letras: matriz[2][0]='O'; matriz[2][1]='l'; matriz[2][2]='a'; matriz[2][0]='\0'; // Sempre deve terminar em null Acho que da para fazer uma ideia de como funciona não? Se ainda tiver duvidas pode entrar em https://discord.gg/CtfUywV. É um chat grupal onde tem uns quantos programadores que podem lhe ajudar.
-
Se vc declarar a estrutura tal como: struct Clientes clientes[50]={0}; Todos os campos estarão estabelecidos a nulos. Se vc comparar o nome com "" vc saberá que não ha nome, e a consequência essa casinha estão vazia. #include<stdio.h> #include <string.h> #include <locale.h> struct Clientes{ char nome[255]; int cpf; char telefone[50]; }; int main(){ setlocale(LC_ALL, "portuguese-brazilian"); struct Clientes clientes[50]={0}; // tudo a nulos if ( strcmp( clientes[0].nome, "" ) == 0 ){ //Compara o nome da primeira casinha de com uma literal de nulos printf("Nome vazio"); // Se entrar aqui é que o nome esta vazio. } return 0; } Então a coisa é manter todas as posições que não estiver usando formatadas, para poder saber se por exemplo o nome não foi seteado ainda.
- 1 resposta
-
- bubblesort em vetor de struct
- c
-
(e %d mais)
Tags:
- bubblesort em vetor de struct
- c
- vetor
- vetor de struct
- ordenar
- ordenar vetor
- ordenar vetor de struct
- bubblesort
- bubblesort em c
- bubblesort em vetor
- bubblesort em vetor de struc
- c++
- java
- html
- batman
- estrutura de dados
- algoritimo
- busca e ordenação
- estruturando dados
- ordenando o vetor
- ajuda
- como faço
- como faço para ordenar um vetor de struct
-
Usar variáveis globais pode parecer tentador mas não se engane. Use sempre que possível os parâmetros.
- 3 respostas
-
- duvida em funções em c
- bubblesort
- (e %d mais)
-
Poder pode, que seja uma boa ideia, em absoluto que não. Vc deve sempre usar os parâmetros para passar dados. A struct deveria estar criada dentro de main, e vc deveria passar ela por referencia. Em main criamos o array assim: struct Clientes clientes [50]; E se tivermos uma função que receba os parâmetros tipo: void func(struct Clientes *clientes){...} Devemos invocar a função passando o array dessa forma: func(clientes); Pois a função espera a direção da lista(primeiro objeto da lista). É equivalente a func(&clientes[0]);
- 3 respostas
-
- duvida em funções em c
- bubblesort
- (e %d mais)
-
O que esta pedindo é primeiro reservar memória através da primeira função invocando a mesma, quando retornar a main vc faz a leitura de n elementos que vc reservou e posteriormente vc passa o vetor junto com o tamanho n para a segunda função que imprime. nada complicado exceto pela forma complicada de se explicar. Não se esqueça de liberar a memória liberada. int n; ler n; int *v = reservar(n); ler n numeros imprimirVetor(v, n); free(v); return 0; Esse seriam os passos.
-
todos os ifs devem ser algo como: if(erros < 1 && resposta == 1 ){ acertos++; } else{ erros++; }
-
Error Id returned 1 status
pergunta respondeu ao Aline Linny de vangodp em Tutoriais & Dicas - C, C++
A função Troca não está implementada. -
#include <stdio.h> #include <stdlib.h> #include <string.h> int main (){ char op[30]; printf("Vamos ser amgs?: "); scanf("%s", op); if (strcmp(op, "sim")==0){ printf("Legal! Seremos amiguchos.\n"); }else if (strcmp(op, "nao")==0){ printf("=(\n"); }else{ printf("Opcao invalida.\n"); } system("pause"); return 0; } Em vez de ter 2 arrays vc deve ter apenas um. O array vai conter "sim" ou "nao", ou pode que outra coisa se o usuário introduzir outra resposta, mas somente vai conter uma resposta das tres. Após ler a resposta então faremos a comparação usando a função strcmp que pertence a biblioteca string.h. A strcmp serve para comparar 2 strings e se forem identicas a função retorna zero por isso se averigua strcmp(op, "sim")==0, se op conter "sim" strcmp retorna zero, que no caso vai ser comparado com ==0 e isso vai gerar um true entrando no if que contem "Legal! Seremos amiguchos.\n".
-
Não entendi nada >_<