Ir para conteúdo
Fórum Script Brasil

CPP

Membros
  • Total de itens

    117
  • Registro em

  • Última visita

Sobre CPP

Perfil

  • Gender
    Male
  • Location
    São Vicente - SP

CPP's Achievements

0

Reputação

  1. Parabens pra você RoccoC/C++.
  2. CPP

    Ajuda iniciante em C

    Quando você escreve um numero comecando com o (zero) está dizendo ao compilador que a base desse numero é octal, ou seja, pode representar numeros de 0 a 7. Então você não pode fazer 08 porque vai dar erro. Quando quiser representar numeros na base decimal apenas escreva sem o zero na frente, exemplo: 1,2,3...etc Em alguns pontos do seu programa você escreveu if terminando com ';' isso causa erro nos blocos de decisão. você pode terminar um if com ';', isso não é problema desde que a logica esteja correta. Por exemplo: Esse if esta errado: if ( d==31) (d=01, m++); printf("A data do proximo dia é: %d/%d/%d", d, m, a); else (d++); printf("A data do proximo dia é: %d/%d/%d", d, m, a); O correto seria if ( d==31) { d=01; m++; printf("A data do proximo dia é: %d/%d/%d", d, m, a); } else { (d++); printf("A data do proximo dia é: %d/%d/%d", d, m, a); } Tenta encontrar os outros erros e se precisar de ajuda é só falar.
  3. Pra não aceitar o enter sem ter digitado um numero antes: while (tecla != '\r' ) { tecla = getch(); if (tecla == '\r' && i == 0) tecla = 0; if (isdigit(tecla) || tecla=='-') numero[i++] = tecla; } }while(atoi(numero) < 0 || atoi(numero) > 100); [/codebox] numero é um array do tipo char, supondo que o conteudo dela seja "Teste 123" se fizer: numero[5] = '-'; você muda o conteudo para "Teste-123" porque escreveu na posição 6 da string; Um array em C sempre começa em 0, então a indexação seria: 0 1 2 3 4 5 6 7 8 9 10 (indice) T e s t e - 1 2 4 (conteudo) Quando você faz numero[i++] está indicando a posição pelo valor de i. Deu pra entender?
  4. CPP

    SENHA COM NÚMEROS

    Os dois códigos estão bons e funcionam, mas se alguém usar um programa pra gerar o assembly do seu executavel vai pegar a senha facilmente. Uma maneira de dificultar a ação de um hacker e não colocar pistas. Se eu procurar mensagem (Senha Correta) no codigo vou achar o if e o valor da senha. Mas se eu usar variaveis e dificultar o ponto onde vão encontrar as mensagens o invasor vai ter mais dificuldade pra quebrar a segurança. Alguns algoritmos de criptografia também podem ajudar a aumentar a segurança, alem de um contador limite de tentativas. O codigo abaixo pode ser melhorado em muito. Abs #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<math.h> int main() { int resposta = 954; char *msg[] = {"Senha Correta!\n\n", "Senha Incorreta\n\n"}; int status; clrscr(); resposta = 123; int senha; printf("Entre com a senha:"); scanf("%d", &senha); printf("\nVerificando...\n"); status = (senha==resposta); printf(msg[!status]); getch(); return status; } [/codebox]
  5. AthosLive, Tem mais duas coisas erradas no seu codigo pg é um char e você ta usando scanf("%s", &pg); Quando você usa %s o scanf vai te retornar a tecla que você pressionou mais o terminar de string (\ 0) e como você alocou apenas um byte (char) está corrompendo a memoria do seu programa. O correto é usar scanf("%c", &pg) que vai te retornar apenas um byte. O outro erro é que comissão é com dois "s" e não com ç (rs) Abs
  6. Posta o código ou manda pra mim por email: osantos@smartnet.com.br
  7. CPP

    Ajuda em exercicio C

    Cara, eu nunca vi essa expressão antes: v = (0, i); Você pode me dizer o que ela faz? Grato
  8. CPP

    DUVIDAS (BÁSICO) EM C

    Athoslive, Seu código tá bem confuso cara. Tem goto dentro de while e if que não vai fazer exatamente o que você quer. Alem do que printf(" o \r", seta + passo); está errado, já que você passou um parametro (seta + passo) sem nenhuma indicação de substituição na string. Ou seja tá faltando algum "%<tipo>" dentro da string " o \r"; O problema acho que tá mais na lógica do que no uso da linguagem. Mas vamos lá. #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> #include <dos.h> #include <ctype.h> void main() { char a; int col = 10; clrscr(); printf("joguinho lecal , digite D pra > e A pra <"); printf("\n "); printf(" >- "); inicio: if (kbhit()) a=tolower(getch()); if(a=='d') { gotoxy(col--, 2); printf(" o \r"); if (col == 8) a = ' '; } if(a=='a') { gotoxy(col++, 2); printf(" o \r"); if (col == 30) a = ' '; } if (a=='e') { // escreva aqui seu codigo para o tiro } if(a=='s') { exit(0); } delay(50); goto inicio; } [/codebox]
  9. do{ memset(numero, 0, sizeof(numero)); i = 0; printf("Digite um numero de 0 a 100\n"); while (tecla != '\r' ) { tecla = getch(); if (isdigit(tecla)) numero[i++] = tecla; } }while(atoi(numero) < 0 || atoi(numero) > 100);
  10. Bom, eu particularmente discordo da questão de usar apenas o que se aprende no curso. Desde que você saiba o porque das coisas acho valido usar tudo. Mas, sem arrays você pode fazer um scanf("%d", &numero); e depois chamar clrscr(); pra limpar a tela e deixar seguir o fluxo. O problema é que os dois usuarios não podem estar na frete do micro nesse momento. A funcao isdigit() apenas testa se um caracter é um digito entre 0 e 9, ela não faz nenhuma conversão.
  11. Olá Eduardo. Tem um problema no seu codigo. while ((ch != '\r')) { ch = getch(); } Supondo que ch seja do tipo char quando você faz ch = getch() está recebendo o codigo ASCII da tecla pressionada, por exemplo: Se digitar 123 o ch vai ter apenas o valor 0x33 (51 decimal) que corresponde ao codigo ASCII (em hexa) do caracter '3'. E quando pressionar o ENTER ch vai ter o valor 0x0D ou 13 em decimal que corresponde ao codigo ASCII do ENTER. Quando ch for igual ENTER ('\r') ele encerra o whille. Ai você faz um scanf("%d", &chute) e compara com ch, nesse ponto você está comparando o seguinte: Supondo que o usuario digitou 45 seu if será: if (45 == 13) que resultará em FALSO. Vou enviar um codigo pra você analisar. Qualquer dúvida é só postar. Abs #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <ctype.h> #include <mem.h> void main() { char numero[10]; char tecla; int chute; int i = 0; // preenche o array numero com zeros memset(numero, 0, sizeof(numero)); tecla = 0; printf("Digite um numero e pressione <ENTER> para finalizar\n"); while (tecla != '\r') { tecla = getch(); if (isdigit(tecla)) // verifica se a tecla digitada é um numero (0 a 9) numero[i++] = tecla; // salva o valor digitado em numero na posicao indicada por i eincrementa i } printf("Digite um valor: "); scanf("%d", &chute); if (chute == atoi(numero)) // atoi converte uma string para int printf("Confere\n"); else printf("não Confere\n"); getch(); } [/codebox]
  12. CPP

    DUVIDAS (BÁSICO) EM C

    Tenta estudar esse código. #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> #include <dos.h> #include <ctype.h> void main() { char a; int col = 10; clrscr(); printf("joguinho lecal :D, digite D pra > e A pra <"); printf("\n "); printf(" >- "); inicio: if (kbhit()) a=tolower(getch()); if(a=='d') { gotoxy(col--, 2); printf(" o \r"); if (col == 8) a = ' '; } if(a=='a') { gotoxy(col++, 2); printf(" o \r"); if (col == 30) a = ' '; } if(a=='s') { exit(0); } delay(50); goto inicio; } [/codebox]
  13. CPP

    DUVIDAS (BÁSICO) EM C

    Pequeno engano. a sequencia deve ser col = 1; gotoxy(col, 10); // pra posicionar na coluna 1 da linha 10 printf(" o"); // pra exibir nas coordenas estabelecidas pelo gotoxy col++; // col passa a ser 2...3...4...e etc Quando quiser retroceder é só fazer col-- Tenta ai, se não conseguir eu modifico seu codigo pra você ver como faz. Abs
  14. CPP

    DUVIDAS (BÁSICO) EM C

    Olá Binder, Concordo com você quando diz que não se compara strings com ==, mas no codigo athoslive ele está comparando bytes quando se usa o ' apostrofe. Isso é perfeitamente valido ainda mais porque a variavel (a) é um char. AthosLive, o problema do seu codigo é o seguinte. Quando você simplesmente usa o printf ele vai exibir a informação na posição corrente da tela. O \ n faz o cursor se move para a coluna 1 da proxima linha. Se você quer fazer o seu ojbeto se mover você precisa indicar as coordernadas de impressao usando o gotoxy(col, linha) e ir mudando o valor de col; Assim o printf vai respeitar as coordenadas que você definiu. Pra andar pra frente é só fazer col++ e pra andar pra tras col-- dentro dos limites que você estabelecer. Se ainda tiver duvidas é só falar. Fica atento ao que o Binder falou, isso é importante pra se manipular texto. Inclusive você pode usar o toupper() ou tolower() pra tratar as letras digitadas independente de ser (s) ou (S). Abs
×
×
  • Criar Novo...