-
Posts
1.558 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que isrnick postou
-
A ideia do @arfneto seria ter uma matriz de tamanho 90x90 na memória mas só usar uma parte dela, ou seja usar a parte que interessa para as dimensões escolhidas pelo usuário.
-
Desculpa indiquei a função errada... strcmp é para comparar strings... strcpy e strncpy são as funções para copiar strings. Então na verdade seria assim: //Copia a string do vetor nm para o vetor NovoElemento->nm: strcpy(NovoElemento->nm, nm); //Copia a string do vetor ab para o vetor NovoElemento->ab: strcpy(NovoElemento->ab, ab);
-
A funcionalidade do jogo no Windows me parece ser a mesma da proposta no enunciado. No campo minado do Windows você deve clicar com o botão direito do mouse para marcar uma posição com a bandeira onde acha que tem uma mina, aí não tem risco de clicar por engano e detonar a mina marcada, porque não dá pra clicar na casa marcada, e também vai subtraindo do número de minas ainda não descobertas. Sempre funcionou assim mas é normal não saber, a muita gente que já jogou não sabe.
-
Aí está o problema, essas atribuições não fazem o que você deseja (na verdade nem existe índice 20 nesses vetores, os índices nesse caso vão de 0 a 19, e na segunda linha também está errado, deveria guardar em NovoElemento->ab). Em C não dá para copiar um vetor inteiro fazendo uma atribuição com =, é necessário copiar o valor de cada posição do vetor, um por um. Mas no caso de vetores de caracteres contendo strings já existe a funções para copiar, no caso strcmp() e strncmp() que faz parte da biblioteca string.h então para usar deve incluir essa biblioteca. Nesse caso ficaria assim: #include <string.h> . . . //Copia a string do vetor nm para o vetor NovoElemento->nm: strcmp(NovoElemento->nm, nm); //Copia a string do vetor ab para o vetor NovoElemento->ab: strcmp(NovoElemento->ab, ab);
-
A struct Playlist_Musica está definida como? Não tem nada que pareça estar errado nesse printf, O mais provável é que ElementoVarredura esteja apontando para algo errado ou então esses dados não estejam sendo guardados corretamente na lista.
-
O que você está tentando fazer nessa linha? ElementoVarredura = Head; Você acabou de fazer o ponteiro ElementoVarredura apontar para um endereço de um espaço da memória reservado com malloc na linha anterior, mas imediatamente em seguida faz ele apontar para outra coisa? Não entendi...
-
Usando unsigned long long dá pra calcular até 20! corretamente: #include <stdio.h> int main(){ unsigned long long fat; unsigned int i; fat = 1; for (i = 1; i < 25; i++){ fat *= i; printf("Fat %u = %llu\n", i, fat); } return 0; } Teste aqui: https://onlinegdb.com/ByGT8-gkH
-
Eu fiz um campo minado um tempo atrás, até postei aqui no fórum na resposta em um tópico que o autor também postou outro código de campo minado: Mas usei uma lógica diferente da proposta no enunciado do seu trabalho, não marca os campos como possíveis minas por exemplo.
-
C++ Como fazer um programa que leia um numero decimal e converta ele em hexadecimal
isrnick respondeu ao tópico de Enzo Octaviano em C/C#/C++
Como o @KXSY falou, a própria linguagem já tem recursos para imprimir um número inteiro na base hexadecimal. No caso do C basta usar %x ou %X como especificador de tipo no printf: #include <stdio.h> int main() { printf("\n%d\n", 123); printf("\n%x\n", 123); printf("\n%X\n", 123); return 0; } Mas como o título do seu tópico diz que é sobre C++, então bastaria usar std::hex para mudar a base: #include <iostream> int main() { std::cout << 123 << "\n"; //base decimal é o padrão std::cout << std::hex << 123 << "\n"; //hexadecimal std::cout << std::hex << std::uppercase << 123 << "\n"; //hexadecimal maiúsculo std::cout << std::dec << std::nouppercase << 123 << std::endl; //volta para a base decimal e desfixa o maiúsculo //Ou então: using namespace std; cout << "\n" << dec << 123 << "\n"; cout << hex << 123 << "\n"; cout << hex << uppercase << 123 << "\n"; cout << dec << nouppercase << 123 << endl; return 0; } Mas se a ideia é programar o cálculo da conversão de bases e depois imprimir o resultado em hexadecimal, então isso não serve para o seu caso. -
Use: scanf(" %40[^\n]", livro[cont].tit); No lugar de: gets(livro[cont].tit); scanf com %s não vai ser suficiente pra substituir o gets, pois só vai capturar a primeira palavra ao invés da frase inteira, para isso deve do especificador %[ como mostrei, capturando qualquer caractere exceto o caractere nova linha '\n'. Também precisa limitar o número de caracteres, nesse caso captura até 40 caracteres, do contrário cai no mesmo problema de usar gets que poderia causar estouro do tamanho máximo que o vetor de caracteres pode armazenar.
-
Teste colocar um espaço antes do %c nas strings dos scanfs para descartar os caracteres brancos que vierem antes da letra digitada. Ex: scanf(" %c",&sair_pes);
-
Pois é... Não existe fila na biblioteca padrão da linguagem C, você precisa implementar sua própria fila para depois usá-la, ou então usar uma biblioteca ou código de terceiros que já tenham programado filas em C.
-
FindFirstFile, FindNextFile e FindClose não são modernos, fazem parte da Win32 API que já está aí desde 1995. Agora que <filesystem> faz parte da biblioteca padrão do C++, ela é a melhor opção disponível atualmente para funcionar em todas as situações e ser portável, pois não precisa lidar com versões corretas de bibliotecas para cada compilador, e não depende do sistema operacional utilizado.
-
@arfneto Esta parte que quotei é a sessão do readme do github onde o autor mostra alternativas ao dirent, eu estava comentando que o próprio autor menciona que o MinGW e Cygwin usam outros API que não são o dirent programado por ele.
-
@arfneto Segundo a própria página do github do T. Ronkko a versão dele foi uma "versão portada para Windows" que ele fez da dirent.h original feita para Linux/UNIX. Ele também diz que fez isso pois na época não haviam muitas alternativas, mas menciona que hoje em dia existem boas alternativas, e aponta o MinGW e o Cygwin como alternativas pois permitem compilar programas UNIX no Windows (ou seja, ele sugere que poderia compilar a dirent.h original do Linux/UNIX diretamente, ao invés de uma a versão portada para Windows), e ele também aponta que ambos já fornecem a API dirent completa como parte do pacote, além de várias outras APIs do Linux/UNIX.
-
C Eliminação de espaços em branco (strings) - Em linguagem C
isrnick respondeu ao tópico de Gabriel Bombardelli em C/C#/C++
Nesse caso ele copiaria apenas o primeiro dos espaços repetidos. Mas não é a mesma coisa, pois i começa igual a 0, e nesse caso i-1 = 0-1 = -1 e não existe índice negativo. (Esse problema aconteceria na situação em que o primeiro caractere da string for um espaço ' '). -
C Eliminação de espaços em branco (strings) - Em linguagem C
isrnick respondeu ao tópico de Gabriel Bombardelli em C/C#/C++
Índices das posições nos vetores na linguagem C começam com índice 0, logo i e j devem ser inicializados com valor 0 na função (e no for). Uma maneira seria fazer algo assim: Trocar: if(s[i] != ' '){ Por: if(s[i] != ' ' || s[i+1] != ' '){ adicionado 3 minutos depois Assim ele só copia o último dos espaços repetidos. -
Seu programa usa várias funções repetidas quando poderia usar apenas uma: int mes(int a, int ndias) { int i, j, mes[5][7], k = 1; if (a == 0) a = 7; for (i = 0; i < 5; i++) { for (j = 0; j < 7; j++) { if(k < ndias + 1 && (i*7 + j + 1) >= a){ mes[i][j] = k++; } else mes[i][j] = 0; } } printf("Dom Seg Ter Qua Qui Sex Sab\n\n"); for (i = 0; i < 5; i++) { for (j = 0; j < 7; j++) { printf("%3d ", mes[i][j]); } printf("\n"); } } E poderia chamar a função assim: if((m%2)&&(m<9)||(m%2==0)&&(m>=8)) { mes(x, 31); } Edit: adicionei a correção ao if ...
-
if(k<30 && (i*7 + j + 1) >= a){ Corrigi...
-
C Eliminação de espaços em branco (strings) - Em linguagem C
isrnick respondeu ao tópico de Gabriel Bombardelli em C/C#/C++
O enunciado como você postou implica que a string deve ser alterada de fato, na memória, ao invés de apenas imprimir na tela sem os espaços extras, mas se for apenas para imprimir na tela com apenas 1 espaço então pode seguir uma lógica parecida sim... adicionado 10 minutos depois Se puder criar outra string que copia a string original eliminando os espaços repetidos então também dá pra usar esse método. -
Sim mas pode converter 0 para 7 fazendo um simples: if (a == 0){ a=7; }
-
C Eliminação de espaços em branco (strings) - Em linguagem C
isrnick respondeu ao tópico de Gabriel Bombardelli em C/C#/C++
Acho que não vai servir, o programa no livro apenas imprime outro caractere no lugar onde haveria um espaço, a string nem é alterada, apenas é impressa com caractere diferente na tela. Mas pelo que entendi o seu programa deve receber uma string que pode conter espaços duplicados, como: "minha mae mandou eu" E eliminar os espaços repetidos deixando 1 espaço só em cada lugar: "minha mae mandou eu" -
O fórum sumiu com todos os [ i ] sem espaços do seu código, pois para o fórum isto é a tag para deixar o texto em itálico (note que o texto está em itálico a partir do primeiro lugar onde deveria será o [ i ]). Leia minha assinatura abaixo para ver como postar código corretamente no fórum, e evitar que o fórum faça alterações nele. Onde está? É esse valor que vem como parâmetro na variável int a? Se sim, poderia mudar esse if: if(k<30){ para if(k<30 && (i*j + j + 1) >= a){ Mas antes precisa fazer 7=sábado ( if (a == 0) a=7; ).
-
C Intercalando dois vetores em ordem crescente
isrnick respondeu ao tópico de Estudante0123 em C/C#/C++
for (int i =0; i < tamanho_3; i++){ if (k >= tamanho_2){ vet_3[i] = vet_1[j]; j++; } else if (j >= tamanho_1){ vet_3[i] = vet_2[k]; k++; } else if (vet_1[j] < vet_2[k]){ vet_3[i] = vet_1[j]; j++; } else { vet_3[i] = vet_2[k]; k++; } } -
Nos colchetes o índice está escrito "maoir" ao invés de "maior". Leia a mensagem de erro ela costuma dar uma boa ideia de onde está o problema.
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