Массив и очередь
Дана программа
#include <iostream.h>
#include <stdlib.h>
#include <iomanip.h>
struct CH
{
int k;
CH *ptr;
};
void aadd_och( CH **, CH **);
void del_och ( CH **, CH **);
void main()
{
CH *pbeg=NULL, *pend=NULL;
char c;
while(1)
{
cout << "\n\n1. Добавление элемента в очередь\n";
cout << "2. Выборка элемента из очереди\n";
cout << "3. Выход из программы\n";
cout << "Ваш выбор:";
cin >> c;
switch©
{
case '1':
aadd_och(&pbeg, &pend);
break;
case '2':
del_och(&pbeg, &pend);
break;
case '3':
return;
}
}
}
void aadd_och ( CH **pn, CH **pk)
{
CH *r;
int m;
cout << "Введите целое число=";
cin >> m;
// выделяем динамическую память
r = new (CH);
if ( r == NULL)
{
cerr << "Ошибка выделения динамической памяти\n";
exit(1);
}
// заносим в дин. память введенное число
// и нулевое значение адреса
r->k = m;
r->ptr = NULL;
// определяем существуют ли очереди элементы
if (*pn == NULL)
{
// очередь пустая
// значит созданный элемент становится первым и последним
*pn = r;
*pk = r;
}
else
{
// в очереди есть элементы
// добавляем элемент в конец
(*pk)->ptr = r;
// в адресное поле элемента, который был
// последним занесл адрес вновь созданного эл-та
*pk = r; // вновь созданный элемент стал последним
// в очереди
}
}
void del_och ( CH **pn, CH **pk)
{
CH *p;
if (pn == NULL)
cout << "Очередь пуста. Выбирать нечего.\n";
else
{
p = *pn;
cout << "Из очереди выбран эл-т = " << p->k << endl;
*pn = p->ptr; // 2-ой элемент в очереди стал 1-ым
delete p; // удалили первый элемент из очереди
}
}
Требуется модифицировать текст программы для реализации самостоятельного задания.
Дан массив a[5][5]. Требуется ввести данные в массив. Все элементы массива записать в очередь, вывести содержимое очереди на экран двумя столбцами.
Замучилась просто
Вот до чего дошла
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <stdlib.h>
#include <iomanip>
#define I 5
#define J 5
using namespace std;
struct CH
{
int k;
CH *ptr;
};
void inputmas( int [J], char);
void aadd_och( CH **, CH **, int);
void printochered( int [j], char);
void main()
{
int a[5][5];
CH *pbeg=NULL, *pend=NULL;
char c;
while(1)
{
setlocale(LC_ALL,"Rus"); // вывод русских букв
cout << "\n\n1. Создание массива \n";
cout << "2. Запись элементов массива в очередь\n";
cout << "3. Вывод очереди на экран\n";
cout << "4. Выход из программы\n";
cout << "Ваш выбор:";
cin >> c;
switch©
{
case '1':
inputmas( a, 'a');
break;
case '2':
for (int i=0; i<I; i++)
for (int j=0; j < J; j++)
aadd_och(&pbeg, &pend, array[j]);
break;
case '3':
printochered( b, 'b');
break;
case '4':
return;
}
}
}
void inputmas(int m[J], char im)
{
int *p;
if (p = new int[j])
{
setlocale(LC_ALL,"Rus");
cout<<"\nВведите значения элементов массива";
for (int i=0; i<I; i++)
for (int j=0; j < J; j++)
{
cout<<im<<"\n p[" << i << " ][ " << j << " ]=";
cin>>*(p+i*|+j);
}
cout<<"\nВывод значений элементов массива";
for (i=0; i<I; i++)
for ( j=0; j < J; j++)
{
cout<<im<<" p["<<i<<"]["<<j<<"]="<<*(p+i*|+j);
}
else
cout<<"\nПамять не выделена";
}
void aadd_och ( CH **pn, CH **pk, int numberToMas)
{
CH *r;
// выделяем динамическую память
r = new (CH);
if ( r == NULL)
{
cerr << "Ошибка выделения динамической памяти\n";
exit(1);
}
// заносим в дин. память введенное число
// и нулевое значение адреса
r->k = numberToMas;
r->ptr = NULL;
// определяем существуют ли очереди элементы
if (*pn == NULL)
{
// очередь пустая
// значит созданный элемент становится первым и последним
*pn = r;
*pk = r;
}
else
{
// в очереди есть элементы
// добавляем элемент в конец
(*pk)->ptr = r;
// в адресное поле элемента, который был
// последним занесл адрес вновь созданного эл-та
*pk = r; // вновь созданный элемент стал последним
// в очереди
}
}
но не пойму как двумерный массив добавит в очередь.........
Дана программа
#include <iostream.h>
#include <stdlib.h>
#include <iomanip.h>
struct CH
{
int k;
CH *ptr;
};
void aadd_och( CH **, CH **);
void del_och ( CH **, CH **);
void main()
{
CH *pbeg=NULL, *pend=NULL;
char c;
while(1)
{
cout << "\n\n1. Добавление элемента в очередь\n";
cout << "2. Выборка элемента из очереди\n";
cout << "3. Выход из программы\n";
cout << "Ваш выбор:";
cin >> c;
switch©
{
case '1':
aadd_och(&pbeg, &pend);
break;
case '2':
del_och(&pbeg, &pend);
break;
case '3':
return;
}
}
}
void aadd_och ( CH **pn, CH **pk)
{
CH *r;
int m;
cout << "Введите целое число=";
cin >> m;
// выделяем динамическую память
r = new (CH);
if ( r == NULL)
{
cerr << "Ошибка выделения динамической памяти\n";
exit(1);
}
// заносим в дин. память введенное число
// и нулевое значение адреса
r->k = m;
r->ptr = NULL;
// определяем существуют ли очереди элементы
if (*pn == NULL)
{
// очередь пустая
// значит созданный элемент становится первым и последним
*pn = r;
*pk = r;
}
else
{
// в очереди есть элементы
// добавляем элемент в конец
(*pk)->ptr = r;
// в адресное поле элемента, который был
// последним занесл адрес вновь созданного эл-та
*pk = r; // вновь созданный элемент стал последним
// в очереди
}
}
void del_och ( CH **pn, CH **pk)
{
CH *p;
if (pn == NULL)
cout << "Очередь пуста. Выбирать нечего.\n";
else
{
p = *pn;
cout << "Из очереди выбран эл-т = " << p->k << endl;
*pn = p->ptr; // 2-ой элемент в очереди стал 1-ым
delete p; // удалили первый элемент из очереди
}
}
Требуется модифицировать текст программы для реализации самостоятельного задания.
Дан массив a[5][5]. Требуется ввести данные в массив. Все элементы массива записать в очередь, вывести содержимое очереди на экран двумя столбцами.
Замучилась просто
Вот до чего дошла
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <stdlib.h>
#include <iomanip>
#define I 5
#define J 5
using namespace std;
struct CH
{
int k;
CH *ptr;
};
void inputmas( int [J], char);
void aadd_och( CH **, CH **, int);
void printochered( int [j], char);
void main()
{
int a[5][5];
CH *pbeg=NULL, *pend=NULL;
char c;
while(1)
{
setlocale(LC_ALL,"Rus"); // вывод русских букв
cout << "\n\n1. Создание массива \n";
cout << "2. Запись элементов массива в очередь\n";
cout << "3. Вывод очереди на экран\n";
cout << "4. Выход из программы\n";
cout << "Ваш выбор:";
cin >> c;
switch©
{
case '1':
inputmas( a, 'a');
break;
case '2':
for (int i=0; i<I; i++)
for (int j=0; j < J; j++)
aadd_och(&pbeg, &pend, array[j]);
break;
case '3':
printochered( b, 'b');
break;
case '4':
return;
}
}
}
void inputmas(int m[J], char im)
{
int *p;
if (p = new int[j])
{
setlocale(LC_ALL,"Rus");
cout<<"\nВведите значения элементов массива";
for (int i=0; i<I; i++)
for (int j=0; j < J; j++)
{
cout<<im<<"\n p[" << i << " ][ " << j << " ]=";
cin>>*(p+i*|+j);
}
cout<<"\nВывод значений элементов массива";
for (i=0; i<I; i++)
for ( j=0; j < J; j++)
{
cout<<im<<" p["<<i<<"]["<<j<<"]="<<*(p+i*|+j);
}
else
cout<<"\nПамять не выделена";
}
void aadd_och ( CH **pn, CH **pk, int numberToMas)
{
CH *r;
// выделяем динамическую память
r = new (CH);
if ( r == NULL)
{
cerr << "Ошибка выделения динамической памяти\n";
exit(1);
}
// заносим в дин. память введенное число
// и нулевое значение адреса
r->k = numberToMas;
r->ptr = NULL;
// определяем существуют ли очереди элементы
if (*pn == NULL)
{
// очередь пустая
// значит созданный элемент становится первым и последним
*pn = r;
*pk = r;
}
else
{
// в очереди есть элементы
// добавляем элемент в конец
(*pk)->ptr = r;
// в адресное поле элемента, который был
// последним занесл адрес вновь созданного эл-та
*pk = r; // вновь созданный элемент стал последним
// в очереди
}
}
но не пойму как двумерный массив добавит в очередь.........