Ir para conteúdo
Fórum Script Brasil

Myho

Membros
  • Total de itens

    22
  • Registro em

  • Última visita

Sobre Myho

  • Data de Nascimento 03/06/1985

Contatos

  • Website URL
    http://
  • ICQ
    0

Perfil

  • Location
    Porto Alegre - RS

Myho's Achievements

0

Reputação

  1. Testei seu código com os valores dados no pdf que descreve o problema e a solução para o segundo caso foi diferente. Deveria sair assim: Mas saiu assim: Edit* Reparei agora que a soma de 1 e 3, 2 e 3 e 3 e 4 são iguais.. então resultariam em saidas iguais.. então não é erro, foi só uma escolha mesmo.
  2. Myho

    Dúvida em problema

    Olá, não testei seu código, mas por cima posso dizer aonde encontrei alguns erros. if (tabela[posicao] == NULL) { *tabela[posicao] = valor[contador]; contador++; } Não precisa colocar aquele asterisco antes de tabela posição, e da maneira como foram declaradas as variaveis tem que por um & na frente de valor[contador]. Tabela[posições] espera receber um endereço de memória e não um valor. Se sua ideia é essa mesmo faça as alterações, senão já são outras mudanças necessárias. else { incremento[contador] = doubleHash(valor[contador]); while (*tabela[posicao] =! NULL) { posicao = ((posicao + incremento[posicao]) % N); } *tabela[posicao] = valor[contador]; contador++; } No teste do while, tire o asterisco em frente a tabela[posicao] e mude =! para != pois do jeito que está é uma atribuição negada e não uma comparação. e após as chaves do while novamente retire o asterisco da frente de tabela[posicao] e coloque um & em frente a valor[contador]
  3. Possível é, mas provavelmente C não seja a ferramenta de maior facilidade para isso. Mesmo existindo muitas bibliotecas que lhe auxiliam a fazer isso. Não posso lhe dar uma experiencia pessoal em desenvolver aplicativos "windows like" em c/c++, mas em Delphi e Java foi muito fácil. Mas, caso queira mesmo fazer em c/c++, eu recomendo usar a QT. http://en.wikipedia.org/wiki/Qt_(framework) http://qt.nokia.com/
  4. Myho

    Manipulação de *.TXT em C

    Você pode usar a mesma lógica que usou pra colocar uma quebra de linha no texto putc('\n', arquivo); Só que em vez de colocar uma quebra coloque uma barra: putc('\\', arquivo); Quanto a ler uma string com espaço, realmente um scanf com esses parâmetros mais comuns não lê. Existem diversas soluções que você pode pesquisar como. fgets: ( para usar fgets pegando o buffer do teclado coloque stdin no lugar do nome do arquivo. http://www.cplusplus.com/reference/clibrary/cstdio/fgets/ Tem uma variação de parametros do scanf scanf("%[^\n]s", nomeVariavel); http://www.cplusplus.com/reference/clibrary/cstdio/scanf/
  5. Declare montador::montador() { tempo = 0; status = false; } fora da classe, depois da chave que fecha a classe. Lembrando que tem q por ponto e vírgula nessa ultima chave, que fecha a classe. No código colado por você ai em cima faltou esse detalhe.
  6. Desculpe se isso não te ajudar, mas não é muito a minha praia codeblocks nem gtk. http://www.gtkforums.com/viewtopic.php?t=8908
  7. Ela pode retornar o que você quiser, o problema é que tipo de retorno você precisa. Se você precisa retornar um pedido, não tem jeito, tem que retorna-lo. O problema com o NULL é que você deve retornar um pedido, e NULL é zero ou um ponteiro void. Pro NULL funcionar você deve retornar pedido * filaCircularComVetor::desenfileirar() Mas ai já envolve usar ponteiros no programa e imagino que você não tenha planejado usa-los. De qualquer maneira você tem q testar no main... ou antes de chamar ou depois. Para abrir arquivo testamos depois: File *f; f = fopen ("myfile.txt" , "r"); if (pFile == NULL) printf ("Error opening file"); Já quando usamos algum container da STL testamos antes: stack<int> mystack; if (!mystack.empty()) int valor = mystack.top();
  8. se estiver vazia pode retornar esse NULL, e quem pedir pra desenfileirar é que testa se o retorno foi um elemento ou NULL. pedido = fila->desenfileirar(); if (pedido) //Tratar pedido aqui else // Tratar fila vazia aqui Ou então sempre teste se a fila está vazia antes de desenfileirar fora da função. algo como if ( !fila->vazia()) pedido = fila->desenfileirar();
  9. Verdade, eu também esqueci em minha resposta, mesmo sem struct aqui funcionou pois meu compilador compilou em C++, onde não é preciso colocar o struct na frente nesse caso. Em C é obrigatório.
  10. X é o número de padrões a serem desenhados, mas como só posso usar um for eu preciso saber quantos números tem que ser desenhados. Então supondo que o usuário digite 2, para que a saída seja 0110110 São 4 uns e 3 zeros, totalizando 7 números, se ele digita 3 0111011101110 São 9 uns e 4 zeros, totalizando 13 números. Como pode ver o numero de uns é sempre o quadrado do que o usuário digitou ( x ) e o numero de zeros é sempre um a mais do que o número digitado ( x ). Essa foi a maneira que eu pensei para resolver, podem existir outras, contanto que o resultado seja o esperado, tanto faz =)
  11. Vou ser sincero que não entendi exatamente a questão, mas se for só pra ter ponteiros no programa, em vez de declarar assim: void preencheVetor(); Troque por: void preencheVetor(Carro *car); e no corpo da função: void preencheVetor(Carro *car){ system ("CLS"); int i; for (i = 0; i < 2; i++) { printf ("\nMarca: "); scanf ("%s", &car[i].marca); printf ("Ano: "); scanf("%d", &car[i].ano); printf ("Cor: "); scanf ("%s", &car[i].cor); printf ("preço: "); scanf ("%f", &car[i].preço); } system ("CLS"); } E então você preencheu o vetor de carros usando um ponteiro para ele ( car )... é só seguir essa lógica para os outros e não se esqueça de quando for chamar a função tem que chamar com os parâmetros agora. Carros carros[2] não precisa mais ser global se todas as funções que manipulam suas variáveis receberem como parâmetro um ponteiro para ele.
  12. Myho

    Ponteiros em C++

    Não diria que é errado, mas sim inseguro de se fazer isso. Pode-se acabar em um local da memória que não pode ser acessado e o programa terminar com umAccess violation. No caso que você citou de um vetor, não tem problema, desde que não extrapole o tamanho desse vetor. Até é possível prever para que região ele vai apontar, pois quando declaramos que um ponteiro é int, e sabemos que o int ocupada 4 bytes, sabemos que ele vai pular contiguamente de 4 em 4 bytes na memória, para tipos básicos é isso.
  13. Usei uma variavel extra, Y, para armazenar a quantidade total de numeros a serem impressos. Já que só um for pode ser usado temos que saber quantos números serão impressos. O truque está aqui: if ( i%(x+1)==0) quando i chegar a um numero em que sua divisão por x+1 der resto 0, sabemos que é hora de começar outro bloco de números. #include <stdio.h> int main () { long int x,y; int i,cont; printf("Coloque um valor inteiro:\n"); scanf("%d", &x); y = (x*x) + x+1; // total de numeros a serem impressos for(int i=0; i < y; i++) { if ( i%(x+1)==0) printf("0"); else printf("1"); } getchar(); getchar(); return 0; }
  14. Myho

    Problema com código

    Depois de ler o tamanho comece a fazer as comparações com IF if ( (tamanho == 'g') || (tamanho == 'G') ) desconto = preço * 0.10; //aplique o desconto se condição satisfeita, senão continue os if's else if //nova condição //aplique desconto se nova condicao satisfeita E assim sucessivamente com cada condição. Depois da ultima condição faça um else dizendo que se cair naquela condição o Tamanho é inválido.
  15. Myho

    Duvida no comando "for"

    A função de raiz quadrada também está em math.h sqrt(valor); Só que se for 'j' na raiz 0.5 e não na raiz quadrada já é diferente, pois sqrt é somente para raiz quadrada. Ai você pode fazer assim: pow ( j , 1.0 / 0.5 ); Então você tem 'j' na raiz 0.5 como resposta. Que por sinal é a mesma coisa que elevar um número ao quadrado =p Mas se quisesse raiz c*bica, raiz 4 e etc seria só trocar o 0.5 ali pelo valor desejado de raiz, fica a dica.
×
×
  • Criar Novo...