Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2013, 17:54   #1
MEJIOMAH
Новичок
Джуниор
 
Регистрация: 23.03.2013
Сообщений: 2
По умолчанию Не могу довести до ума программу

было такое задание :
Программа должна содержать:
• функция char* GetComputerData(), которая возвращает серийный номер жесткого диска
• функцію char* CalculateSerialNumber(char* comp_data, char* user_name), которая высчитывает серийный номер на основе уникального значения и имени пользователя.
• Алгоритм формирования серийного номера должен базироваться на операции XOR (длинна серийного номера должна быть 8 символов)
Программа проверки серийного номера должна содержать:
• Функцию char* GetComputerData(), которая возвращает значение серийного номера;
• Функцию bool IsValidSerialNumber(char* comp_data, char* user_name, char* serial_number), которая возвращает значение true если серийный номер правильный и значение false в другом случае

Вот на чем я остановился, и никак не получается сделать эту программу одним файлом (а не разбитым на 4 разных как здесь).

Код:
SerialGen.cpp
#include "stdafx.h"
#include <iostream>
#include "string.h"
#include "Functions.h"
using namespace std;


int main(int argc, char* argv[])
{
	char *login = new char[]; 
	char *SerialOut = new char[];
	char ans;

	cout<<"Press your login "; 
	cin>>login;
	cout<<login<<"\n";
	
	SerialOut=CalculateSerialNumber(GetComputerData(),login);
	cout<<"\n"<<SerialOut;
	
	do
	{
		cout<<"\n Wait (y,n) \t";
		cin>>ans;
	}	while(ans=='y');
	
	return 0;
}

CalculateSerialNumber.cpp
#include "stdafx.h"
#include "string.h"
#include <iostream>
using namespace std;

char* GetComputerData()
{

	return "12345678";
}

char* CalculateSerialNumber(char* comp_data, char* user_name)
{
	char *MagicKey = new char[];
	char *Alphabet = new char[];
	
	int length,length_name,length_comp_data,length_Alphabet;
	int n;

	Alphabet="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	MagicKey="keyboardlogitech";
	
	length_Alphabet=strlen(Alphabet);
	length=strlen(MagicKey); 
	length_name=strlen(user_name);
	length_comp_data=strlen(comp_data);

	n=length;
	char *Serial = new char[n];
	for(int i=0;i<length;i++)
	{
		int q,w,e;

		q=i%length_name;
		w=i%length_comp_data;
		e=i%length;
		Serial[i]=MagicKey[e]^comp_data[w]^user_name[q];
		Serial[i]=Alphabet[Serial[i]%length_Alphabet];
		if (i==length-1) Serial[i+1]=0;
	}

	return Serial;
}

Functions.h
char* CalculateSerialNumber(char* comp_data, char* user_name);
char* GetComputerData();

Validation.cpp
#include "stdafx.h"
#include <iostream>
#include "string.h"
#include "Functions.h"
using namespace std;


bool IsValidSerialNumber(char* comp_data,char* user_name,char* serial_number)
{
	char *Serial = new char[];
	bool out;
	int length_Serial,length_SerialIn;
	
	Serial=CalculateSerialNumber(comp_data,user_name);

	length_SerialIn=strlen(serial_number);
	length_Serial=strlen(Serial);
		
	if (length_SerialIn==length_Serial)
	{
		for (int i=0;i<length_Serial;i++)
		{
			if (Serial[i]==serial_number[i]) out=true;
			else 
			{
				out=false;
				break;
			}
		}
	}
	else out=false;

	return out;
}

int main(int argc, char* argv[])
{
	char *login = new char[]; 
	char *SerialIn = new char[];
	bool Valid;
	char ans;
	
	cout<<"Press your login "; 
	cin>>login;
	cout<<login<<"\n";

	CalculateSerialNumber(GetComputerData(),login);
	
	cout<<"Press serial number \t";
	cin>>SerialIn;
	cout<<"\n";

	Valid=IsValidSerialNumber(GetComputerData(),login,SerialIn);

	if (Valid==true) cout<<"Serial is valid. Greetings! \n";
	if (Valid==false) cout<<"Serial is invalid. Try again\n";
	
	do
	{
		cout<<"\n Wait (y,n) \t";
		cin>>ans;
	}	while(ans=='y');

	return 0;
}
MEJIOMAH вне форума Ответить с цитированием
Старый 23.03.2013, 18:23   #2
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию

может глупый вопрос, конечно, но почему main'ов две? Это две разные программы?
Да, и по моему глупому мнению мне кажется, что вместо
Цитата:
CalculateSerialNumber.cpp
нужно было бы дать такое же имя как у хидера, ну и в нем же подключить
Код:
#include "Functions.h"
Если я правильно понял проблему, конечно.
А вообще в данном случае я бы и реализацию функций засунул в .h.

Последний раз редактировалось monolit111; 23.03.2013 в 18:30.
monolit111 вне форума Ответить с цитированием
Старый 24.03.2013, 14:20   #3
MEJIOMAH
Новичок
Джуниор
 
Регистрация: 23.03.2013
Сообщений: 2
По умолчанию

Сначала для простоты решения решил разбить всё задание на несколько подпрограмм(отсюда и 2 main-a), а теперь никак не могу сложить всё это в одно целое, вот и прошу помощи на форуме, может найдется тот кто поможет.
MEJIOMAH вне форума Ответить с цитированием
Старый 24.03.2013, 17:34   #4
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Подпрограмма это функция, а не точка входа (main). Функция main должна быть только одна, иначе код не скомпилируется.
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Tasm, не могу довести до ума Andi3z Помощь студентам 1 26.06.2011 18:39
Циклы. Не могу довести до ума man-utd- Помощь студентам 2 21.12.2010 20:05
Не могу довести до ума задачу в Паскале. Кому неспицца?) Ilotoshka Помощь студентам 2 24.11.2010 05:18
Не могу фильтр на форме довести до ума. Помогите пожалуйста. lg140980bav Microsoft Office Access 5 28.11.2009 18:31