Не работает генерация строки-пароля - C (СИ)

Узнай цену своей работы

Формулировка задачи:

народ еще вопрос вот вот этот клочек должен делать следующее генерировать пароль где 1. - случайные малые буквы английского алфавита, где b1,.....,bQ+1 Q=Nв кубе mod 5 . 2. b1+Q+1,.......,b1+Q+1+P - случайные заглавные буквы русского P=Nв квадрате mod 6. В чем проблемма где ошибка
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <malloc.h>
 
void main()
{
char q[256];
int n=7,i,j,Q,P;
char *s,ch;
printf("vvedite login\n");
printf("login-");
scanf("%s",q);
Q=strlen(q);
printf("%d\n",Q);
Q=(Q*Q*Q)%5;
Q=Q+1;
printf("%d\n",Q);
/********************************************/
 
  s = (char*) malloc (sizeof(char) *Q );
 
        for(i = Q; i < Q; i++)
        {

                ch = 97 + rand() %25 ;
                while((ch < 97) && strchr(s,ch))
                        ch = 97 + rand() % 25;
                s[i] = ch;
                s[i + 1] = '\0';
               printf("%c",ch);
        }  printf("\n");
 
/********************************************/
P=(P*P)%6;
s = (char*) malloc (sizeof(char) *P );
 
        for(i = Q; i < P; i++)
        {

                ch = 128 + rand() %111 ;
                while((ch < 128) && strchr(s,ch))
                        ch = 128 + rand() % 111;
                s[i] = ch;
                s[i + 1] = '\0';
               printf("%c",ch);
        }  printf("\n");

getch();
}

Решение задачи: «Не работает генерация строки-пароля»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <malloc.h>
 
void main()
{
char q[256];
int n=7,i,j,Q,P;
char *s,ch;
printf("vvedite login\n");
printf("login-");
scanf("%s",q);
Q=strlen(q);
printf("%d\n",Q);
Q=(Q*Q*Q)%5;
Q=Q+1;
printf("%d\n",Q);
/********************************************/
 
  s = (char*) malloc (sizeof(char) *Q );
 
        for(i = 0; i < Q; i++)
        {
 
 
                ch = 97 + rand() %25 ;
                while((ch < 97) && strchr(s,ch))
                        ch = 97 + rand() % 25;
                s[i] = ch;
                s[i + 1] = '\0';
               printf("%c",ch);
        }  printf("\n");
 
/********************************************/
P=(Q*Q)%6;
printf("%d\n",P);
s = (char*) malloc (sizeof(char) *P );
 
        for(i = 0; i < P; i++)
        {
 
 
                ch = 128 + rand() %31 ;
                while((ch < 128) && strchr(s,ch))
                        ch = 128 + rand() % 31;
                s[i] = ch;
                s[i + 1] = '\0';
               printf("%c",ch);
        }  printf("\n");
 
 
getch();
}

Объяснение кода листинга программы

  1. В начале программы объявляются переменные:
    • q - массив символов для хранения логина;
    • n - число, определяющее количество итераций в цикле;
    • i, j - индексы для работы с массивом;
    • Q - длина логина;
    • P - переменная для хранения результата вычисления;
    • s - указатель на символ, для хранения результата вычисления;
    • ch - символ, получаемый из генератора случайных чисел.
  2. Далее происходит запрос на ввод логина и его сохранение в массиве q.
  3. Вычисляется длина логина (Q), которая используется в дальнейшем в коде.
  4. После этого выполняется операция приведения размера массива Q к размеру 5-го числа Фибоначчи (с использованием формулы (QQQ)%5).
  5. Выделяется память под массив s размером Q.
  6. В цикле формируется строка-пароль, состоящая из случайно выбранных символов от 'a' до 'z', которые не встречаются в логине.
  7. После этого выполняется операция приведения размера массива P к размеру 5-го числа Фибоначчи (с использованием формулы (Q*Q)%6).
  8. Выделяется память под массив s размером P.
  9. В цикле формируется строка-пароль, состоящая из случайно выбранных символов от ' ' до '~', которые не встречаются в логине.
  10. В конце программы ожидается нажатие клавиши для выхода из программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы