Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 10.11.2017
Сообщений: 25

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

10.11.2017, 00:14. Показов 1557. Ответов 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 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,544
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru