Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 11.08.2017, 18:14   #1
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 176
Репутация: 10
По умолчанию Многофайловая программа.

Здравствуйте!
Дошел в своём обучении до создания многофайловых программ.
Столкнулся с непониманием со стороны компилятора. Причем, вероятно, взаимном. Да стопудово!))
В общем есть код, который надо собрать в одну программу. Я делаю всё по инструкции учебника, но пока не получается.
Пишет мне компилятор, что не может найти verylong.h.
В общем заголовочный файл такой:
Код:

#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
const int SZ=1000;
class verylong
{
private:
	char vlstr[SZ];
	int vlen;
	verylong multdigit(const int) const;
	verylong mult10(const verylong) const;
public:
	verylong() : vlen(0)
	{
		vlstr[0]='\0';
	}
	verylong(const char s[SZ])
	{
		strcpy(vlstr, s);
		vlen=strlen(s);
	}
	verylong(const unsigned long n)
	{
		ltoa(n, vlstr, 10);
		strrev(vlstr);
		vlen=strlen(vlstr);
	}
	void putvl() const;
	void getvl();
	verylong operator + (const verylong);
	verylong operator * (const verylong);
};

Реализационная часть класса verylong такая:
Код:

#include"verylong.h"
//------------------------------
void verylong::putvl()const
{
	char temp[SZ];
	strcpy(temp,vlstr);
	cout<<strrev(temp);
}
//------------------------------
void verylong::getvl()
{
	cin>>vlstr;
	vlen=strlen(vlstr);
	strrev(vlstr);
}
//-------------------------------
verylong verylong::operator + (const verylong v)
{
	char temp[SZ];
	int j;
	int maxlen=(vlen>v.vlen)? vlen : v.vlen;
	int carry=0;
	for(j=0; j<maxlen; j++)
	{
		int d1=(j>vlen-1) ? 0:vlstr[j]-'0';
		int d2=(j>v.vlen-1) ? 0:v.vlstr[j]-'0';
		int digitsum=d1+d2+carry;
		if (digitsum>=10)
		{
			digitsum-=10;
			carry=1;
		}
		else
			carry=0;
		temp[j]=digitsum+'0';
	}
	if(carry==1)
		temp[j++]='1';
	temp[j]='\0';
	return verylong(temp);
}
//-------------------------------------------------
verylong verylong::operator * (const verylong v)
{
	verylong pprod;
	verylong tempsum;
	for(int j=0; j<v.vlen; j++)
	{
		int digit=v.vlstr[j]-'0';
		pprod=multidigit(digit);
		for(int k=0; k<j; k++)
			pprod=mult10(pprod);
		tempsum=tempsum+pprod;
	}
	return tempsum;
}
//----------------------------------------------
verylong verylong::mult10(const verylong v) const
{
	char temp[SZ];
	for(int j=v.vlen-1; j>=0; j--)
		temp[j+1]=v.vlstr[j];
	temp[0]='0';
	temp[v.vlen+1]='\0';
	return verylong (temp);
}
//-------------------------------------------------
verylong verylong::multdigit(const int d2) const
{
	char temp[SZ];
	int j, carry=0;
	for(j=0; j<vlen; j++)
	{
		int d1=vlstr[j]-'0';
		int digitprod=d1*d2;
		digitprod+=carry;
		if(digitprod>=10)
		{
			carry=digitprod/10;
			digitprod-=carry*10;
		}
		else
			carry=0;
		temp[j]=digitprod+'0';
	}
	if(carry !=0)
		temp[j++]=carry+'0';
	temp[j]='\0';
	return verylong(temp);
}

Сама программа которая это всё использует такая:

Код:

#include "stdafx.h"
#include"verylong.h"

int _tmain(int argc, _TCHAR* argv[])
{
	unsigned long numb, j;
	verylong fact=1;
	cout<<"\n\nВведите число: ";
	cin>>numb;
	for(j=numb; j>0; j--)
		fact=fact*j;
	cout<<"Факториал= ";
	fact.putvl();
	cout<<endl;
	return 0;
}

Как всё это собрать в кучу не понимаю. Поверьте, использовал немалое количество вариантов чего и как нажать в какой последовательности и т.д и т.п...
Все эти директории каталоги и так далее подключал нажимал на точечки в списке и пока не добился результата.
У меня Visual C++ 2008. На русском языке.
Помогите пожалуйста одолеть проблему.
KAMLS вне форума   Ответить с цитированием
Старый 11.08.2017, 20:00   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 10,368
Репутация: 1609

icq: 216409213
По умолчанию

Не знаю, что вы там нажимали и где файлы лежат вы то же не показываете. В студии создаете новый вин32 консольный проект и все три файла кидаете рядом друг с другом ( тем где создатся с мейном). Потом кликаете правой на проекте и выбираете добавить - уже существующие и выбираете ваши verylong h/cpp
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 12.08.2017, 12:11   #3
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 176
Репутация: 10
По умолчанию

Понимаете, делаю всё по инструкции. Но пока не получается. Вот скриншоты действий.
Еще пишет:
cpp(91) : fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "stdafx.h"" в источник.

В какой источник?
Посоветуйте пожалуйста правильные действия. Там на скриншоте видно отчетливо, что заголовочный файл verylong.h включен в проект. И реализационная часть verylong.cpp тоже.
Изображения
Тип файла: jpg кадр.jpg (98.2 Кб, 0 просмотров)
Тип файла: jpg кадр_2.jpg (97.5 Кб, 0 просмотров)
Тип файла: jpg кадр_3.jpg (73.6 Кб, 0 просмотров)
Тип файла: jpg кадр_4.jpg (76.0 Кб, 0 просмотров)
Тип файла: jpg кадр_5.jpg (105.2 Кб, 0 просмотров)
KAMLS вне форума   Ответить с цитированием
Старый 12.08.2017, 12:15   #4
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,985
Репутация: 3402

icq: 446843180
skype: phoenix_proger
По умолчанию

в исходный файл ваш(поидее это вроде каждый cpp файл).

вы хоть обращайте внимание на настройки проекта и прочие файлы в проекте.
(Как вариант отключить его и удалить stdafx.* файлы)
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 12.08.2017, 13:04   #5
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 10,368
Репутация: 1609

icq: 216409213
По умолчанию

Если у вас включены предкомпиленные заголовки, то во всех cpp первым пропишите включение stdafx.h

П.С. И да, проблема с stdafx и не находит ваш verylong (как вы писали в начале темы) это разные вещи.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 12.08.2017, 13:25   #6
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,166
Репутация: 1578
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
В какой источник
Который source - исходник.
Если хотите заниматься всем этим серьезно - забейте как можно раньше на русифицированные тулзы.
waleri вне форума   Ответить с цитированием
Старый 12.08.2017, 20:27   #7
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 176
Репутация: 10
По умолчанию

Спасибо всем. Проблему победил))
KAMLS вне форума   Ответить с цитированием
Старый 13.08.2017, 11:11   #8
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 10,368
Репутация: 1609

icq: 216409213
По умолчанию

Скажите, а какой тайный смысл использовать IDE, которой 10 лет? И компилятор, который не слышал о нескольких новых стандартах? Что это за мазохизм такой?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 14.08.2017, 06:50   #9
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 176
Репутация: 10
По умолчанию

)))Да я еще XP юзаю. Вот и это..В общем..
Но скоро перестроюсь! Хочу ноут взять в кредит с норм системой.))
KAMLS вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не запускается программа. Программа должна заполнить массив символом. Через процедуру. anasttb Паскаль 1 27.03.2017 19:31
нужна программа QControl программа для внутрилабораторного контроля качества Версия 5.5. миньен Софт 7 02.03.2014 00:28
Программа на Pascal в Lazarus и программа для одномерного массива целых чисел Yegorka Lazarus, Free Pascal, CodeTyphon 13 20.12.2012 18:02
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль 12 14.10.2009 20:09




09:19.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru