// инициализации
cout<<endl<<i<<"-й элемент таблицы:"<<endl;
arrPointers[i]->edit();
cout<<*arrPointers[i]<<endl;
}
for (int i = 0; i<arrSize; i++)
{
*(arrResult+i) = new Complex();
}
while (menu());
return 0;
}
int menu() // меню LAB2
{
system("cls");
gotoxy(0, 0);
cout<<"Исходные значения:";
showTable(0, 2, arrPointers);
gotoxy(40, 0);
cout<<"Результаты:";
showTable(40, 2, arrResult);
gotoxy(20, 4);
cout<<model;
for (int i = 0; i<arrSize; i++)
{
gotoxy(37, 2+i);
if (*arrResult[i]==model)
cout<<"=";
else
{
Complex temp = model;
cout<<((int)*arrResult[i]<(int)temp ? ">" : "<");
}
gotoxy(65, 2+i);
cout<<"(int)Complex = "<<(int)*arrResult[i];
}
gotoxy(0, 18);
cout<<"Выберите операцию для применения к значениям из таблицы:"
<<"\n\t1 - вычитание"<<endl
<<"\t2 - сложение"<<endl
<<"\t3 - декремент"<<endl
<<"\t4 - инкремент"<<endl
<<"\t5 - изменить исходные значения"<<endl
<<"\tESC - выход"<<endl;
while (!_kbhit());
int choice = _getch();
switch (choice)
{
case '1': // вычитание
for (int i = 0; i<arrSize; i++)
{
sub(arrPointers, i);
}
break;
case '2': // сложение
for (int i = 0; i<arrSize; i++)
{
add(arrPointers, i);
}
break;
case '3': // декремент
for (int i = 0; i<arrSize; i++)
{
dec(arrResult, i);
}
break;
case '4': // инкремент
for (int i = 0; i<arrSize; i++)
{
inc(arrResult, i);
}
break;
case '5':
int num;
gotoxy(0,8);
cout<<"Введите номер элемента таблицы: ";
cin>>num;
gotoxy(0, 9);
arrPointers[num]->edit();
break;
case ESC:
deleteArr(arrPointers, arrSize);
deleteArr(arrResult, arrSize);
return FALSE;
}
return TRUE;
}
void showTable(int x, int y, Complex** &arr) // вывод таблицы объектов
{
for (int i = 0; i<arrSize; i++)
{
gotoxy(x, y+i);
cout<<i<<": ";
if (arr[i]!=NULL) // если указатель не равен нулю
{
cout<<*arr[i]; // то выводим объект
}
else
cout<<"empty"<<endl;
}
}
void add(Complex** arr, int num)
{
*arrResult[num] = *(arr[num])+model;
}
void sub(Complex** arr, int num)
{
*arrResult[num] = *(arr[num])-model;
}
void inc(Complex** arr, int num)
{
++*(arr[num]);
}
void dec(Complex** arr, int num)
{
--*(arr[num]);
}
void deleteArr(Complex** &arr, int size) // удаление массива
{
for (int i = 0; i<size; i++)
{
Complex::del(arr[i]); // удаление объектов массива
}
delete[] arr; // удаление массива
return;
}
void gotoxy(int x, int y) // перевод курсора в положение X,Y
{
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(hStdOut, coord);
return;
}
7. Дополнительные вопросы.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.