Ir para conteúdo
Fórum Script Brasil

Durub

Moderadores
  • Total de itens

    788
  • Registro em

  • Última visita

Tudo que Durub postou

  1. Neste caso, seria muito melhor deixar dentro do case. Não seria "boa programação" colocar no começo da função principal. Abraços.
  2. Durub

    Erro no uso de gets

    Não. gets(ident) está passando um endereço de memória. Se ident é definido como ele falou, então ident é um ponteiro para ponteiro. char** ident. Ao deferenciar com ident, agora ele passou de um char** para char*. gets(ident) está correto, acredito que não seja esta parte que esteja dando problema. Você está usando scanf antes dessa chamada ao gets? Outra coisa: gets é ruim, scanf é pior. Você deveria usar fgets. E ainda: declarar uma variável desta forma (com um tamanho variável) sequer funciona? O compilador não reclama? Eu acho que você deveria é estar usando malloc ou calloc. Abraços.
  3. Estando no ultimo elemento da lista, aponte para o novo elemento criado. novo = malloc(sizeof(TLista)); if(novo == NULL) { printf("Alocacao falhou!\n"); exit(1); } novo->valor = 15; novo->prox = NULL; /* ultimo deve ser o último elemento da lista */ ultimo->prox = novo; Alguma razão para você estar usando C++ (cstdlib e iostream) e não estar usando new e delete ao invés de malloc e free? Outra coisa, não use system("pause"). Use std::cin.get(). (C++) Link para referência: http://www.gidnetwork.com/b-61.html Abraços.
  4. Para futura referência, está faltando passar o formato da string a ser lida. No seu caso, scanf("%f", &variavel); Abraços!
  5. Exatamente. Por isso, nesses casos, geralmente se usa funções de alocação. AGENDA* alocar_agenda() { AGENDA* agenda; agenda = malloc(sizeof(AGENDA)); if(agenda == NULL) { /* erro de alocação aqui. é importante sempre verificar pelo null */ return NULL; } agenda->nome = malloc(50 * sizeof(char)); if(agenda->nome == NULL) { /* erro de alocação aqui. é importante sempre verificar pelo null */ free(agenda); return NULL; } agenda->email = malloc(50 * sizeof(char)); if(agenda->email == NULL) { /* erro de alocação aqui. é importante sempre verificar pelo null */ free(agenda->nome); free(agenda); return NULL; } return agenda; } void liberar_agenda(AGENDA* agenda) { free(agenda->nome); free(agenda->email); free(email); } Agora tudo que você tem que fazer é usar alocar_agenda e liberar_agenda para gerenciar o alocamento dinâmico de memória. Isto também é útil caso vocẽ queira mudar o esquema de alocamento depois, por exemplo. Abraços!
  6. #include <stdio.h> #include <stdlib.h> #include <time.h> /* matriz[m][n] */ void preenche_matriz(int** matriz, int n, int m) { for(int i = 0; i < n; ++i) { for(int j = 0; j < m; ++j) { matriz[i][j] = rand(); } } } int main(int argc, char *argv[]) { int matriz[3][3]; srand(time(NULL)); /* isso é importante! faz gerar números diferentes a cada execução. só precisa ser chamada UMA vez */ preenche_matriz(matriz, 3, 3); return 0; } Pronto. Não testei. Faltar adaptar para o seu uso. (de tal a tal número na função preenche_matriz, por exemplo) Abraços.
  7. Durub

    [RESOLVIDO]Erro 'basico'

    Editou por quê? Abraços.
  8. Com sinceridade, parece que você está tentando algo muito avançado para o seu nível. Erro um: double Efetua_calculo::Entra_valores (double *valorvet) Você está chamando essa função sem passar nenhum argumento, e esperando que magicamente este valorvet apareça onde esta função foi chamada. Você deve passar um array de double para ser preenchido por ela. double valores[5]; Entra_valores(valores); valores[0]; /* agora sim foi modificado pela função */ Erro dois: Efetua_calculo(double valora,double valorb,double valorc, double valord) int main () { Efetua_calculo calculo(); calculo.Mostra_calculo(); return 0; } Seu construtor aceita parâmetros, mas você está o chamando sem passar nenhum! --------------------------------- Receba os valores no main por uma função auxiliar, sem ser de classe alguma. Depois, passe estes valores para o construtor. Abraços.
  9. Mostre o código, por favor. Abraços.
  10. http://www.codingforums.com/showthread.php?t=107563 Abraços.
  11. Durub

    media

    Se você recompilar, a execução reflete o que você alterou no código. Se você só re-executar o programa, você ainda está executando o código antigo. Tente criar um novo arquivo, colar o conteúdo e ver o que acontece quando você aperta F9. E verifique por possíveis erros de compilação! (aqui foi ok para compilar seu código) Abraços.
  12. Durub

    media

    Está correto, sim. Tem certeza que você recompilou ao invés de simplesmente executar novamente o programa? Abraços.
  13. Durub

    media

    Aqui parece estar tudo ok: media = (10 + 9 + 8) / 3 = 27 / 3 = 9 Resultado correto. Ele não está mostrando a média para você? Abraços.
  14. Durub

    media

    A função está retornando o valor, e não imprimindo na tela: return soma/quantidade_al; Ela (ou o código que está a chamando) deve imprimir com o printf. No caso deste valor (float), deve-se usar %f. Exemplo: printf("Media: %f\n", media_turma(turma, quantidade_alunos)); Outra coisa, eu aconselharia você a trocar o system("pause") por getchar(), da stdio.h. Aqui, por exemplo, onde eu uso Linux, system("pause") não funciona. getchar() funciona em qualquer lugar. Abraços.
  15. int escolha,n,i,status=0,bc=0; struct { int cod; char nome[50]; char desc[50]; int quant; float preço; char bn[50]; }cadas[n]; Você não deveria estar inicializando n para algum valor? Abraços.
  16. Se possível poste o código, por favor. Abraços.
  17. if((soma-sin(x)<=1e-15)&&(soma-sin(x)>=-1e-15)) Pense em um número maior ou igual a um. Agora pense em um número menor ou igual a um. Agora pense em números que são tanto maiores ou iguais a um, e menores ou iguais a um. Que número restou? Somente o 1. Ou seja, o if só é ativado se soma - sin(x) == 1e-15. Como é um número de ponto flutuante, não é recomendável comparar diretamente, por erros de arredondamento. Uma boa lida é o documento http://www.validlab.com/goldberg/paper.pdf, mas é grande e necessita de conhecimentos um pouco mais avançados, além de um domínio do inglês. Então, por enquanto, apenas direi para você tentar fazer uma comparação à um intervalo de valores, como por exemplo, ao invés de comparar se é igual a 1.0, tente comparar se é maior que 0.95 e menor que 1.05. Tente! Abraços.
  18. A função sin do math.h utiliza como argumento um ângulo em radianos. O ângulo 2 * pi, em radiano, é igual a 0 ou 360 graus, o que corresponde a um seno de valor 0. Abraços.
  19. Durub

    Dúvida em problema

    E se não achar? Ele volta. E tenta. E tenta. E tenta de novo. Infinitas vezes! Somente neste trecho, é impossível que alguma posição da tabela fique vazia. Talvez você queira sair do loop caso não encontre uma vazia? Abraços!
  20. Durub

    Modulos / Arquivos

    Arquivo cadcli.c int cadastrar(int codigo) { return 1; } Arquivo menu.c int cadastrar(int codigo); /* declaração do protótipo da função */ int considerar_opcao(char opcao) { if(opcao == 'c') { cadastrar(0); return 1; } return 0; /* opção inválida */ } No C, você pode chamar funções de outros arquivos. Para fazer isto, entretanto, é necessário o nome delas e seu protótipo. Veja as etapas da compilação: Código fonte -> Compilador -> Linker -> ... Falando de uma forma simplificada: O compilador apenas precisa saber quais funções existem e como elas "agem". Neste caso, no arquivo menu.c, ele precisa saber que a função cadastrar existe e como ela pode ser chamada. Pouco importa onde ela reside. Você apenas a declara. Na etapa do linker é onde é feita esta ligação. Quando você chama a função cadastrar no arquivo menu.c, o linker procura a definição dela (que está no arquivo cadcli.c) e liga a sua declaração com a definição. No C, é padrão utilizar a seguinte estrutura: matematica.h #ifndef MATEMATICA_H #define MATEMATICA_H // os chamados include guards. se não souber o que são e o que fazem, leia sobre. // _declaração_ da função multiplicarPorDois int multiplicarPorDois(int numero); #endif matematica.c #include "matematica.h" // _definição_ da função multiplicarPorDois int multiplicarPorDois(int numero) { return numero * 2; } principal.c #include <stdio.h> #include "matematica.h" // pega a _declaração_ da função multiplicarPorDois int main() { int n; printf("Digite um número\n"); scanf("%d", &n); printf("n vezes dois é igual a %d.", multiplicarPorDois(n)); return 0; } E aí você compila ambos, juntos. (se você estiver usando uma IDE, ela fará isso automaticamente para você) Um exemplo utilizando o gcc, sobre como compilar: gcc -o pordois principal.c matematica.c Abraços!
  21. Não entendi o enunciado do exercício, qual a necessidade de ponteiros? Bom, uma forma fácil de transformar para o "formato ponteiro", seria trocar A por *(A + i). O que A[x] significa? Significa que o programa pega o endereço da variável A (como é um array, é o endereço do primeiro elemento), adiciona x ao endereço levando em consideração a aritmética de ponteiros e depois o desreferencia, pegando o valor contido no novo endereço. Passando isso para a forma "normal", ficaria assim: *(A + x) A -> endereço do primeiro elemento do array. se não fosse um array, seria necessário utilizar &A + x -> soma x ao endereço do A * -> operador desreferência, pega o valor localizado no endereço Isto o A[X] faz automaticamente para você. Então, você pode trocar tudo que está na forma A[x] para *(A + x). Com uma exceção, porém: se você quiser apenas o endereço, não é mais necessário utilizar &, como é utilizado no scanf. No seu scanf, você deveria trocar &A[c] para apenas A + c. Não irei te dar o código, pois você deve ir fazendo e entendendo, caso tenha mais dúvidas, erros de compilação etc. continue postando neste tópico. Outra coisa (agora referente ao seu código), acho que o enunciado, ao dizer que quer que você faça um novo array B com aqueles parâmetros, significa que você não deve alterar o A como está fazendo e depois associar, mas sim alterar o B. Se A[x] for impar, você está fazendo A[x] *= 3 e depois B[x] = A[x], enquanto o que deveria realmente estar fazendo é: B[x] = A[x] * 3. Abraços!
  22. Durub

    [DÚVIDA] Erro =/

    error C2065: 'AddressOfKeAttachProcess' : undeclared identifier -> A variável AddressOfKeAttachProcess não existe neste escopo. error C4047: '=' : 'int' differs in levels of indirection from 'PVOID' -> int não está no mesmo nível de abstração do que um pointeiro para void, *void (PVOID). Se você estiver absolutamente certo que quer fazer isso, faça um cast para int. Exemplo: void *ponteiro = Memória; int endereco = (int) ponteiro; Abraços.
  23. Durub

    Funcao getch()

    Vendo seu código, antes de responder sua pergunta, tenho que perguntar: o que você acha que a função getch faz? Abraços.
  24. Durub

    Ajuda com C++

    Qual o tipo da variável Gerador[nofinal]? Ela tem que ser outro complex<double>. Abraços.
×
×
  • Criar Novo...