Ir ao conteúdo
  • Cadastre-se

1freakday

Membro Pleno
  • Posts

    667
  • Cadastrado em

  • Última visita

Tudo que 1freakday postou

  1. 1freakday

    C++ erro na compillação

    Sim, no caso você só precisa usar #include "grade.cpp" no arquivo com a função main()
  2. 1freakday

    C++ erro na compillação

    Então, nesses códigos que você mandou não há erros de duplicação e sim de ortografia, como em: getNumLinha(HPP) e getNumlinha(CPP) getCoordenadaY(HPP) e getCoordenadaX(CPP) < duplicado...
  3. 1freakday

    C++ erro na compillação

    Poderia postar o seu código em <code> e postar o conteúdo do arquivo grade.hpp?
  4. 1freakday

    C Listar em UI

    Para isso você só precisa fazer um teste para verificar se o arquivo já existe, usando uma função como essa: //Retorna o índice existente //padrão do arquivo: arquivo.1.txt arquivo.2.txt etc //o parametro indi determina onde começar, supondo que você queira começar de arquivo.55.txt //use indice(55); int indice(int indi){ FILE *f = NULL; char arquivo[20]; indi = (indi > limite ? 0 : indi); for(; indi < limite; indi++){ //monta caminho do arquivo sprintf(arquivo, "arquivo.%d.txt",indi); //se arquivo existe if((f = fopen(arquivo, "r") != NULL){ fclose(f); break; } } //retorna indice encontrado return indi; } Depois que retorna o índice, é só você abrir o arquivo através dele ou com algumas mudanças no código acima, você pode procurar um que não existe... P.s: É só um código improvisado, mas a lógica para encontrar o arquivo através de um índice é assim, é claro que existe outras funções para fazer isso, como stat, acesss, etc., mas essa é uma visão mais clara de como fazer.
  5. 1freakday

    C Listar em UI

    Você poderia criar um arquivo extra, um que fique na pasta raiz do programa ou do projeto, tal qual possui todas listas(arquivos) criadas, assim, você abre esse arquivo e vai ter todos os locais dos outros arquivos, só abrir eles depois... Exemplo: Temos a pasta da loja na pasta do programa. Dentro da pasta loja tem o arquivo: lista_de_arquivos.txt e a pasta produtos. Dentro da pasta produtos tem todos arquivos dos produtos, como: lapis.txt caneta.txt No arquivo lista_de_arquivos.txt vai estar assim: ./produtos/lapis.txt ./produtos/caneta.txt Então quando seu programa ler o arquivo lista_de_arquivos.txt ela já vai saber onde foi criado um arquivo de produto. Logo nos arquivos lapis e caneta, você pode por o nome, preço, etc... Agora, para adivinhar um arquivo que está em estoque, é complicado, você poderia criar um índice/padrão para salvar os arquivos e abrir, como produto_1 / produto_2 / e assim vai, ai vai procurando a partir desse índice. Espero ter ajudado :}
  6. 1freakday

    C Menu selecionável

    Acredito que usando thread ou signal... Mas isso depende, você quer fazer em qualquer parte e qualquer momento da execução do programa? Se sim, thread ou signal resolvem... caso contrário é só identificar o valor de esc e dar um continue no loop...
  7. Pequeno erro scanf("f", &temperatura); apenas adicionar %f scanf("%f", &temperatura);
  8. 1freakday

    C Menu selecionável

    @Xaws Quase la, no caso ele quer usar setas direcionais, até usando o getch poderia ser feito, é só identificar no momento que o usuário apertar as setas... Enfim, fiquei tentando fazer esse código e acabei criando uma solução, pelo menos funcionou no meu pc, como eu usei o bash do ubuntu troquei getch por getchar, segue: #include <stdio.h> int main(){ char txt[2],x; printf("Digite uma direcao: \n"); x = getchar(); //Obtem a tecla scanf("\r%s",txt);//Obtem a linha x = txt[1]; switch(x){ case 'A': printf("CIMA!!\n"); break; case 'D': printf("ESQUERDA!!\n"); break; case 'B': printf("BAIXO!!\n"); break; case 'C': printf("DIREITA!!\n"); break; default: printf("Direcao nao identificada!\n"); break; } return 0; } Como funciona??? O usuário "digita" a seta em x = getchar(); tal qual dá um valor na tela como ^[[A então o scanf("\r%s",txt) pega essa informação na linha e x = txt[1] pega apenas A. ---------------------------------------------------------------------------------------------------------------------------------- P.S, o código esta funcionando apenas para pegar a informação certa sempre quando o usuário for digitar no começo da linha, caso você use uma linha como: 1)Digite a seguir a seta: <aqui é a seta> (sem dar \n o usuário digita aqui e aparece ^[[A) Se for usar em loop, troque: x = txt[1]; por x = txt[2];
  9. Só dando uma contribuição, caso deseja começar a programar para windows em gráfico, é necessário saber C e C++. Atualmente o Windows 10 já possui frameworks gratuitas para programar aplicativos para o computador. Mas se quiser dar uma de "old school", C++ em conjunto com bibliotecas gráficas, irão proporcionar conhecimento necessário para criar programas específicos. A WinAPI é muito básica, porém complicada, então caso queira saber criar janelas, botões, etc., no estilo windows 7, use WinAPI. Portanto, as bibliotecas gráficas já mencionadas, como a QT, são as mais usadas atualmente e oferecem muitas funcionalidades. Enfim, manipular pixel depende muito de loops, funções, matrizes, pilhas, arquivos, essa "coisas básicas", pois tais itens são o núcleo de um programa,e num jogo básico, um fps é medido dentro de um loop, funções são criadas em conjunto de bibliotecas para processamento de imagem, pilhas são ótimas para armazenar imagens ou informações de um jogo, arquivos são importantes aliados na configuração e memória, etc...
  10. Boa tarde, então, pouco depois de você postar eu ia responder mas travou o note kk, enfim, segue minhas dicas: 1)Fazer o tamanho do vetor ficar dinâmico usando malloc você pode alocar dinamicamente o tamanho do vetor, porém existem diversas formas de fazer isso, como: char *alocar(int tam){ return((char*)malloc(sizeof(char)*tam)); } char *palavra = alocar(5); A saída é de um vetor com o tamanho determinado na variável tam. Perceba que se a palavra for maior do que tam, é necessário determinar seu fim usando '\0' na ultima letra. x[tam] = '\0'; Essa é uma das formas, como você também pode fazer tudo isso no escopo da função main. Também pode fazer a função acima, pedindo o tamanho para o usuário, ou criando uma string temporária, e usando o strlen para obter o tamanho a ser usado. 2)Função para comparar a existência da palavra dentro do alfabeto digitado. Vou esboçar bem rápido, 1 você tem um alfabeto com x de letras e 2 você tem uma palavra com y de letras. Usando uma função igual a de uma matriz, apenas mudando a letra da palavra/alfabeto é possível analisar todas letras: // LOOP Y que seleciona letra da palavra for(y = 0; y < tam_palavra; y++){ // LOOP X que seleciona letra do alfabeto e compara com LOOP Y for(x = 0; x < tam_alfabaeto; x++){ if(alfabeto[x] == palavra[y]) ... } }
  11. Boa tarde, provavelmente o buffer está sendo usando no segundo getchar(), então, ou você usa fflush ou você usa um getchar antes de system("clear"); Assim: ... getchar(); system("clear"); printf("Qual o tipo de cliente?\n1-Idoso\n2-Parceiro\n3-Comum\nTipo: "); T= getchar(); ...
  12. Tenta usar o scanf apenas para obter os inteiros pois quando usa letras ou simbolos no scanf ele usa como parte o valor recebido, use em todos: scanf("%i", &QP);
  13. Boa noite, nesse caso não é necessário usar if, apenas faça o cálculo e mostre o resultado. Porém, veja o que acontece quando você faz isso: if (AF = ST/ C), você está executando o programa nessa ordem: 1) o if executa a operação em vez de verificar uma condição. 2) ST divide por C (operação) 3) AF obtém o resultado de ST/C (operação) você poderia executar normalmente acima, mas é inutil, a não ser que você use o AF posteriormente ou/e tenha uma condição no if, como: if((AF = ST/C) <= 5){ if( AF == 5 ) {...} } Enfim, tire os if's e use normalmente: C = QLA / QP; printf("Consumo efetuado é de: = %i lts/km \n", C);// Se usar & ira mostrar o endereço não o valor ST = CT - QLA; printf ("Sobrou %i: L de combustível no tanque", ST); AF = ST/ C; printf ("Autonomia que ainda teria é de: = %i \n", AF); P.S: Respondi, presumindo que os cálculos estavam certos...
  14. Boa noite, analisando a questão já da pra fazer muita coisa, sempre use uma IDE que tenha a documentação da função assim nem irá perder tempo ( como o CodeBlocks ). Ou caso você tenha Windows 10, ative o Subsistema Linux e use o comando man <função> no terminal Bash, ajuda muito. Portanto, o fork() ira gerar os processos, sendo que a chamada requer uma variável para obter o PID do processo, no entanto, quando você chamar a função já ira gerar o processo, e as demais funcionalidades serão usadas a partir desse PID. Exemplo de chamada: int pid_pai; pid_pai = fork(); Se pid_pai < 0 = falhou Ou pid_pai > 0 = sucesso - pid_pai contem o PID do processo gerado.
  15. Boa noite, ao usar //printf(agen[contador].nome); você obteve alguma resposta no console?
  16. Desencriptador de arquivos, existem muitos tipos de criptogramas, portante é necessário definir que tipo de criptografia você quer descriptografar (md5, etc). Caso você tenha um algorítimo próprio, nos mostre.
  17. int main () { int i, max = 20; // pode usar variavel ou pode usar #define max 20 int vetor[max]; // vetor de 20 int em malloc: (sizeof(int)*20) printf("DIGITE 20 NUMEROS REAIS\n"); //tamanho do vetor na verdade //scanf ("%d", &vetor[max]); isso não é usado fora do loop for (i = 0; i < max; i++) { /* Lê cada indice do vetor */ scanf ("%d",&vetor[i]); } /* Dentro dessa função o vetor será ordenado */ /*void*/ bubble_sort(vetor, max); //Aqui não vai o void return 0; } O erro ocorreu, por que você tentou usar o índice max no vetor, pois o mesmo é inexistente, sendo que se um vetor é declarado com 20, os índices serão de 0 a 19.
  18. Troque int max = [20]; por int max[20]; na linha 33
  19. Boa noite, então, como sempre repetimos aqui, quem postar precisa dar uma prova de que está tentando, assim dificulta mais pra vocês do que pra nós (membros) , por que ninguém aqui vai dar uma resposta pra alguém que posta um texto desses, sem formatação, nem código. Até por que quando alguém posta uma dúvida com um código, outro programador pode passar olhando e já completa o resto do código, mais por desafio do que por ajudar, mas só texto assim é 'brabo'. Como eu tenho o intuito de ajudar e não apenas "esculachar", vou lhe mandar o rascunho básico para seu programa (Cada paragrafo é um passo): 1) Programa recebe dados ( cédulas e moedas) 2) Programa imprime dados acumulados no display (1) O programa precisa receber as cédulas, usando as teclas 'm' ou 'c': Nessa parte do código, logo após declarar todas variáveis necessárias, usadas para armazenar os dados, você cria um loop while ou do...while para receber a tecla do 'COMPRADOR' ( usuário ), usando a função getch() ou getchar() simplifica tudo. Após o código acima: Use um switch ou if para identificar a letra e receber os valores ( no caso moedas para m, e cédulas para c) Depois de obter os valores, crie uma função com menu em while, para o COMPRADOR escolher o produto. Ainda nessa função de menu, use um if para verificar se o usuário tem dinheiro suficiente na máquina, se tiver, incremente os valores dos dados acumulados da variável(2) Se ele comprar, é preciso dar o troco, então crie uma função para calcular o troco. (2)O programa imprime os dados sempre antes de o usuário decidir colocar as moedas. Então simplesmente, utilize uma variável para contar as moedas, outra para contar as cédulas, e quando for mostrar usando printf, envie o 'conteúdo' dessas variáveis. Na escolha do produto, você pode reutilizar a função do (1), usando getch, e switch Segue alguns links para o básico de C: http://www.ufjf.br/petcivil/files/2009/02/Apostila-de-Introdução-à-Linguagem-C.pdf http://www.comp.ita.br/~pauloac/ces10/capitulo04.pdf(Pagina 9) https://www.ime.usp.br/~slago/slago-C.pdf
  20. Boa noite@ivanmax , é exatamente o que o moderador @DiF disse, precisa de um código, para poder ajudar, contanto vou lhe dar as informações que são necessárias para criar o código, e não o código em si, segue: Para criar esse código, onde cada elemento é a soma dos dois elementos anteriores, é necessário o uso de um for, e 3 variáveis int. Segue: int numA = 0, numB = 1, r = 0; //Precisa inicializar assim Esse for, terá a condição de finalizar até o elemento 30. Porém ele serve apenas para o loop, Exemplo: for(int i = 0; i < 30; i++) Preste atenção a lógica agora: Dentro do for, use: a ) a variável r obtêm a soma de numA e numB.( r = numA+numB ) b ) a variável numA obtém o valor de numB( numA = numB ) c ) a variável numB obtém o valor de r.( numB = r ) d ) Por fim, é só dar printf, tanto faz se você mostrar o valor de numA e r. -- Output -- numA | r -------------- 0 | 1 1 | 1 1 | 2 2 | 3 3 | 5 5 | 8 PS: Se quiser mostrar o resultado em negativo, é só declarar numA = -1 e numB = 0
  21. Se seu programa for inteiramente C++, não ha motivos de usar stdio.h, a não ser que você precise usar alguma função dessa biblioteca, contanto use iostream.
  22. Boa noite, então esse simbolo % é usado para obter o resto de uma divisão, sendo que há dois casos: a % b == r // aqui compara o resultado com r ou r = a % b // aqui recebe o resto da divisão a = dividendo b = divisor r = resto No seu exemplo, não há nenhum erro, pois o primeiro FOR é usado para obter os dividendos, e o segundo FOR é usado para obter o divisor, sendo que cada dividendo é usado com todos 50 divisores. Só aconselho a usar da seguinte forma: #include <stdio.h> int main () { int cont1, cont2, div=0; for(cont2=1; cont2<=50; cont2++, div = 0){ for(cont1=1; cont1<=50; cont1++){ if (cont2%cont1==0){ div++; } } //Só é primo se existir 2 ou mais divisores if(div==2) printf ("%i é primo\n",cont2); else printf ("%i não é primo\n",cont2); } } Sempre zere o div, pois é usado mais de um dividendo. Lembrando que div precisa ser exatamente 2, ou 4.
  23. @AdSoNaTuRaL Boa noite, então, acredito que o tempo de execução é sempre a ultima informação a ser 'mostrada' ao usuário, portanto, o printf ficaria antes de return 0; da função main. E no inicio da função main, você iniciaria a contagem da biblioteca time.h. Segue minha versão: #include <stdio.h>//io #include <stdlib.h>//system #include <sys/time.h>//time //(fim*x+ms) - (inicio*x+ms) = tempo #define GET_MS(ini, fim) ((fim.tv_sec * 1000000 + fim.tv_usec) \ - (ini.tv_sec * 1000000 + ini.tv_usec)) struct timeval inicio, fim; int main(){ //Aqui inicia a contagem gettimeofday(&inicio, NULL); //Codigo qualquer.... system("pause"); //Obtem tempo final gettimeofday(&fim, NULL); //Fim de execução printf("Tempo de execução: %ld ms\n\n", GET_MS(inicio, fim)); return 0; } Perceba que é multiplicado por 1000000, para alcançar os segundos. Se você compilar e comparar o tempo de execução com o do compilador, o compilador terá um tempo maior, pois ele conta desde a inicialização, até o encerramento do programa, aqui só conta depois que é executado o gettimeofday inicial, e termina com o gettimeofday final.
  24. É o seguinte @BBC, não sou moderador, porém existe uma certa regrinha, que nos instiga a ajudar alguém apenas quando você compartilha parte do código, tal qual possui um certo problema. Em qualquer caso, nós precisamos de um código para poder lhe ajudar. Enfim, você precisa salvar todos dados? em vez de salvar a struct como arquivo binário? Minha sugestão, no quesito de salvar os dados organizados, é que você salve no arquivo.txt como uma tabela, usando uma coluna para o índice 'filho' que identifica o local na arvore, e outra para organizar os 'valores' (dados em si). É interessante pesquisar sobre 'parsing'. fscanf permite obter os que foram organizados no arquivo.
  25. Boa noite, então, provavelmente você alterou as cores padrão do editor, para desfazer basta ir em: Ferramentas -> Opções -> Fontes e Cores -> Usar Padrões

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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!