0 / 0 / 0
Регистрация: 10.11.2017
Сообщений: 25

Получить новый массив (или изменить старый), в котором числа будут располагаться по возрастанию

10.11.2017, 00:14. Показов 1605. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помочь как можно скорее.В нэте не смогу найти ответа.
Требуется написать программу на Си.
Создать одномерный массив без указания изначального размера.далее нужно выделить на него память через указатель.Через scanf() должны вводиться числа через ;(например 5;8;22;13;145).Нужно получить новый массив(или изменить старый,в котором эти числа будут располагаться по возрастанию. Уже неделю ничего дельного не выходит.Заранее спасибо за помощь
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2017, 00:14
Ответы с готовыми решениями:

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

Получить новый массив, в котором буквы будут расставлены по алфавиту
3. Дан одномерный массив, который содержит не более 60 английских букв. Получить новый массив, в котором буквы будут расставлены по алфавиту

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

21
 Аватар для Kuzia domovenok
4268 / 3328 / 926
Регистрация: 25.03.2012
Сообщений: 12,545
Записей в блоге: 1
14.11.2017, 07:40
Студворк — интернет-сервис помощи студентам
можешь создать на форуме отдельную тему с разбором как вводить через ; и в ней обсуждать эту проблему, она привлечёт куда больше спецов по вводу, чем текущая тема.

Добавлено через 14 минут
чтение массива через точку с запятой
C++
1
2
    for (int i = 0; i<dim; i++)
        scanf("%d ;", &arr[i]);
чтение массива через точку с запятой
1
2493 / 1157 / 709
Регистрация: 25.04.2016
Сообщений: 3,339
14.11.2017, 09:02
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
#include <stdio.h>
#include <stdlib.h>
/* ***************************************************************************
 * Создать одномерный массив без указания изначального размера.
 * нужно выделить на него память через указатель.
 * Через scanf() должны вводиться числа через ;(например 5;8;22;13;145).
 * Нужно получить новый массив(или изменить старый,в котором эти числа будут
 * располагаться по возрастанию.
 * **************************************************************************/
void ShellSort (int * v, int max);              // сортируем массив по возрастанию
void PrintArray (int m[], int max);             // выводим массив на экран
 
int main (void)
{
    int *arr = NULL;                                    // указатель на будущий массив
    int bitofint = sizeof(int);                 // число бит в одном int
    int capacity = 0;                                   // размер массива
    int n = 0;                                          // количество поступивших чисел
    int c;                                              // символ из потока ввода
    int go = 1;
 
    /* **********************************************************
     * Получаем из потока ввода строку;
     * Ахтунг! Алгоритм НЕ рассчитан на ошибочный ввод значений!
     * *********************************************************/
    while (go)                                          // while (go != 0)
    {
        c = getchar();                                  // получаем символ
        // проверяем размер массива, при необходимости выделяем память
        if (n + 1 > capacity)
        {
            if (!capacity) capacity = 1;            // if (capacity == 0)
            else capacity += 1;
            int* temp = (int*) realloc(arr, capacity * bitofint);
            if (!temp)                                  // ошибка выделения памяти
            {
                free(arr);
                exit(-1);
            }
            arr = temp;
            arr[n] = 0;                                 // инициируем начальное значение
        }
        // смотрим что получили:
        if (c == '\n')                                  // конец цикла
            go = 0;
        else
        {
            if (c == ';') n += 1;                   // новый элемент массива
            if (c >= '0' && c <= '9')               // число
                arr[n] = (arr[n] * 10) + (c - '0');
        }
    }
 
    // сортируем, выводим на экран
    if (capacity > 0)
    {
        //PrintArray(arr, capacity);
        ShellSort(arr, capacity);                   //сортируем массив по возрастанию
        PrintArray(arr, capacity);                  //выводим массив на экран
        free(arr);                                      //освобождаем память
    }
 
    // конец программы
    exit(0);
}
//-------------------------------------------------------------------------
//                          Cортируем по возрастанию
//-------------------------------------------------------------------------
void ShellSort (int * v, int max)
{
    if (max < 2) return;
    int gap, temp;
    int i, j;
    for (gap = max/2; gap > 0; gap /= 2)
    {
        for (i = gap; i < max; i++)
        {
            for (j = i-gap; j >= 0 && v[j] > v[j+gap]; j -= gap)
            {
                temp = v[j];
                v[j] = v[j+gap];
                v[j+gap] = temp;
            }
        }
    }
}
//-------------------------------------------------------------------------
//                          Выводим массив на экран
//-------------------------------------------------------------------------
void PrintArray (int m[], int max)
{
    int i;
    for (i=0; i<max; i++)
        printf("%-3d", m[i]);
    printf("\n");
    return;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.11.2017, 09:02

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

Ввести с клавиатуры число и получить число, в котором цифры будут располагаться в обратном порядке.
Ввести с клавиатуры число и получить число, в котором цифры будут располагаться в обратном порядке.

Получить новый массив, в котором числа исходного массива следуют в данном порядке
(использовать оператор for…) Написать программу с использованием хранения последовательности чисел в памяти компьютера (количество чисел...

Получить новый файл, в котором буквы слова будут расположены правильно
1) Имеется типизированный файл, элементами которого являются отдельные буквы, составляющие последовательность кадировко. Получить новый...

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


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Опции темы

Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru