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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2010, 00:21   #1
elka
Пользователь
 
Аватар для elka
 
Регистрация: 05.01.2010
Сообщений: 42
Вопрос модули в Си, как с ними работать?

Человечки, Всех с Рождеством Христовым!!

А теперь у меня вопросик: как работать с модулями? Я знаю, что пишутся они как обычные программки, только без главной ф-ции, а потом в другой программке пишем в инклудах в кавычках. Но что-то у меня компилятор показывает ошибку
Цитата:
Unable to open include file 'MASS.CPP'
на вот мой инклудик модуля
Цитата:
#include"MASS.cpp"
Что я неправильно делаю? Или какой-то пунктик выполнения забыла?
elka вне форума Ответить с цитированием
Старый 07.01.2010, 02:00   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

cpp не инклудятся, а ложатся рядом
counter вне форума Ответить с цитированием
Старый 07.01.2010, 02:09   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от elka Посмотреть сообщение
Человечки, Всех с Рождеством Христовым!!

А теперь у меня вопросик: как работать с модулями? Я знаю, что пишутся они как обычные программки, только без главной ф-ции, а потом в другой программке пишем в инклудах в кавычках. Но что-то у меня компилятор показывает ошибку на вот мой инклудик модуля
Что я неправильно делаю? Или какой-то пунктик выполнения забыла?
в C++ модулей как таковых нет и так как Вы делаете делать не надо, нужно писать отдельный файл, так называемый хидер(заголовочник), в котором опишите функции, какие есть в .cpp и уже этот заголовочник подключать в .cpp, который использует ф-ции того .cpp, чьи функции описывает заголовочник.

cool_lib.h
Код:
int cool_func(int a, int b);
int mega_func(int a, int b, int c);
cool_lib.cpp
Код:
#include "cool_lib.h"
int cool_func(int a, int b)
{
    return a + b;
}

int mega_func(int a, int b, int c)
{
    return a + b + c;
}
main.cpp
Код:
#include "cool_lib.h"

int main()
{
    cool_func(1, 2);
    mega_func(3, 4, 5);
    return 0;
}
компилировать следующим образом:
Код:
cl main.cpp cool_lib.cpp
вместо cl Ваш компилятор ) Если IDE используете какую-то, то просто в проект добавьте .cpp файл
netrino вне форума Ответить с цитированием
Старый 07.01.2010, 19:41   #4
elka
Пользователь
 
Аватар для elka
 
Регистрация: 05.01.2010
Сообщений: 42
По умолчанию

А можно понятнее написать? Почему не правильно?
Пусть есть файл MASS.CPP, в котором
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

class element
{

private:
int n;
int *a;

public:
element();
void vvod_1();
void vvod_2();
void vvod_3();
void vivod();


~element()
{
delete[]a;
 printf("\n\n  rabotal destructor");
}

};

element::element()
{
a=new int[n+1];
printf("\n rabotal konstructor 1");
}


void element::vvod_1()
{
int i;

printf("\n vvedite kol-vo elementov massiva:  ");
scanf("%d",&n);
for (i=0;i<n;i++)
*(a+i)=-25+0.5*random(500);
}


void element::vvod_2()
{
int i;

printf("\n vvedite kol-vo elementov massiva:  ");
scanf("%d",&n);
for (i=0;i<n;i++)
{
 printf("\n vvedite element massiva:  ");
 scanf("%d",(a+i));
}
}


void element::vvod_3()
{
FILE *f1;
int i,t=0,kol=0,l;

printf("\n vvedite kol-vo elementov massiva:  ");
scanf("%d",&n);

f1=fopen("C:\\BORLANDC\\BIN\\massiv.txt","r");
while (!feof(f1))
{
 fscanf(f1,"%d",(a+kol));
 kol++;
}
fclose(f1);
//printf("\n kol-vo=%5d  ",kol);

f1=fopen("massiv.txt","r");
 while (!feof(f1))
  {
   //for(i=0;i<n;i++)
   l++;
   if (l<=kol) fscanf(f1,"%d",&t);
	       else t=0;
	       *(a+i)=t;
  }
fclose(f1);
}


void element::vivod()
{
int i;

printf("\n");
for (i=0;i<n;i++)
printf(" %3d",*(a+i));
}
а потом есть ругой файл KNOPKA.CPP, в котором
#include<graphics.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<dos.h>

#include"MASS.cpp"
и далее всякие бла-бла-бла, которые неапознаются

Что неправильно??

Последний раз редактировалось Stilet; 09.01.2010 в 12:30.
elka вне форума Ответить с цитированием
Старый 07.01.2010, 19:48   #5
Serjuk
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 136
По умолчанию

Код:
#include<graphics.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<dos.h>

#include"MASS.h"
и надо создать MASS.h
в котором описываешь прототипы функций используемых в файле MASS.cpp
Serjuk вне форума Ответить с цитированием
Старый 07.01.2010, 23:47   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Что неправильно??
нужно описание класса положить в хидер, а его реализацию в спп

// MASS.Н
Код:
#pragma once

class element
{

private:
int n;
int *a;

public:
element();
void vvod_1();
void vvod_2();
void vvod_3();
void vivod();
~element();

};
// MASS.CPP

Код:
...
#include "MASS.H"

element::~element()
{
delete[]a;
printf("\n\n rabotal destructor");
}

element::element()
{
a=new int[n+1];
printf("\n rabotal konstructor 1");
}

void element::vvod_1()
{
int i;

printf("\n vvedite kol-vo elementov massiva: ");
scanf("%d",&n);
for (i=0;i<n;i++)
*(a+i)=-25+0.5*random(500);
}


void element::vvod_2()
{
int i;

printf("\n vvedite kol-vo elementov massiva: ");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("\n vvedite element massiva: ");
scanf("%d",(a+i));
}
}


void element::vvod_3()
{
FILE *f1;
int i,t=0,kol=0,l;

printf("\n vvedite kol-vo elementov massiva: ");
scanf("%d",&n);

f1=fopen("C:\\BORLANDC\\BIN\\massiv .txt","r");
while (!feof(f1))
{
fscanf(f1,"%d",(a+kol));
kol++;
}
fclose(f1);
//printf("\n kol-vo=%5d ",kol);

f1=fopen("massiv.txt","r");
while (!feof(f1))
{
//for(i=0;i<n;i++)
l++;
if (l<=kol) fscanf(f1,"%d",&t);
else t=0;
*(a+i)=t;
}
fclose(f1);
}


void element::vivod()
{
int i;

printf("\n");
for (i=0;i<n;i++)
printf(" %3d",*(a+i));
}
а вот потом в KNOPKA.CPP нужно сделать так

Код:
#include "MASS.H"
counter вне форума Ответить с цитированием
Старый 08.01.2010, 01:18   #7
elka
Пользователь
 
Аватар для elka
 
Регистрация: 05.01.2010
Сообщений: 42
По умолчанию

Спасибочки всем за отзывчивость, но надо быть проще !! Просто надо было поместить эти файлики, которые потом стали инклудиками в папочку инклудиков в си)) И у меня все вышло и с буквочками cpp после точечки))
elka вне форума Ответить с цитированием
Старый 08.01.2010, 01:30   #8
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от elka Посмотреть сообщение
Спасибочки всем за отзывчивость, но надо быть проще !! Просто надо было поместить эти файлики, которые потом стали инклудиками в папочку инклудиков в си)) И у меня все вышло и с буквочками cpp после точечки))
Оно то вышло, но потом могут быть с этим проблемы ) Например, если у вас несколько .cpp файлов будут использовать этот класс и Вы в оба включите файл класса как #include "Mass.cpp", то, при компиляции, компоновщик выдаст ошибку о множественном определении методов классов. Делайте правильно(так как Вам описали) и, помимо избежания вот таких вот проблем, возможно это сыграет некую роль в оценке Вашей работы преподавателем ) Более того, добавлять всё в папку с инклудами си ещё более не верный шаг, все файлы должны быть в папке с проектом.
netrino вне форума Ответить с цитированием
Старый 09.01.2010, 02:57   #9
elka
Пользователь
 
Аватар для elka
 
Регистрация: 05.01.2010
Сообщений: 42
По умолчанию

Спасибочки, что предупредили
^_^
elka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как добавить модули в раздел uses kate158 Общие вопросы Delphi 1 25.08.2009 09:52
Как удалять Модули в VBA? segail Microsoft Office Excel 1 18.06.2009 06:11
как связать модули в C++ Тurbo? Эльвира Егорова Общие вопросы C/C++ 2 18.11.2008 16:43
Как в Microsoft Visual Basic 6.0 открыть Exel файл, считать с него данные(числа) и дальше работать с ними Dimon88 Microsoft Office Excel 7 20.10.2007 13:30
Где найти коды, подключение, синхронизацию Motorola p2k с ПК и как с ними работать? Captain Nemo Свободное общение 0 02.10.2007 11:10