Консультация № 191449
10.10.2017, 12:49
0.00 руб.
0 4 0
Здравствуйте! Прошу помощи в следующем вопросе:

Помогите с задачей. Нужно написать программу-генератор паролей, в соответствие с требованиями Вашего варианта. Язык программирования С++.
Программа должна выполнять следующие действия:
a. Ввод идентификатора пользователя с клавиатуры. Данный идентификатор представляет собой последовательность символов , где N – количество символов идентификатора (может быть любым), - i – ый символ идентификатора пользователя.
b. Формирование пароля пользователя для данного идентификатора, где M – количество символов пароля, соответствующее Вашему варианту, и вывод его на экран. Алгоритм получения символов пароля указан в перечне требований
Перечень требований:
1)Кол-во символов пароля:12
2)b1 , ...., b1+Q - случайные малые буквы русского алфавита, где Q=N^3 mod 5
3)b1+Q+1, ..., b1+Q+1+P - случайные заглавные буквы русского алфавита, где P=N^2 mod 6
4)оставшиеся символы пароля случайные цифры

Вот что я смогла сделать:



Приложение:
#include "math.h"
#include "iostream"
#include "time.h"
#include "windows.h"
using namespace std;
string little = "абвгд...", big = "АБВГ..."; // {константы для хранения символов кириллицы}
int m, p, q, n;
string b, id, tmp;

void main()
{
setlocale(LC_ALL, "RUS");
srand(time(NULL));

Обсуждение

давно
Посетитель
401367
6
11.10.2017, 11:49
общий
Я сама пыталась ещё раз переделать код с Pascal на С++ и вот что у меня получилось:

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
string rSmall = "qwertyuiopasdfghjklzxcvbnm", rBig = "QWERTYUIOPASDFGHJKLZXCVBNM", b, id, tmp;
int M, N, P, Q, i;
M = 12;
cout<<"Identifikator";
cin>>"id";
N = id.length();
if (N == 0)
{
Q = 0;
P = 0;
}
else
{
Q = (int)(exp(3 * log(N))) % 5;
P = (int)(exp(2 * log(N))) % 6;
}
b = "";
i = 1;
while (i <= Q + 1)
{
b = b + rSmall[1 + (rand()*rSmall.length())];
}
cout<<endl<<"N="<<N<<"Q="<<Q<<"P="<<P<<endl;
cout<<"password:"<<"b";
}

Подскажите пожалуйста, почему Visual Studio 2015 выдает такую ошибку "Ошибка компилятора C2679"?
давно
Советник
400484
472
11.10.2017, 13:08
общий
Добрый день,
Ошибка компилятора C2679 - это:
двоичный «operator»: не найден оператор, принимающий правый операнд типа «type» (или отсутствует приемлемое преобразование)
Чтобы использовать этот оператор, необходимо перегрузить его для указанного типа или определить преобразование в тип, для которого определен оператор.

На сколько я понимаю, это 12 строка: " cin>>"id"; ". Вы пытаетесь получить от пользователя число. Правильно сделать так:
Код:
cin>>id;

В 31 строке, возможно, такая же ошибка: " cout<<"password:"<< b; ".
давно
Посетитель
401367
6
11.10.2017, 13:22
общий
Адресаты:
Помогите пожалуйста исправить данную программу
давно
Посетитель
401367
6
12.10.2017, 07:01
общий
12.10.2017, 07:03
Цитата: solowey

На сколько я понимаю, это 12 строка: " cin>>"id"; ". Вы пытаетесь получить от пользователя число. Правильно сделать так:
cin>>id;


Я исправила двенадцатую строчку, Как вы написали. Но ошибка такая же осталось и появилась еще одна ошибка "отсутствует оператор ">>", соответствующий этим операндам". Скажите пожалуйста, как правильно исправить этот код. Я работаю с Visual Studio 2015
Форма ответа