Jump to content
Fórum Script Brasil
  • 0

Geração de login e senha


Progc++
 Share

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.5k
×
×
  • Create New...