Jump to content
Fórum Script Brasil

Luiz Rodrigo

Membros
  • Content Count

    22
  • Joined

  • Last visited

Community Reputation

0 Neutro

About Luiz Rodrigo

  • Birthday 09/14/1995

Contatos

Perfil

  • Location
    Manaus
  • Interests
    Ensinar e aprender mais!
  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
  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,
  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
  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; }
  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ú
  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
  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
  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
  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; }
×
×
  • Create New...