Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 23.05.2013
Сообщений: 98

Записать в массив несколько результатов вызова функции

03.02.2015, 21:53. Показов 2610. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int perem; глобальная
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int mas1[5];
int z=0,a=0,b=0,c=0,d=0,e=0;
 
//запрос функции которая записывает значение в perem
 
for(int z=0; z<5; z++) mas1[z]=perem;
a=mas1[1];
b=mas1[2];
c=mas1[3];
d=mas1[4];
e=mas1[5];
 
  Label1->Caption= IntToStr(a);
  Label2->Caption= IntToStr(b);
  Label3->Caption= IntToStr(c);
  Label4->Caption= IntToStr(d);
  Label5->Caption= IntToStr(e);
}
в переменную perem по нажатию Button1 записывается число в диапазоне 0-1023
программа должна накопить в массив 5 значений,
а после этого записать их в переменные и вывести на экран

почему из perem данные записываются сразу во все лейблы и не сохраняются там?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.02.2015, 21:53
Ответы с готовыми решениями:

Как занести несколько переменных в имя вызова функции
Добрый день, есть потребность при вызове функции в её имя занести несколько данных Private Sub Button1_Click(sender As Object, e...

Возвращение результатов функции в несколько переменных
Здраствуйте, можно ли как-то припомощи оператора return вернуть несколько значений? Если да, то как после вызова функции вернуть первой...

Запись в массив результатов табулирования функции
Значит, нам надо протабулировать функцию и вывести результат в поле Memo, затем выведенный результат нужно записать в массив, подскажите...

19
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
03.02.2015, 22:22
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
почему из perem данные записываются сразу во все лейблы
for(int z=0; z<5; z++) mas1[z]=perem; - вы присваиваете всем элементам массива одно и тоже число perem

a=mas1[1]; b=mas1[2]; c=mas1[3]; d=mas1[4]; e=mas1[5]; - естественно во всех этих переменных одно и то же число.

Label1->Caption= IntToStr(a); Label2->Caption= IntToStr(b); Label3->Caption= IntToStr(c);
Label4->Caption= IntToStr(d); Label5->Caption= IntToStr(e)
; - опять же естественно что там одно и то же число.
Вот вы и записали из perem сразу во все лейблы.

А вот что вы имели ввиду под "не сохраняются там"?
0
0 / 0 / 1
Регистрация: 23.05.2013
Сообщений: 98
03.02.2015, 22:27  [ТС]
perem меняется каждый раз, когда жмут кнопку
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
03.02.2015, 22:35
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
perem меняется каждый раз, когда жмут кнопку
И каждый раз вы заносите новый perem во все Label
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
03.02.2015, 22:36
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
int mas1[5];
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
e=mas1[5];
это как???
0
0 / 0 / 1
Регистрация: 23.05.2013
Сообщений: 98
03.02.2015, 22:38  [ТС]
из mas1[5]; значение заносится в e
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
03.02.2015, 22:39
сделай например так
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
static int index=0;
int mas1[5];
int z=0,a=0,b=0,c=0,d=0,e=0;
 
 
//запрос функции которая записывает значение в perem
 
 mas1[index]=perem;
index++;
if(index>=4)
 index=0;
a=mas1[0];
b=mas1[1];
c=mas1[2];
d=mas1[3];
e=mas1[4];
 
  Label1->Caption= IntToStr(a);
  Label2->Caption= IntToStr(b);
  Label3->Caption= IntToStr(c);
  Label4->Caption= IntToStr(d);
  Label5->Caption= IntToStr(e);
}
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
03.02.2015, 22:40
Вам нужно сделать:
1) массив глобальным.
2) создать переменную с индексом нового perem - счетчик, при каждой смене perem увеличиваете, если 5ый раз изменили обнуляете.
3) в Button1Click for(int z=0; z<5; z++) mas1[z]=perem; заменить на mas1[счетчик с пункта 2]=perem;
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
03.02.2015, 22:42
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
из mas1[5]; значение заносится в e
mas1[5] это шестой элемент!!!
а массив из пяти
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
int mas1[5];
Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
void __fastcall TForm1::Button1Click(TObject *Sender)
{
static int index=0;
int mas1[5];
пардон массив то локальный, каждый раз заново создается
нужно
C++
1
static int mas1[5];
0
0 / 0 / 1
Регистрация: 23.05.2013
Сообщений: 98
03.02.2015, 22:42  [ТС]
C++ (Qt)
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   int  mas1[5];
   int a=0,b=0,c=0,d=0,e=0;
 
   CommPort1->PutChar('?');
 
    //for(int z=0; z<5; z++) mas1[z]=perem;
 
    mas1[z]=perem;
    a=mas1[1];
    b=mas1[2];
    c=mas1[3];
    d=mas1[4];
    e=mas1[5];
    z++;
    if(z>5)
    {
   z=0;
     Label1->Caption= IntToStr(a);
     Label2->Caption= IntToStr(b);
     Label3->Caption= IntToStr(c);
     Label4->Caption= IntToStr(d);
     Label5->Caption= IntToStr(e);
    }
 
 
}
так тоже глючит
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
03.02.2015, 22:44
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
так тоже глючит
Все правильно
Массив еще раз повторяю должен быть глобальным
Что бы получить все 5 значений вы должны нажать кнопку 5 раз.
IntToStr применять нельзя пока там неизвестно что.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
03.02.2015, 22:46
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
так тоже глючит
еще бы
во первых при каждом заходе в функцию массив заново создается
нужно или глобальный или static
во вторых
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
e=mas1[5];
старательно лезем за пределы массива
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
if(z>5)
тоже самое
и насчет
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
if(z>5)
значения то только после пятого щелчка обновятся
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
03.02.2015, 22:50
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
int  mas1[5]; int z=0;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   int a=0,b=0,c=0,d=0,e=0;
 
   CommPort1->PutChar('?');
 
    //for(int z=0; z<5; z++) mas1[z]=perem;
 
    mas1[z]=perem;
    a=mas1[0];
    b=mas1[1];
    c=mas1[2];
    d=mas1[3];
    e=mas1[4];
 
     Label1->Caption= IntToStr(a);
     Label2->Caption= IntToStr(b);
     Label3->Caption= IntToStr(c);
     Label4->Caption= IntToStr(d);
     Label5->Caption= IntToStr(e);
}
// функция в которой у вас меняется perem
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    // изменяем perem
    z+=1;
    if(z>=5) z=0;
}
0
0 / 0 / 1
Регистрация: 23.05.2013
Сообщений: 98
03.02.2015, 22:52  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
значения то только после пятого щелчка обновятся
оно так и задумано, чтоб пока все переменные не придут - не выводить
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
03.02.2015, 22:56
GROMOZEKA82, ваш счетчик z - нужно увеличивать на 1 когда обновляется perem!

Добавлено через 1 минуту
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
оно так и задумано, чтоб пока все переменные не придут - не выводить
ну и тогда в Button1Click вставьте
if(z>=4) - перед выводом в лейблы.
0
0 / 0 / 1
Регистрация: 23.05.2013
Сообщений: 98
03.02.2015, 23:04  [ТС]
C++ (Qt)
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
int  mas1[5];
int z=0;
int a=0,b=0,c=0,d=0,e=0;
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
   CommPort1->PutChar('?');
 
    mas1[z]=perem;
 
    a=mas1[0];
    b=mas1[1];
    c=mas1[2];
    d=mas1[3];
    e=mas1[4];
    z++;
     if(z>=4) z=0;
 
     Label1->Caption= IntToStr(a);
     Label2->Caption= IntToStr(b);
     Label3->Caption= IntToStr(c);
     Label4->Caption= IntToStr(d);
     Label5->Caption= IntToStr(e);
}
работает, но через задницу

в Label5 всегда 0
а его значение выводится в Label1
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
03.02.2015, 23:12
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
в Label5 всегда 0
потому что до него дело не доходит
Цитата Сообщение от GROMOZEKA82 Посмотреть сообщение
if(z>=4) z=0;
если z равно 4 то z приравнять к 0
или так
C++
1
if(z>4) z=0;
или так
C++
1
if(z>=5) z=0;
0
0 / 0 / 1
Регистрация: 23.05.2013
Сообщений: 98
03.02.2015, 23:12  [ТС]
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int  mas1[5];
int z=0;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int a=0,b=0,c=0,d=0,e=0;
   CommPort1->PutChar('?');
 
    mas1[z]=perem;
 
    a=mas1[0];
    b=mas1[1];
    c=mas1[2];
    d=mas1[3];
    e=mas1[4];
    z++;
     if(z>=5) z=0;
 
     Label1->Caption= IntToStr(a);
     Label2->Caption= IntToStr(b);
     Label3->Caption= IntToStr(c);
     Label4->Caption= IntToStr(d);
     Label5->Caption= IntToStr(e);
}
так всё нормально, но почему то путает местами значения Label1 и Label5
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
03.02.2015, 23:23
все это можно сделать гораздо проще и красивее
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
static int z=0;
   CommPort1->PutChar('?');
 
switch(z)
{
 case 0:
     Label1->Caption= IntToStr(perem); 
     z=1;
     break;
case 1:
     Label2->Caption= IntToStr(perem); 
     z=2;
     break;
case 2:
     Label3->Caption= IntToStr(perem); 
     z=3;
     break;
case 3:
     Label4->Caption= IntToStr(perem); 
     z=4;
     break;
case 4:
     Label5->Caption= IntToStr(perem); 
     z=0;
     break;
default:
    z=0;
 
 }  
 
}
и не надо городить кучу переменных, тем более глобальных
я бы еще и CommPort1->PutChar('?'); пересмотрел чтобы возвращал значения
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
04.02.2015, 09:20
Цитата Сообщение от ValeryS Посмотреть сообщение
можно сделать
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button1Click(TObject *Sender)
{
static int z=1;
   CommPort1->PutChar('?');
 
static_cast< TLabel* > (
                        FindComponent( "Label" + IntToStr( z++ ) )
                        )->Caption = IntToStr( perem );
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.02.2015, 09:20
Помогаю со студенческими работами здесь

Как записать несколько div в массив по их id?
Что я не правильно делаю? Вылезает ошибка: TypeError: mydivs is undefined Код следующий: for (i=1;i&lt;=5;i++) { ...

Записать несколько Edit-ов в массив констант
На форме у меня есть 6 Edit - ов хочу их записать в массив констант const Ed : array of TEdit = (edit1, edit2, edit3, edit4,...

Несколько минимальных элементов матрицы записать в одномнерой массив
Всем доброго времени суток,в общем задача состоит из нескольких этапов 1 создаем матрицу 6 на 6 2 преобразовываем её по заданному...

Считать из файла, записать в массив и выбрать несколько случайных чисел
Здравствуйте. Есть файл с набором чисел (например 4,9 5,1 9,4 8,4 6,2 4,2 1,1 0,8 7,2 3,5). Нужно считать эти числа из файла,...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru