Ir para conteúdo
Fórum Script Brasil
  • 0

Geração de login e senha


Progc++

Pergunta

Preciso fazer um programa que receba o nome completo e gere o login usando inicais e gerandoa senha apartir do valor ascii de cada inicial.

A regra para gerar login é coletar as iniciais, converter em maiúsculas e coletar novamente as iniciais e converter em minúsculas gerando um login com iniciais maiúsculas e minúsculas, Por exemplo: login:RHBSrhbs.

eis o código:

#include<cstdlib>
#include<cstdio>
#include<string.h>
#include<ctype.h>
using namespace std;
int main()
{
    char frase[150],login[20],car[40],senha[20];
    int tam_fras,cont=0,j=0,val,tam_car,i;
    printf("\nColoque seu nome completo: ");
    gets(frase);
    tam_fras=strlen(frase);
    strupr(frase);
    while(cont<2)
     {
         i=0;
         while(i<tam_fras)
          {
            if(i==0&&frase[i]!=' ')
             {
              login[j]=frase[i];
              j++;
             }
             else
              {
               if(frase[i]==' '&&frase[i+1]!=' ')
                {
                    if((i+1)<tam_fras)
                     {
                         login[j]=frase[i+1];
                         j++;
                     }
                }
              }
           i++;
          }
      strlwr(frase);
      cont++;
     }     
     i=0;
     while(i<j)
      {
          val=toascii(login[i]);
          itoa(val,car,10);
          tam_car=strlen(car);
          car[tam_car]='';
          strcat(senha,car);
          car[0]='';
          i++;
      }
      printf("\n\nO nome completo: %s,\nO login: %s\nA senha: %s",frase,login,senha);      
}

Em vez de gerar um resultado satisfatório, o login aparece como resultado 15 (em vez das iniciais) e na senha saem numeros mas desconformes com ascii...

O que pode estar acontecendo?

aguardo,

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Fiz pequenas alterações no seu código fonte, porém agora está fazendo certo:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>

char frase[150],login[20],car[40],senha[20];
int tam_fras,cont=0,j=0,val,tam_car,i;

 main() {
    
    printf("\nColoque seu nome completo: ");
    gets(frase);
    tam_fras=strlen(frase);
    strupr(frase);
    
    while(cont<2)
     {
         i=0;
         while(i<tam_fras)
          {
            if(i==0&&frase[i]!=' ')
             {
              login[j]=frase[i];
              j++;
             }
             else
              {
               if(frase[i]==' '&&frase[i+1]!=' ')
                {
                    if((i+1)<tam_fras)
                     {
                         login[j]=frase[i+1];
                         j++;
                     }
                }
              }
           i++;
          }
      strlwr(frase);
      cont++;
     }     
     i=0;
     while(i<j)
      {
          val=toascii(login[i]);
          itoa(val,car,10);
          tam_car=strlen(car);
          car[tam_car]=(" ");
          strcat(senha,car);
          car[0]=(" ");
          i++;
      }
      printf("\n\nO nome completo: %s,\nO login: %s\nA senha: %s\n",frase,login,senha);      
      system("pause");
      
}

Link para o comentário
Compartilhar em outros sites

  • 0

Olá!

Aqui também funcionou. O seu maior problema (e que ainda existe na resposta acima) é que após criar o login você deveria encerrar a string escrevendo o nulo do final.

Além disso, a lógica onde se gera a senha poderia ser bastante simplificada.

Veja abaixo o código que funcionou para mim. Como rodei no linux, eu fiz as funções strupr e strlow que não existiam. Você deve ter que tirar elas para compilar aí!

#include <stdio.h>
#include <string.h>

void strupr(char *str)
{
    while(*str) {
        if(*str >= 'a' && *str <= 'z')
            *str = *str - 'a' + 'A';
        str++;
    }
}

void strlwr(char *str)
{
    while(*str) {
        if(*str >= 'A' && *str <= 'Z')
            *str = *str - 'A' + 'a';
        str++;
    }
}

int main()
{
    char frase[150],login[20],senha[20];
    int tam_fras,cont=0,j=0,i;
    printf("\nColoque seu nome completo: ");
    gets(frase);
    tam_fras=strlen(frase);
    strupr(frase);
    while(cont<2)
     {
         i=0;
         while(i<tam_fras)
          {
            if(i==0&&frase[i]!=' ')
             {
              login[j]=frase[i];
              j++;
             }
             else
              {
               if(frase[i]==' '&&frase[i+1]!=' ')
                {
                    if((i+1)<tam_fras)
                     {
                         login[j]=frase[i+1];
                         j++;
                     }
                }
              }
           i++;
          }
      strlwr(frase);
      cont++;
     }    
     i=0;
     login[j] = '';
     senha[0] = '';
     while(i<j)
      {
          sprintf(senha, "%s%d", senha, login[i]);
          i++;
      }
      printf("\n\nO nome completo: %s,\nO login: %s\nA senha: %s\n",frase,login,senha);

      return 0;
}

Mais uma coisa: essa idéia de gerar o login a partir das iniciais me fez lembrar disso aqui: http://vidadesuporte.com.br/suporte-a-seri...to-da-semana-2/

Abraços,

Marcelo Utikawa da Fonseca

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...