Форум программистов, компьютерный форум CyberForum.ru

Поэлементно сложить два массива - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
19.07.2012, 18:49     Поэлементно сложить два массива #1
Всем привет, сижу делаю задание:
суть такова:
надо поэлементно сложить 2 массива, но при этом массивы вводятся в виде unsigned char
необходимо из первого введенного массива, перекинуть значения в класс Hex, где значения массива вводятся в шестнадцатеричной системе исчисления в числовой вид
необходимо из первого введенного массива, перекинуть значения в класс Money, где значения массива надо привести в числовой вид
при этом сложение полученных массивов должно быть написано с помощюь переопределения виртуальной функции
вот накидал быдлокод, помогите реализовать задачу
C++
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <iostream.h>
#include <conio.h>
 
class Array
{
        public:
    static const int limit=10;
    unsigned char massiv[limit];
    int znachenie,kol;
        public:
    Array();
    Array(int kol,int znachenie);
    ~Array(){};
 
    virtual void Summa(Array a,Array b);
    friend class Hex;
    friend class Money;
};
 
class Hex: public Array
{
    unsigned char hex[100];
    unsigned int dec;
        public:
    int CharToDec();
    int HexToDec();
    virtual int Summa(Hex a,Hex b);
    friend class Array;
    friend class Money;
};
 
class Money: public Array
{
    unsigned char money[100];
    unsigned int dec;
        public:
    int CharToDec();
    virtual int Summa(Money a,Money b);
    friend class Hex;
    friend class Array;
};
 
 
 
Array::Array(int kol,int znachenie)
{
    for (int i=0; i<((kol>limit)?limit:kol); i++)
        massiv[i]=znachenie;
}
 
Array::Array()
{
    for(int i=0;i<limit;i++)
        massiv[i]=0;
}
 
void Array::Summa(Array a,Array b)
{
    Array c;
    for (int i=0; i<((kol>limit)?limit:kol); i++)
    {
        c.massiv[i]=a.massiv[i]+b.massiv[i];
        cout<<c.massiv[i];
    }
}
//--------------------------------------------------------------------//
int Hex::HexToDec()
{
    int v;     //вес разряда шестнадцатеричного числа
    int err;   //err==1 - в строке недопустимый символ
    int i;
    err=0;
    strupr(hex); //преобразование введенной строке к верхнему регистру
    dec=0;
    v=1; //вес младшего разряда шестнадцатеричного числа
    for (i = strlen(hex)-1; i>=0; i--)
    {
        if (hex[i]>='0' && hex[i]<='9')
        dec+=v*(hex[i]-48);
        else if (hex[i]>='A' && hex[i]<='F')
            dec+=v*(hex[i]-55);
             else  //недопустимый символ
             {
                err=1;
                break;
             }
             v*=16;
    }
    if(!err)
    {
        printf("Shestnadchaterichnomu chislu %s",hex);
        printf(" sootvetstvuet desyatichnoe %u\n",dec);
    }
    else
    {
       printf("Stroka %s ne yavlyaetsya ",hex);
       printf("shestnadchaterichnum chislom\n");
    }
    return dec;
}
 
int Hex::CharToDec()
{
    dec=atoi(hex);
    return dec;
}
//-----------------------------------------------------------------//
int Hex::Summa(Hex a,Hex b)
{
    return a.HexToDec()+b.HexToDec();
}
 
int Money::CharToDec()
{
    dec=atoi(money);
    return dec;
}
 
int Money::Summa(Money a,Money b)
{
    return a.CharToDec()+b.CharToDec();
}
 
 
 
 
int main()
{
    Array array;
    Hex hex;
    Money money;
    cout<<"Vvedte kol: ";
    cin>>array.kol;
    for (int i=0; i<array.kol; i++)
    {
        cout<<"Insert #"<<i<<" of massiv ";
        cin>>array.massiv[i];
        hex.HexToDec();
    }
 
 
    getch();
    return 0;
}
заранее всем спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2012, 18:49     Поэлементно сложить два массива
Посмотрите здесь:

C++ Сложить два массива поэлементно
Как сложить два массива C++
Сложить два упорядоченных массива в один C++
Сложить два двумерных массива C++
Как сложить два случайных числа из массива? C++
C++ Как сложить два float-а, имея их представление в виде массива байт?
C++ Найти среднее арифметическое элементов массива, сравнить два массива поэлементно
C++ Сравнить поэлементно два одномерных массива, и через if определить, равны эти элементы или нет
C++ Сложить поэлементно два массива I и J. Результат в массиве I
C++ Сложить поэлементно два массива
Как сложить два символьных массива в один? C++
C++ Поэлементно суммировать два заданных массива

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fooly
19.07.2012, 19:00
  #2

Не по теме:

А что такое unsigned char? Его используют и для чисел, чтобы отрицательных не было?

PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
19.07.2012, 19:33     Поэлементно сложить два массива #3
Цитата Сообщение от Fooly Посмотреть сообщение

Не по теме:

А что такое unsigned char? Его используют и для чисел, чтобы отрицательных не было?

Иногда - да. Всё-таки меньше всего места занимает (хотя кого это сейчас волнует?). А вот для неотрицательных пойдут также unsigned int и unsigned long.

Добавлено через 16 минут
Mr. Pyatachok, если я не ошибаюсь, то число в шестнадцатеричном виде можно вывести так:
C++
1
cout << hex << number;
, где number - число. Если компилятор будет ругаться, подключи заголовочный файл iomanip.h (сам я точно не помню, надо или не надо).
Yandex
Объявления
19.07.2012, 19:33     Поэлементно сложить два массива
Ответ Создать тему
Опции темы

Текущее время: 17:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru