Премини към съдържанието
Simeon8999

Колеги имам затруднение с преправянето на С файл в С++

Препоръчан отговор


Колеги трябва да правя дипломна за "little genetic aldorithm" като за целта ми е даден следния sors cod които се намира на следния линк: http://centres.exeter.ac.uk/cee/ga/LGADOS.C . За направата на моята дипломна ми трябва първо да го направя на С++. Желателно е да бъде разделен на .срр и на .h файл. Някой ако може да помогне, че аз въобще си нямам представа от C. Благодаря предварително. :(

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ако е без ООП просто слагаш функциите си в хедърния файл, а в главния .cpp файл само ги извикваш.

Редактирано от frozener (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ако е без ООП просто слагаш функциите си в хедърния файл, а в главния .cpp файл само ги извикваш.

Колега на мен ми трябва да използвам кода в MFC средата като от диалогов прозорец му подавам стойности и резултата ще го записвам примерно казано в масив. По този начин които ми казваш ще свърши ли работа това деление ? Благодаря !!!

:clap:

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ето малък пример с ООП:

main

#include <iostream>
#include "exampleclass.h"
using namespace std;
int main()
{
	exampleClass ob;
	ob.calcFunc();
	return 0;
}
header file

#ifndef EXAMPLECLASS_H
#define EXAMPLECLASS_H

class exampleClass
{
	public:
		exampleClass();
		int calcFunc();
		virtual ~exampleClass();
	protected:
	private:
};
#endif // EXAMPLECLASS_H

#include "exampleclass.h"
#include <iostream>
using namespace std;
exampleClass::exampleClass()
{
}

int exampleClass::calcFunc()
{
	//code here
}
exampleClass::~exampleClass()
{
}
Редактирано от frozener (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Колега благодаря за примера които си ми написал. :clap: А проблема е там, че аз немога да го направя на моят сорс, защото нямам си на представа от С само от С++ имам някаква представа. Много ще съм благодарен ако го приложиш на моят сорс. :help:


Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Колега благодаря за примера които си ми написал. :clap: А проблема е там, че аз немога да го направя на моят сорс, защото нямам си на представа от С само от С++ имам някаква представа. Много ще съм благодарен ако го приложиш на моят сорс. :help:

В общия случай това е нерешима задача (поне не автоматично), защото единия език е за функционално програмиране, другия за обектно

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

В общия случай това е нерешима задача (поне не автоматично), защото единия език е за функционално програмиране, другия за обектно

Какво имаш предвид "поне не автоматично" изобщо може ли това да стане както сам го замислил да го правя

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Какво имаш предвид "поне не автоматично" изобщо може ли това да стане както сам го замислил да го правя

Аз не съм програмист, но доколкото ми е известно двата метода (функционално и обектно програмиране) са много различни из осноси и силно се съмнявам да има инструмент за автоматично "транслиране" на С в С++ код

Може на ръка да се прекодират нещата, но за тази цел се иска някой да осмисли програмата на С и да създаде нова на С++ която прави същото

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Аз не съм програмист, но доколкото ми е известно двата метода (функционално и обектно програмиране) са много различни из осноси и силно се съмнявам да има инструмент за автоматично "транслиране" на С в С++ код

Може на ръка да се прекодират нещата, но за тази цел се иска някой да осмисли програмата на С и да създаде нова на С++ която прави същото

В идеализирания случай си прав. Обаче идеални неща няма... Иначе в C++ отдавна да са отрязали мостовете за обратна съвместимост към C. Всеки C код с малки изменения може да се прекомпилира със C++ компилатор. Единственото което може да те спре в този случай е здравият разум - във всеки конкретен случай може да се прецени нужно ли е да се пренаписва кода.

После тук доколкото виждам изобщо не е целта да се пренапише кода за C++. Целта е да се използва готов C код в C++ програма и този код няма повече да се променя... Не мисля, че си струва пренаписване.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

В идеализирания случай си прав. Обаче идеални неща няма... Иначе в C++ отдавна да са отрязали мостовете за обратна съвместимост към C. Всеки C код с малки изменения може да се прекомпилира със C++ компилатор. Единственото което може да те спре в този случай е здравият разум - във всеки конкретен случай може да се прецени нужно ли е да се пренаписва кода.

После тук доколкото виждам изобщо не е целта да се пренапише кода за C++. Целта е да се използва готов C код в C++ програма и този код няма повече да се променя... Не мисля, че си струва пренаписване.

Благодаря за пояснението значи с минимални промени на сорса може да стане задачата.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

В идеализирания случай си прав. Обаче идеални неща няма... Иначе в C++ отдавна да са отрязали мостовете за обратна съвместимост към C. Всеки C код с малки изменения може да се прекомпилира със C++ компилатор. Единственото което може да те спре в този случай е здравият разум - във всеки конкретен случай може да се прецени нужно ли е да се пренаписва кода.

После тук доколкото виждам изобщо не е целта да се пренапише кода за C++. Целта е да се използва готов C код в C++ програма и този код няма повече да се променя... Не мисля, че си струва пренаписване.

Лично мнение: не съм гледал кода, но ако в него се ползват указатели не мисля че е добра идея да се комбинира със С++.

Аз не съм програмист, но съм писал на асемблер и имам идея какво можеш да направиш ако имаш прекалено много мощ в ръцете си :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Лично мнение: не съм гледал кода, но ако в него се ползват указатели не мисля че е добра идея да се комбинира със С++.

Аз не съм програмист, но съм писал на асемблер и имам идея какво можеш да направиш ако имаш прекалено много мощ в ръцете си :)

Колега прав си аз съм студент и този сорс код ми е за дипломната, а дипломната ми работа е на С++ по принцип това което съм учил през годините на С++ ми беше много лесно но таз дипломна ми разката фамилята няма почти нищо общо с изучаваното през годините.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ето малък пример с ООП:

main

#include <iostream>
#include "exampleclass.h"
using namespace std;
int main()
{
	exampleClass ob;
	ob.calcFunc();
	return 0;
}
header file

#ifndef EXAMPLECLASS_H
#define EXAMPLECLASS_H

class exampleClass
{
	public:
		exampleClass();
		int calcFunc();
		virtual ~exampleClass();
	protected:
	private:
};
#endif // EXAMPLECLASS_H

#include "exampleclass.h"
#include <iostream>
using namespace std;
exampleClass::exampleClass()
{
}

int exampleClass::calcFunc()
{
	//code here
}
exampleClass::~exampleClass()
{
}

Колега примера е върши работа но като искам да извикам функцията int main() но само, че от друг файл как трябва да стане ?

написал съм

#include "exampleclass.h"
.......
exampleClass ex;
.....
как точно трябва да извикам функцията Int main()

:(

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Във всяка c/c++ програма може да има точно една функция main и тя се вика автоматично когато се стартира самата програма. Какво точно искаш да постигнеш? Ако просто искаш да преизползваш кода на main, прекръсти я, направи хедър и го включи във файла в който искаш да я ползваш.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Във всяка c/c++ програма може да има точно една функция main и тя се вика автоматично когато се стартира самата програма. Какво точно искаш да постигнеш? Ако просто искаш да преизползваш кода на main, прекръсти я, направи хедър и го включи във файла в който искаш да я ползваш.

точно това направих и стана благодаря

Имам следния проблем

Трябва да направя Unknowns да е динамичен масив.

И написах следното

......

int NumberOfUnknowns = 2;
int PopulationSize = 12;

double* Unknowns = new double [PopulationSize+1,NumberOfUnknowns+1];
........

for (Unknown=1;Unknown<=NumberOfUnknowns;Unknown++)
{
 Unknowns[Individual][Unknown] = EliteUnknowns[Unknown];
}
.......

И ми дава грешка на Unknowns[individual][unknown] = EliteUnknowns[unknown];

а когато го направя така работи

......

int NumberOfUnknowns = 2;
int PopulationSize = 12;


double Unknowns [13][3];
........

for (Unknown=1;Unknown<=NumberOfUnknowns;Unknown++)
{
 Unknowns[Individual][Unknown] = EliteUnknowns[Unknown];
}
.......

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Трябва да направя Unknowns да е динамичен масив.

double* Unknowns = new double [PopulationSize+1,NumberOfUnknowns+1];
new[] не може директно да се ползва за създаване на многомерни масиви... Ще трябва да се оправиш по друг начин, ако искаш ти да е двумерен масива.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

new[] не може директно да се ползва за създаване на многомерни масиви... Ще трябва да се оправиш по друг начин, ако искаш ти да е двумерен масива.

Искам да е двумерен

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Компютрите така или иначе представят многомерните масиви, като едномерни. Но щом държиш - логиката е ясна:

Искам да е двумерен

=>

...Ще трябва да се оправиш по друг начин...

Примерно вектор от вектори. Или си направи собствен контейнерен клас двумерен масив.
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.