Не работает генерация строки-пароля - 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(); }
Объяснение кода листинга программы
- В начале программы объявляются переменные:
- q - массив символов для хранения логина;
- n - число, определяющее количество итераций в цикле;
- i, j - индексы для работы с массивом;
- Q - длина логина;
- P - переменная для хранения результата вычисления;
- s - указатель на символ, для хранения результата вычисления;
- ch - символ, получаемый из генератора случайных чисел.
- Далее происходит запрос на ввод логина и его сохранение в массиве q.
- Вычисляется длина логина (Q), которая используется в дальнейшем в коде.
- После этого выполняется операция приведения размера массива Q к размеру 5-го числа Фибоначчи (с использованием формулы (QQQ)%5).
- Выделяется память под массив s размером Q.
- В цикле формируется строка-пароль, состоящая из случайно выбранных символов от 'a' до 'z', которые не встречаются в логине.
- После этого выполняется операция приведения размера массива P к размеру 5-го числа Фибоначчи (с использованием формулы (Q*Q)%6).
- Выделяется память под массив s размером P.
- В цикле формируется строка-пароль, состоящая из случайно выбранных символов от ' ' до '~', которые не встречаются в логине.
- В конце программы ожидается нажатие клавиши для выхода из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д