Durub
Moderadores-
Total de itens
788 -
Registro em
-
Última visita
Tudo que Durub postou
-
Isso tem a ver com o registrador eax no processador. O último valor que estava nesse registrador é retornado, já que você não tem outro return explícito no caso de não achar nada. O que você tem que fazer é adicionar um return no final da função caso ela não ache o valor no array. Outra coisa, os índices do seu array vão de 0 à 9, não de 1 à 10. No C, os índices dos arrays começam no 0.
-
Se você quiser esse nível de controle sobre o processo, seria ideal você utilizar a função CreateProcess do Windows. Depois, para esperar ele terminar, usa a função WaitForSingleObject. WaitForSingleObject(HandleDoProcesso, INFINITE);
-
A malloc funciona assim: você cria um ponteiro para uma região de memória, ainda indefinido. int *vetor; Só que, esse ponteiro não aponta para nada! Um ponteiro tem que apontar para alguma coisa. O que você faz? Você pede pro sistema operacional uma região de memória para usar. A única coisa que você precisa passar para a função malloc é o tamanho, em bytes, que você deseja. Ela retorna NULL (em caso de erro) ou um ponteiro válido, que você vai colocar no ponteiro criado anteriormente. (int *vetor) int *vetor; vetor = malloc(n); /* isto deve ser feito depois de o programa ter lido o n do usuário */ if(vetor == NULL) { /* erro */ } /* aqui você pode usar a variável vetor como se fosse uma array normal */ /* não se esqueça de liberar a memória quando você não precisar mais utiliza-lá */ free(vetor); return; Quaisquer dúvidas, fique à vontade!
-
int vetor[n]; Essa linha é o problema. Não é assim que funciona para alocar arrays com tamanho dinâmico. Veja sobre a função malloc da stdlib.h.
-
O que você não conseguiu? Eu poderia testar, mas apenas hoje (sábado) de tarde.
-
Novo Administrador
tópico respondeu ao Jonathan Queiroz de Durub em Novidades e Anúncios Script Brasil
Parabéns kuroi, merecido! -
Sim, é possível. Para criar um número aleatório em um intervalo, use esta "fórmula": numeroMaior e numeroMenor é o intervalo que você quer gerar. int numero = rand() % (numeroMaior - numeroMenor + 1) + numeroMenor; Retirei daqui: http://www.dreamincode.net/forums/topic/81...andom-interval/, então não posso confirmar se está certo. Mas é mais ou menos nesse caminho. Para gerar um número diferente para cada tipo de classe, apenas faça alguns ifs, comparando com strcmp (se for string). Abraços!
-
Definitivamente o que o kuroi comentou. Se você for escrever texto, não abra em binário. Considere como uma "regra": se você não está usando fread e fwrite para ler e escrever, não use a flag de binário.
-
Se me lembro corretamente, além de evitar que você cometa erros, há uma pequena ajuda à performance do programa.
-
Apague este trecho do código e reescreva, a mão (não copie). Provavelmente irá solucionar o problema. Esse menos aí (–) não é um menos (-) de verdade, está mais para um "travessão".
-
Visual Studio é uma das melhores IDEs que tem atualmente. Principalmente pra C++ e C#. Também acho uma boa opção a IDE Qt Creator e o CodeBlocks, ambos são ótimos.
-
Você chegou a testar o último código que eu te dei? O código devia estar funcionando perfeitamente, só tentei chamar atenção ao fato que a função deveria retornar a hora, e não uma string completa. Isso você devia fazer ao imprimir a string para o usuário. Abraços.
-
O que está dando errado? O que não está conseguindo fazer no menu, especificamente? Abraços.
-
Com expressões regulares: function totalMinutos($expressao) { $regex = '/(\d+) Horas? e (\d+) Minutos?/'; preg_match($regex, $expressao, $matches); return $matches[1] * 60 + $matches[2]; } Mas acho que aí o problema já é outro... Por que a função difDeHoras retorna uma string assim, pra começar? Abraços.
-
Multiplique as horas por 60 (para obter os minutos), e some os minutos já "existentes". function totalMinutos($hora) { $componentes = explode(":", $hora); /* separa em uma array da forma array(horas, minutos) */ return $componentes[0] * 60 + $componentes[1]; /* multiplica as horas por 60 e soma os minutos para obter o total */ } Aí é só usar. Exemplo: $difminutos = totalMinutos($diferencatempo); Abraços.
-
Eu já tomaria uma abordagem diferente: #include <stdio.h> /* int ler_data(int* dia, int* mes, int* ano); Le uma data nas variaveis dia, mes, ano Se a função retornar 0, os valores dia, mes, ano são numéricos e estão com os valores inseridos pelo usuário Se a função retornar 1, ocorreu um erro de leitura e as variáveis dia, mes, ano podem conter lixo! */ int ler_data(int* dia, int* mes, int* ano) { char input[1024]; int valida; fgets(input, 1024, stdin); valida = sscanf(input, "%d/%d/%d\n", dia, mes, ano); return (valida == 3) ? 0 : 1; } /* int valida_data(int dia, int mes, int ano); Valida os valores dia, mes e ano Se a função retornar 0, todos os valores foram validados Se a função retornar 1, ocorreu um problema de validação com o dia (isso não garante que o mês e o ano estejam corretos!) Se a função retornar 2, ocorreu um problema de validação com o mês (isso não garante que o ano esteja correto!) Se a função retornar 3, ocorreu um problema de validação com o ano */ int validar_data(int dia, int mes, int ano) { if(dia > 31 || dia < 1) { return 1; } if(mes > 12 || mes < 1) { return 2; } if(ano < 1) { return 3; } return 0; } int main(void) { int dia, mes, ano; while(ler_data(&dia, &mes, &ano) || validar_data(dia, mes, ano)); printf("%d/%d/%d\n", dia, mes, ano); return 0; } Ele irá ficar pedindo uma data até o usuário inserir uma correta. (1-31/1-12/1-infinito) Abraços!
-
Não sei sobre vídeo-aulas, mas se for partir para este lado, recomendo fortemente o Qt. É multi-plataforma (Windows, Linux, Mac e até celulares), tem uma API legal e uma documentação grande. Achei um hello world em forma de vídeo aula (em inglês)!: http://www.youtube.com/watch?v=QLT7oEt6gLE Abraços!
-
O problema talvez seja que você esteja usando "ç" no nome de suas variáveis. Tente trocar de preço para preço e veja o que acontece. Abraços.
-
Eram da época do DOS, não existem mais porque não há mais muito uso para elas. Abraços.
-
Ah, entendi! Se ainda não aprendeu arrays na faculdade, provavelmente isso é exatamente o que queriam que você fizesse. Parabéns! De nada, e contribua com seu conhecimento mesmo! Abraços!
-
Você não está pensando coletivamente. Pense no seguinte: você tem uma máquina que recebe o dado das pessoas, como suas notas. Quando requisitada, ela calcula a média de todas as notas. Porém, a cada nova pessoa que está digitando as informações na máquina, ela está reescrevendo sobre os dados da última pessoa. O que é necessário para corrigir isso? Fazer a máquina ter memória das pessoas passadas, é claro! Como fazer isso? Com arrays. http://pt.wikipedia.org/wiki/Array http://pt.wikibooks.org/wiki/Programar_em_C/Vetores Leia um pouco desses sites e acho que o erro no seu código estará aparente. Se ainda não tiver sucesso, poste novamente para que eu te instrua um pouco mais! ps: sobre seu for, lembre-se que arrays em C começam no 0, e não no 1 Abraços!
-
Solução simples: Transforme esse número para uma string (cadeia de caracteres) e conte quantos caracteres resultaram. Solução difícil (e melhor para seu aprendizado!): Aprenda como se faz essa transformação e ao invés de transformar para uma string, conte o número de dígitos. Abraços.
-
O ideal seria apenas ter um bom entendimento das bibliotecas padrões, ou ao menos saber por cima o que elas contém. Não é necessário decorar nomes e afins, você encontra eles em uma referência ou procurando pela internet. Por exemplo, sei que existe uma biblioteca "math.h" (para matemática) no C, mas não sei todas as funções e o que ela contém exatamente. Então, eu venho nesse site: http://www.cplusplus.com/reference/clibrary/cmath/ E pronto! Descubro tudo que eu preciso. Agora bibliotecas não-padrões já é outra história, depende muito do seu campo de atuação... Abraços.
-
Movido. Obrigado! Abraços.
-
Tem várias bibliotecas para isso! Aqui tem um bom artigo sobre como ler você mesmo: http://www.brackeen.com/vga/bitmaps.html Abraços!