Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Создание и использование модулей в С++ / 4 сообщений из 4, страница 1 из 1
10.12.2004, 11:17
    #32822566
magnolija
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание и использование модулей в С++
Нужно создать файл с арифметическими операциями
пример функция вычисления суммы чисел A и B длины n

Число представляется как массив

Вот что я делала:

1. Создала такой файл с телом модуля digits.c

#include "digits.h"
DIGIT Add(DIGIT C[], const DIGIT A[], const DIGIT B[], int n)
{
TWODIGIT T;
DIGIT d = 0;
int i;
for (i = 0; i < n; i++)
{
T = (TWODIGIT)A[ i ] + B[ i ] + d;
C[ i ] = LODIGIT(T);
d = HIDIGIT(T);
}
return d; }

2. Заголовочный файл модуля digits.h:

#ifndef DIGITS_H
#define DIGITS_H 1

#define LODIGIT(T)((DIGIT)(T))
#define HIDIGIT(T)((DIGIT)((T)>>8))

typedef unsigned __int8 DIGIT;
typedef unsigned __int16 TWODIGIT;

DIGIT Add(DIGIT C[], const DIGIT A[], const DIGIT B[], int n);

#endif

3. основная программа:

#include <iostream>
#include <conio.h>
#include "digits.h"

void main() {
const int N=5;
DIGIT REZ[N];
DIGIT PIR[N];
DIGIT ANT[N];

cout << "vvod pervogo cisla:\n";
int ch;
for(int i=0;;i++){
cin>>ch;
if(ch==-1)break;
PIR[ i ]=ch;
};

cout << "vvod vtorogo cisla:\n";
//cin >> str2;
for(int i=0;;i++){
cin>>ch;
if(ch==-1)break;
ANT[ i ]=ch;
};

DIGIT Add(REZ, PIR, ANT, N);

cout << "Rezultat: ";
int k=0;
for (int i=N-1;i>=k;i--) //vyvod rezultata;
{ cout <<int(REZ[ i ])<<' '; }
cout << "\n";
}
getch();}

Помогите разобраться что сделано не так.
...
Рейтинг: 0 / 0
10.12.2004, 12:01
    #32822745
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание и использование модулей в С++
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
// digits.h
#ifndef DIGITS_H
#define DIGITS_H

#define LODIGIT(T)((DIGIT)(T))
#define HIDIGIT(T)((DIGIT)((T)>> 8 ))

typedef unsigned __int8 DIGIT;
typedef unsigned __int16 TWODIGIT;

#ifdef __cplusplus
extern "C" {
#endif
DIGIT Add(DIGIT C[], const DIGIT A[], const DIGIT B[], int n);
#ifdef __cplusplus
}
#endif
#endif 

// main.cpp
#include <iostream>
#include <conio.h>
#include "digits.h"

void main() {
const int N= 5 ;
DIGIT REZ[N];
DIGIT PIR[N];
DIGIT ANT[N];

std::cout << "vvod pervogo cisla:\n";
int ch;
for(int i= 0 ;;i++){
std::cin>>ch;
if(ch==- 1 )break;
PIR[ i ]=ch;
};

std::cout << "vvod vtorogo cisla:\n";
//cin >> str2;
for(int i= 0 ;;i++){
std::cin>>ch;
if(ch==- 1 )break;
ANT[ i ]=ch;
};

// DIGIT Add(REZ, PIR, ANT, N);

std::cout << "Rezultat: ";
int k= 0 ;
for (int i=N- 1 ;i>=k;i--) //vyvod rezultata;
{ std::cout <<int(REZ[ i ])<<' '; }
std::cout << "\n";
}
getch();
}

В смысл обработки я не вникал.
...
Рейтинг: 0 / 0
10.12.2004, 12:09
    #32822793
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание и использование модулей в С++
Я поставил комментарий на строку
// DIGIT Add(REZ, PIR, ANT, N);
подумав, что Вы вводите декларацию функции, а Вы видимо хотели функцию вызвать. Тогда так:
Код: plaintext
Add(REZ, PIR, ANT, N);

зы: И впредь, чтобы получить ответ на вопрос, надо его сначала задать, иначе понять с чем же у Вас проблемы крайне затруднительно.
...
Рейтинг: 0 / 0
11.12.2004, 11:48
    #32824442
magnolija
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание и использование модулей в С++
Но у меня выкидывает ошибку Unresolved external 'Add'
Как ее исправить?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Создание и использование модулей в С++ / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]