Ir para conteúdo
Fórum Script Brasil

Luiz Rodrigo

Membros
  • Total de itens

    22
  • Registro em

  • Última visita

Sobre Luiz Rodrigo

  • Data de Nascimento 14/09/1995

Contatos

  • MSN
    louises_rodrigus@hotmail.com
  • Website URL
    http://
  • ICQ
    0

Perfil

  • Location
    Manaus
  • Interests
    Ensinar e aprender mais!

Luiz Rodrigo's Achievements

0

Reputação

  1. Parece que o erro está nesse trecho de código: par[contPar]=frase[x]+frase[z]; Quando você soma dois caracteres (ex: 'A' + 'A') , você não está concatenando (se estivesse, o resultado seria "AA"), você está somando os valores ASCII dos caracteres. No exemplo, o código ASCII de 'A' é 65, a soma retorna o caractere com código ASCII 130, que provavelmente não é uma letra. Para resolver esse problema, acho que seria bom reescrever a linha, ficando assim: par[contPar] = frase[x] Afinal, se os dois caracteres são iguais, não há necessidade de armazenar duas vezes o mesmo caractere. Na hora de escrevê-los, faria algo assim: for (register int i = 0; i < contPar; i++) cout << par[i] << par[i] << '\n'; /* Parece que todos o professores de programação são iguais, quando o assunto na escola técnica era array, passaram o mesmo exercício, com a diferença de que era em... pascal */
  2. Luiz Rodrigo

    ofstream

    É que você não está especificando o modo como deseja abrir o arquivo. Quando você usa o construtor (ou a função open() ) só com o endereço do arquivo, como abaixo ofstream arquivo( enderecoDoArquivo ); ou ofstream arquivo; arquivo.open ( enderecoDoArquivo ); você paga todo o conteúdo do arquivo, ou cria um novo arquivo, caso não exista. Para que as operações de saída sejam realizadas no final do arquivo, especifique, usando ios::app ou ios::ate (não lembro a diferença dos dois...). ofstream arquivo( enderecoDoArquivo, ios::app ); ou ofstream arquivo; arquivo.open( enderecoDoArquivo, ios::app );
  3. Acho que você se confundiu um pouco, pois o < retorna exatamente o contrário de >=, sendo necessário usar o operador de complemento (não) para obter o resultado desejado. Um dos pontos a favor do >= e <= é legibilidade. É muito mais fácil de ler um código do tipo if ( x >= y ) que um do tipo if ( !(x <y) ) Sobre ser mais ou menos lento, é irrelevante, pois a maioria dos processadores atuais consegue fazer milhões de operações de comparação entre tipos primitivos por segundo (uma operação de escrita no console leva muito mais tempo). Também não faz muito sentido dizer que o >= faz duas comparações, porque não sabemos (eu pelo menos não sei) como a ULA do processador realiza a comparação.
  4. Luiz Rodrigo

    Vetores

    Uma instrução scanf ("%*c") serve para ler um caractere e ignorá-lo. Quando você usa uma instrução como essa, você lê o caractere do teclado, mas o valor lido não passa para nenhuma variável. Do jeito como o Miranda disse, serviria para segurar a tela, até que alguma tecla tenha sido lida.
  5. Eu realmente estava incluindo read.h numa outra biblioteca e no arquivo principal, ocasionando o erro. Incluí somente na biblioteca e funcionou. Valeu Mnemonic!
  6. Estou criando um pequeno programa, que usa as duas funções da biblioteca read.h, abaixo: #include <new> #include <string> #include <cstdio> #include <fstream> using namespace std; using std::string; void readstr (string &str, int max = 128) //lê uma string com espaços do teclado { char *p; p = new char[max]; gets (p); str = p; delete p; } void freadstr (ifstream &file, string &str, int max = 128) //lê uma string com espaços de um arquivo { char *p; p = new char[max]; file.getline (p, max); str = p; delete p; } Mas ocorre que quando compilo o projeto, o compilador que utilizo (Visual C++), gera as seguintes mensagens de erro: Aí eu pesquisei no site do Visual Studio sobre o tal erro C2084, que diz que é quando você redefine a mesma função, como no exemplo: void Func(int); void Func(int) // define specialization { } void Func(int) // C2084 second definition { } Mas aí que eu não entendi: se eu só coloquei uma vez cada função no arquivo (sequer sobrecarreguei-as), como pode acusar esse erro? Agradeço, desde já, pela ajuda.
  7. Luiz Rodrigo

    fatoração

    Como assim fatoração? Para (1) mostrar os divisores para (2) decompor o número? No primeiro caso é mais fácil: #include <iostream> using namespace std; int main() { unsigned num; cout << "Digite um numero "; cin >> num; cout << "\nDivisores de " << num << ": "; for (register int i = 1; i <= num; i++) //de 1 até o número, verifica se é um divisor, se for, escreve o divisor. if (!(num%i)) cout << i << ' '; return 0; } No segundo é um pouco mais complicado, pois para decompor temos que ir dividindo por números primos: #include <iostream> using namespace std; int main() { int num, div, i; cout << "Digite um numero: "; cin >> num; cout << "Numero " << num << " decomposto: "; div = 2; //primeiro numero primo while (num != 1) { if (!(num%div)) { cout << div << ' '; num /= div; } else div++; } return 0; } Espero ter ajudado!
  8. Pelo que deu para entender, a dívida e calculada com a fórmula do juros composto: Onde m = montante, c = capital, i = taxa e n = número de períodos. Para calcular a potência, é só multiplicar o capital c pela taxa i + 1, n vezes. Por exemplo, se anos é igual a 3, então o montante final é igual a c*(1+i)*(1+i)*(1+i). É importante notar que a taxa deve estar em decimal (12% é igual a 0,12). double divida total (int ano, double montante, double taxa) { for (; ano; ano--) montante *= (1 + taxa); return montante; }
  9. Luiz Rodrigo

    Funções

    Normalmente, da mesma forma que você chamaria um função em main(), afinal, main() também é uma função. Só o que não pode é você criar uma função dentro de outra, mas chamar, tudo bem.
  10. Não é só deixar de imprimir as cartas do jogador?
  11. Você poderia armazenar o AuxCartas[] como static, assim, quando você quisesse os valores de volta, os valores do AuxCartas[] não seriam perdidas. Mas aí tem um problema: o AuxCartas[] é local da função ocultaCartas(), daí você não poderia criar uma função para desocultar as cartas, ou seja: a mesma função que oculta desocultaria. Para isso, você poderia criar um novo parâmetro que especificaria se deseja ocultar ou desocultar o vetor. O que ficaria meio com cara de gambiarra. Mas ocultar o vetor é realmente necessário, ou você poderia somente escrever os '#' e '*'? Ps: Você não pode declarar funções como void?
  12. Em vez de "remover" as cartas do baralho, você poderia criar uma função que retornasse o valor da carta mais "no topo", ou mais "no fundo", tanto faz, e, depois de puxada, colocasse o número da carta como um 0 (ou qualquer outro valor à sua escolha). Daí, da próxima vez que você fosse pegar uma carta, deveria pegar a carta mais no topo que não fosse 0. Na hora de puxar uma carta ou comprar, você não fica com 6 cartas na mão. Você primeiro vê se quer a carta, descarta uma da sua mão e puxa a carta desejada. Você poderia perguntar a cada rodada se o jogador deseja puxar uma carta do baralho ou pegar a ultima carta descartada. Dai ele selecionava a carta que queria descartar e você trocava a carta (do baralho) pela carta que quer descartar.
  13. O programa está gerando as cartas corretamente, sem repetição, mas parece que o problema está na hora de embaralhar. Testei aqui e repetiu três vezes o 9c...vou dar uma olhada para ver se consigo resolver esse problema. edit: Na verdade, o "erro" estava em colocar o printf() dentro do loop que embaralha. É que usando esse método, eu não necessariamente troco cada carta uma vez, eu troco cada posição uma vez. Daí ele poderia escrever a carta agora, só que a carta poderia mudar de posição e mais a frente ele a escreveria de novo. Por exemplo, imagine a seqüência de números abaixo: 1 2 3 4 5 6 Na segunda iteração, ele imprimiria 2. Mas imagine que trocássemos o dois pelo cinco: 1 5 3 4 2 6 Quando iterasse pela quinta vez, imprimiria o 2 de novo, e era isso que estava acontecendo. Se você criar um outro loop para escrever as cartas, fora do bloco para embaralhar, você pode perceber que está funcionando normalmente. Qualquer coisa, estamos aí! B)
  14. #include <stdio.h> int main() { int x, y, aux; scanf("%d %d",&x,&y); //vou ler os dois números do teclado while (x != y) { aux = (x > y) ? x : y; //pega o maior dos dois x = (x < y) ? x : y; //o primeiro é o menor dos dois y = aux - x; //o segundo é a diferença entre o maior e o menor printf("%d %d\n",x,y); } return 0; }
×
×
  • Criar Novo...