Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для VLaDoS_2001a
319 / 216 / 114
Регистрация: 14.05.2020
Сообщений: 890

Последовательность цифр неизвестного размера поместить в массив

26.06.2021, 03:46. Показов 1020. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно последовательность цифр поместить в массив , размер неизвестен , без STL(array, list, vector, map)?
1 2 2 4 5 6 7 6 7 …. 6

C++
1
while(std::cin >> a) {// тут проблемы!!!}
или пойти другим путём

C++
1
2
std::cin.ignore();
std::getline(std::cin, str);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.06.2021, 03:46
Ответы с готовыми решениями:

Массив неизвестного размера
Хочу написать функцию для нахождения предела последовательности. А и eps вводятся с клавиатуры. Цикл do while - обязательное условие. n...

Создать массив неизвестного размера
string q= new string; Изначально не знаю сколько в этом массиве у меня будет элементов, как правильно создать такой массив?

Массив заранее неизвестного размера
Возможно сейчас произвучит тупой вопрос,не судите строго,но можно каким-нибудь образом сделать чтобы размер массива задавался пользователем?

9
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
26.06.2021, 07:50
VLaDoS_2001a, можно ли так: (???)
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
//#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
 
int* f(char* s, int& size)
{
    int* ret = new int[strlen(s) + 1];
    size = 0;
    char* t = strtok(s, " ");
    while (t)
    {
        ret[size] = atoi(t);
        size++;
        t = strtok(NULL, " ");
    }
    
    if (size)
    {
        return ret;
    }
    else
    {
        delete[] ret;
        return nullptr;
    }
}
 
int main()
{
    char s[500];
    cin.getline(s, sizeof(s));
    int size = 0;
    int* p = f(s, size);
    if (p)
    {
        for (int i = 0; i < size; i++)
            cout << p[i] << endl;
        delete[] p;
        p = nullptr;
    }
    return 0;
}
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
26.06.2021, 11:15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
 
int main()
{
   int *p;
   char n='0';
   std::string s;
   std::cout << "выход - любая буква\n";
   while (isdigit(n)) {
       std::cin >> n;
       s += n;
   }
   
   
   p = new int[s.size()-1];
   for (int i = 0; i < s.size()-1; i++) {
       p[i] = s[i] - '0';
       std::cout << p[i] << " ";
   }  
}
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38179 / 21114 / 4307
Регистрация: 12.02.2012
Сообщений: 34,721
Записей в блоге: 14
26.06.2021, 12:16
Как я понимаю, проблема тут в выборе размера массива, если количество цифр, заранее неизвестно. И, как на грех, нельзя использовать стандартные библиотеки... Тут можно построить список из массивов фиксированного размера. Пойдет? Могу позже помочь.
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
26.06.2021, 13:10
Цитата Сообщение от VLaDoS_2001a Посмотреть сообщение
или пойти другим путём
работа со строкой допускается ?

если нет, объявляете массив заведомо большего размера и записываете в него цифры. ввод цифр через пробел, после последней цифры <Enter>
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
#include <iostream>
using namespace std;
 
int main ()
{    
    int n=1000, k=0, dig;
    
      int *a = new int[n];       
    
    cout << "Input digits separated by a space:\n";
    while (cin >> dig)    
    {        
        a[k++]=dig; 
        if (cin.get()=='\n') break;        
    }
    
    cout << "Array:\n";
    for (int i = 0; i < k; i++)  
        cout << a[i] << " ";
    cout << "\n";
    
    delete[]a;
system("pause");
return 0;
}
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38179 / 21114 / 4307
Регистрация: 12.02.2012
Сообщений: 34,721
Записей в блоге: 14
26.06.2021, 13:34
Цитата Сообщение от Yetty Посмотреть сообщение
объявляете массив заведомо большего размера
- а если оценок сверху нет совсем?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
26.06.2021, 14:19
Цитата Сообщение от Catstail Посмотреть сообщение
а если оценок сверху нет совсем?
очевидно объявить массив максимального размера для данного компьютера
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38179 / 21114 / 4307
Регистрация: 12.02.2012
Сообщений: 34,721
Записей в блоге: 14
26.06.2021, 14:41
Yetty, не могу одобрить такой подход. А как же динамическая память?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
26.06.2021, 14:57
Catstail, код сброшен под условие ТС, элементы вводятся с клавиатуры:
Цитата Сообщение от VLaDoS_2001a Посмотреть сообщение
while(std::cin >> a) {// тут проблемы!!!}
человек в здравом уме вряд ли будет вводить 1000 значений вручную. из этих соображений и написан код
Цитата Сообщение от Catstail Посмотреть сообщение
не могу одобрить такой подход
так показывайте лучший подход
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38179 / 21114 / 4307
Регистрация: 12.02.2012
Сообщений: 34,721
Записей в блоге: 14
26.06.2021, 16:31
Цитата Сообщение от Yetty Посмотреть сообщение
так показывайте лучший подход
- как вариант:

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
#include <iostream>
 
using namespace std;
 
class Segment   // Сегмент массива
{
public:
      int     *arr;
      Segment *next;
      
      Segment ()
      {
          int i;
          arr=new int[1000];
          for (i=0; i<1000; i++) arr[i]=0;
          next=NULL;
      }
      ~Segment()
      {
          delete [] arr;
          cout << "Segment is deleted" << endl;
      }
};
 
class SegmentArray   // Сегментированный массив
{
public:
      Segment *start;
      Segment *end;
      int     count_segm;
      
      SegmentArray(void)
      {
          start=NULL;
          end  =NULL;
          count_segm=0;
      }
      
      void addSegm(void)   // Добавить сегмент
      {
          
          Segment *curr;
          
          if (start==NULL)
          {
              start=new Segment();
              end  = start;
              count_segm++;
          }
          else
          {
              curr=end;
              curr->next=new Segment();
              count_segm++;
              end=curr->next;
          }
      }
      
      void putData(int n,int v)  // Занести в ячейку n значение v (Конечно, эффектнее было бы перегрузить []...)
      {
           int seg,off,i;
           Segment *curr;
           
           if (n < count_segm*1000) // Ячейка существует
           {
               seg=n/1000;
               off=n%1000;
               
               curr=start;
               for (i=0; i<seg; i++) curr=curr->next;
               
               curr->arr[off]=v;
               return;
               
           }  // Ячейки нет - добавим сегменты
           else
           {
               int incr=n-count_segm*1000;
               for (i=0; i < incr/1000+1; i++) addSegm();
 
               seg=n/1000;
               off=n%1000;
               
               curr=start;
               for (i=0; i<seg; i++) curr=curr->next;
               
               curr->arr[off]=v;
               return;
               
           }
           
      }
      
      int getData(int n)  // Получить данные из ячейки n
      {
           int seg,off,i;
           Segment *curr;
           
           if (n < count_segm*1000) // Ячейка существует
           {
               seg=n/1000;
               off=n%1000;
               
               curr=start;
               
               for (i=0; i<seg; i++) curr=curr->next;
 
            }
 
            // Если не существует, надо бы бросить исключение
 
            return curr->arr[off];       
      }
      
      ~SegmentArray(void)
      {
          Segment *curr=start;
          Segment *next;
          
          if (start==NULL) return;
          
          while (curr != NULL)
          {
              next=curr->next;
              delete curr;
              curr=next;
          }
          cout << "SementArray is deleted" << endl;
      }
      
};
 
int main() {
    
    SegmentArray *sa = new SegmentArray();
  
    sa->putData(3450,-777);
    cout << (sa->getData(3450)) << endl;
  
    delete sa;
  
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.06.2021, 16:31
Помогаю со студенческими работами здесь

Массив заранее неизвестного размера
Скажите как создать массив за рание не известной размерности. Искал по форумам приимеры описания, толька так и не нашел ничего.Спасибо!

Массив неизвестного размера+функция
Алоха, имею такой вопрос вот у меня ниже код, который считает среднее значение всех елиментов массива типа double; в функции main...

Ввод текста неизвестного размера в массив
(Консольное приложение) Я хочу сделать так чтобы при вводе текста программа записывала каждый символ по порядку (в том числе и пробел) из...

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

Двумерный массив объектов неизвестного размера
Товарищи, подскажите пожалуйста... Есть класс, нужно создать массив n*m объектов этого класса... Размеры определяются в ходе выполнения...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru