Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/26: Рейтинг темы: голосов - 26, средняя оценка - 4.81
 Аватар для Coca Cola
-1 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 119

В один стек занести все четные, в другой – все нечетные числа из динамического массива. Подкорректируйте наработки.

29.04.2014, 17:38. Показов 5554. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int end=0;
class t{
public:
wchar_t *sim;
t(){};
 
template <class Stype> void T_L_at_SHell(Stype &line,Stype &count);
 
t(wchar_t *sym){
sim=sym;
}
wchar_t *GetLine(){
return sim;
  }
};
int n; // Глобальная переменная
class Stack
{
  protected:
    int *stck; // Динамический массив 
    int tos;   // Текущий  номер элемента
    int length;// Размер стека = размер динамического массива
  public:
    Stack(int size); // Конструктор
    ~Stack(){delete [] stck;} //Деструктор
    void push(int item); // Поместить в стек
    int pop(); //Извлечь из стека
    int GetLen(){return length;} // Получить значение размера стека
    int GetCurrent() {return tos;} // Получить текущую позицию в стеке
};
Stack a(10); // Создание объекта класса стека размером 10 элементов
 
// Конструктор стека
Stack :: Stack(int size)
{
  stck = new int [size]; // Создание динамического массива
  if(!stck) // Если не выделена память под массив
  {
    ShowMessage("Unable to create STACK");
    return;
  }
  length=size;
  tos=0; // Текущая позиция в стеке при его создании равна 0
}
// Помещение объека в стек
void Stack:: push(int item)
{
  if(tos==length) // Если текущий номер равен длине стеке
  {
    ShowMessage("Стек полон");
    return;
  }
  stck[tos] = item; // Поместить значение в стек
  tos++; // Инкремент номера
}
int Stack :: pop() // Извлечение объекта из стека
{
  if(tos==0) // Если текущая позиция =0, стек пуст
  {
    ShowMessage("STACK is empty");
    return 0;
  }
  tos--;
  return stck[tos]; // Извлечь последнее значение
}
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
 {
int chislo=Edit1->Text.ToIntDef(5)+1;
  AnsiString s;
   int *prov1;
        prov1 = new int [100];
           StringGrid1->ColCount=chislo;
  for(int i=0; i<chislo; i++){
 
prov1[i] = random(200)-100;
StringGrid1->Cells[i+1][1]=prov1[i];
}
 
  if(!prov1[0]=='\0'){
  delete []prov1;
  }
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
  int num=StrToInt(Edit1->Text);
  a.push(num); // Поместить в стек
  lPush->Caption="Введенный элемент "+ IntToStr(num);
  lCurrent->Caption="Текущий номер = "+ IntToStr(a.GetCurrent());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
  int num=a.pop();// Извлечь число из стека
  lPop->Caption="Считанный элемент "+IntToStr(num);
  lCurrent->Caption="Текущий номер = "+ IntToStr(a.GetCurrent());
}
//---------------------------------------------------------------------------
Стек. Создать динамический массив размерности n, заполнить его случайными числами. Создать два стека, в один занести все четные, в другой – все нечетные числа. Напечатать содержимое обоих стеков (описав в стеке вспомогательную функцию для чтения элементов стека без их уничтожения).

Добавлено через 1 час 13 минут
плиииз

Добавлено через 12 минут


Добавлено через 38 минут
ну помогите ктонибудь блин
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.04.2014, 17:38
Ответы с готовыми решениями:

Сформировать два одномерных массива. В один перешлите все четные, а в другой – нечетные элементы матрицы.
Дана матрица А, имеющая N строк и N столбцов. Сформировать два одномерных массива. В один перешлите все четные, а в другой – нечетные...

Создать файл целых чисел. За один просмотр файла вывести на экран сначала все четные числа, а потом все нечетные
Помогите пожалуйста написать программу. Создать файл целых чисел. За один просмотр файла вывести на экран сначала все четные числа, а потом...

Записать все нечетные элементы матрицы в один массив, а четные - в другой
Гуру с++, помогите, пожалуйста, с задачкой! Все элементы матрицы М(3;5), имеющие нечетные значения записать в массив М1, а четные - в М2! ...

31
75 / 26 / 22
Регистрация: 22.06.2013
Сообщений: 127
29.04.2014, 17:43
Цитата Сообщение от Coca Cola Посмотреть сообщение
Создать динамический массив размерности n, заполнить его случайными числами.
Дык Button1Click(TObject *Sender) это и делает.
Цитата Сообщение от Coca Cola Посмотреть сообщение
Создать два стека
C++
1
Stack one(100), two(100);
Цитата Сообщение от Coca Cola Посмотреть сообщение
в один занести все четные, в другой – все нечетные числа.
C++
1
2
3
4
5
6
7
8
for (int i=1; i<StringGrid1->ColCount; i++)
{
  if(StrToInt(StringGrid1->Cells[i][1]) % 2 == 0)
{
 one.push(StrToInt(StringGrid1->Cells[i][1]));
} else
 two.push(StrToInt(StringGrid1->Cells[i][1]));
}
Цитата Сообщение от Coca Cola Посмотреть сообщение
Напечатать содержимое обоих стеков (описав в стеке вспомогательную функцию для чтения элементов стека без их уничтожения).
Как минимум сначала нужно определиться - куда печатать.
1
 Аватар для Coca Cola
-1 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 119
29.04.2014, 17:50  [ТС]
печатать нужно в стринггрит эти числа

Добавлено через 4 минуты
в лейбл лучше
0
75 / 26 / 22
Регистрация: 22.06.2013
Сообщений: 127
29.04.2014, 17:56
Тогда нужно указатель на TStringGrid передавать в печатающую функцию.
Объявление функции может быть такое:
void Print(TStringGrid *Out);
1
 Аватар для Coca Cola
-1 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 119
29.04.2014, 18:13  [ТС]
C++
1
2
3
void Print(TStringGrid *Out);
label1->Text->Add(AnsiString());
label2->Text->Add(AnsiString());
както так?

Добавлено через 4 минуты
то есть в моей программе куча всего лишнего?

Добавлено через 3 минуты
а как в стеки занести числа из массива который в обработчике кнопки Button1Click
0
75 / 26 / 22
Регистрация: 22.06.2013
Сообщений: 127
29.04.2014, 18:32
Цитата Сообщение от Coca Cola Посмотреть сообщение
както так?
Оставь эту метку в покое, выводи лучше в StringGrid с помощью функции int pop(), которая в классе.
Так например:
C++
1
2
for (int i=0;i<n;i++)
    StringGrid1->Cells[i][2] = IntToStr(one.pop());
Цитата Сообщение от Coca Cola Посмотреть сообщение
то есть в моей программе куча всего лишнего?
Класс t не понятно зачем нужен.
Цитата Сообщение от Coca Cola Посмотреть сообщение
а как в стеки занести числа из массива который в обработчике кнопки Button1Click
Либо сделай int *prov1 глобальной и работай с ним где хочешь, либо в добавь в цикл
one.push(prov1[i]);
1
 Аватар для Coca Cola
-1 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 119
29.04.2014, 18:34  [ТС]
Создать динамический массив размерности n, заполнить его случайными числами. Это я сделала
Создать два стека, в один занести все четные, в другой – все нечетные числа. Вы мне помогли написали, но куда это вставить в моей программе?И еще нужно будет проводить изменения в кнопках потомучто 2 стека теперь, я понимаю примерно какие, но не могу сделать, а последнее задание вообще не понимаю((
0
75 / 26 / 22
Регистрация: 22.06.2013
Сообщений: 127
29.04.2014, 19:18
У вас идет описание класса Stack, зразу за ним идут экземпляры.
C++
1
Stack a(10); // Создание объекта класса стека размером 10 элементов
Допишите после этой строки:
C++
1
Stack one(100), two(100);
Создайте новую кнопку, кликните и вставьте код:
C++
1
2
3
4
5
6
7
8
for (int i=1; i<StringGrid1->ColCount; i++)
 {
 if(StrToInt(StringGrid1->Cells[i][1]) % 2 == 0)
 {
 one.push(StrToInt(StringGrid1->Cells[i][1]));
 } else
 two.push(StrToInt(StringGrid1->Cells[i][1]));
 }
Он рассортирует четные/нечетные
Во время работы сначала нужно нажимать на первую кнопку, чтобы сгенерировать массив чисел.

И ещё одну кнопку создайте с обработчиком:
C++
1
2
3
4
5
for (int i=0;i<n;i++)
{
 StringGrid1->Cells[i][2] = IntToStr(one.pop());
 StringGrid1->Cells[i][3] = IntToStr(two.pop());
}
Содержимое двух стеков будет выведено во вторую и третью строки СтрингГрида.
1
 Аватар для Coca Cola
-1 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 119
29.04.2014, 20:42  [ТС]
у меня теперь 5 кнопок и все они будут задействованы?

Добавлено через 13 минут
нажимаю на кнопку генерирования массива чисел выводятся числа в стринггрид потом нажимаю кнопку сортировать нечего не сортируется, а потом кнопка вывода стэков тоже нечего нет
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
/---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int n; // Глобальная переменная
class Stack
{
  protected:
    int *stck; // Динамический массив 
    int tos;   // Текущий  номер элемента
    int length;// Размер стека = размер динамического массива
  public:
    Stack(int size); // Конструктор
    ~Stack(){delete [] stck;} //Деструктор
    void push(int item); // Поместить в стек
    int pop(); //Извлечь из стека
    int GetLen(){return length;} // Получить значение размера стека
    int GetCurrent() {return tos;} // Получить текущую позицию в стеке
};
 
Stack a(10);
Stack one(100), two(100); // Создание объекта класса стека размером 10 элементов
// Конструктор стека
Stack :: Stack(int size)
{
  stck = new int [size]; // Создание динамического массива
  if(!stck) // Если не выделена память под массив
  {
    ShowMessage("Unable to create STACK");
    return;
  }
  length=size;
  tos=0; // Текущая позиция в стеке при его создании равна 0
}
// Помещение объека в стек
void Stack:: push(int item)
{
  if(tos==length) // Если текущий номер равен длине стеке
  {
    ShowMessage("Стек полон");
    return;
  }
  stck[tos] = item; // Поместить значение в стек
  tos++; // Инкремент номера
}
int Stack :: pop() // Извлечение объекта из стека
{
  if(tos==0) // Если текущая позиция =0, стек пуст
  {
    ShowMessage("STACK is empty");
    return 0;
  }
  tos--;
  return stck[tos]; // Извлечь последнее значение
}
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
 {
int chislo=Edit1->Text.ToIntDef(5)+1;
  AnsiString s;
   int *prov1;
        prov1 = new int [100];
           StringGrid1->ColCount=chislo;
  for(int i=0; i<chislo; i++){
 
prov1[i] = random(200)-100;
StringGrid1->Cells[i+1][1]=prov1[i];
}
  if(!prov1[0]=='\0'){
  delete []prov1;
  }
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
 int num=StrToInt(Edit1->Text);
  a.push(num); // Поместить в стек
  lPush->Caption="Введенный элемент "+ IntToStr(num);
  lCurrent->Caption="Текущий номер = "+ IntToStr(a.GetCurrent());
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
   int num=a.pop();// Извлечь число из стека
  lPop->Caption="Считанный элемент "+IntToStr(num);
  lCurrent->Caption="Текущий номер = "+ IntToStr(a.GetCurrent());
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
for (int i=1; i<StringGrid1->ColCount; i++)
 {
 if(StrToInt(StringGrid1->Cells[i][1]) % 2 == 0)
 {
 one.push(StrToInt(StringGrid1->Cells[i][1]));
 } else
 two.push(StrToInt(StringGrid1->Cells[i][1]));
 }        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
for (int i=0;i<n;i++)
{
 StringGrid1->Cells[i][2] = IntToStr(one.pop());
 StringGrid1->Cells[i][3] = IntToStr(two.pop());
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 
}
//---------------------------------------------------------------------------
Добавлено через 4 минуты
блин ну помогите(((

Добавлено через 33 минуты
почему не срабатывает или може я чтото не так делаю(

Добавлено через 26 минут
надеюсь поможете разобраться...
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
29.04.2014, 20:42
Вы конечно извините, но большинство Ваших создаваемых тем это просьбы помощи разобраться в коде найденном Вами в интернете.
Вам дали достаточно указаний что делать и как, но Вы пытаетесь все свести к тому чтоб это сделали за Вас.
Попробуйте разобраться опираясь на подсказки, это будет намного быстрее и полезнее для Вас, чем просто ожидание.
0
 Аватар для Coca Cola
-1 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 119
29.04.2014, 20:45  [ТС]
не в интернете а в методичке, ну а где подсказка например на то почему не сортируется?
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
29.04.2014, 20:50
Приведите код блока кнопки где у Вас происходит сортировка.
0
 Аватар для Coca Cola
-1 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 119
29.04.2014, 20:58  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Button5Click(TObject *Sender)
{
for (int i=1; i<StringGrid1->ColCount; i++)
 {
 if(StrToInt(StringGrid1->Cells[i][1]) % 2 == 0)
 {
 one.push(StrToInt(StringGrid1->Cells[i][1]));
 } else
 two.push(StrToInt(StringGrid1->Cells[i][1]));
 }
}
Добавлено через 7 минут
тяжело разобраться когда 4 утра
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
29.04.2014, 21:04
И опираясь на что Вы решили что это сортировка?
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Button5Click(TObject *Sender)
{
for (int i=1; i<StringGrid1->ColCount; i++) //в цикле просматриваем StringGrid
{
if(StrToInt(StringGrid1->Cells[i][1]) % 2 == 0) //Если Элемент Cells[i][1] число целое. Так как остаток от двух равен нулю
{
one.push(StrToInt(StringGrid1->Cells[i][1])); //Мы это число добавляем в стек one
} else
two.push(StrToInt(StringGrid1->Cells[i][1])); // иначе в стек two
}
}
Или это и есть по Вашим словам сортировка
0
 Аватар для Coca Cola
-1 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 119
29.04.2014, 21:06  [ТС]
опираясь на подсказку
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
29.04.2014, 21:19
Ну согласен это можно назвать сортировкой.
Дальше что Вам надо с ними сделать?
0
 Аватар для Coca Cola
-1 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 119
29.04.2014, 21:21  [ТС]
вывести в стринггрид

Добавлено через 1 минуту
четные и нечетные, да?
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
29.04.2014, 21:40
Чтоб выводило, разберитесь тут.
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button6Click(TObject *Sender)
{
for (int i=0;i<n;i++)
{
 StringGrid1->Cells[i][2] = IntToStr(one.pop());
 StringGrid1->Cells[i][3] = IntToStr(two.pop());
}
}
Лично мне не понятно чему равно n, которая объявлена глобально.(Да я и не вникал особо)
Но чувствую что ошибка в ней.
Для проверки задайте условия цикла явно, вместо n подставьте число.
0
 Аватар для Coca Cola
-1 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 119
29.04.2014, 21:46  [ТС]
я поставила число...и он стал сортировать Stack is empty

Добавлено через 48 секунд
с такой ошибкой
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
29.04.2014, 21:49
ну видите все работает!

Ошибку эту Вы сами учли в первом посту чей код ?

C++
1
2
3
4
5
6
7
8
9
10
int Stack :: pop() // Извлечение объекта из стека
{
  if(tos==0) // Если текущая позиция =0, стек пуст
  {
    ShowMessage("STACK is empty");
    return 0;
  }
  tos--;
  return stck[tos]; // Извлечь последнее значение
}
Получается Вы поставили слишком большое число и на каком то действии стек уже пуст, а Вы пытаетесь извлечь из него!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.04.2014, 21:49
Помогаю со студенческими работами здесь

Переместить в начало массива все нечетные числа, а в конец все четные
Переместить в начало все нечетные числа, а в конец все четные.

Вывести все четные числа массива в порядке возрастания их индексов, а затем все нечетные в порядке убывания
Дан целочисленный массив размера N.Вывести в начале все содержащиеся в данном массиве четные числа в порядке возрастания их индексов, а...

Вывести все четные и нечетные числа массива
Здравствуйте!!! У меня есть такое задание не могу решать может поможете?? 1. Надо заполнить все дни января(31 день), в которых был...

Положительные числа занести в один стек, отрицательный в другой?
Как должна выглядеть программа?

Все четные числа массива разместить слева, а нечетные – справа
Сформировать массив 20 целых случайных чисел в диапазоне от минус 50 до 50. Напечатать его. Все четные числа разместить слева, а нечетные –...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru