Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Mentalist_
0 / 0 / 4
Регистрация: 05.11.2016
Сообщений: 60
Завершенные тесты: 1
1

Задача (Изменение исходного массива) си

27.11.2016, 10:38. Просмотров 231. Ответов 10
Метки нет (Все метки)

Вставить число А в массив целых чисел после всех элементов, в которых есть цифра 5.
Каким должен быть максимальный размер исходного массива? (Увеличить массив на 1, а также сместить элементы начиная с К +1 вправо на 1 позицию и присваивание (К+1)-му элементу массива значение А.) Напишите пожалуйста как примерно должен выглядеть код на СИ (не ++)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2016, 10:38
Ответы с готовыми решениями:

Изменение исходного массива. Вставить в массив два числа
Вставить в массив два числа следующим образом: первое со значением N перед всеми элементами,...

Изменение исходного массива
Дан двумерный массив из четного числа строк размером n×m. Требуется составить программу, которая...

Изменение исходного массива
Вам двумерный массив aa. Ваша задача — поменять в нём первый максимальный и последний минимальный...

Изменение исходного массива
привет Всем.задача на С#/ Дан массив.Поменять местами:m-й и n-й элементы.спасибо..

Изменение исходного массива
В массиве записана информация о росте каждого из 25 учеников класса(в порядке убывания роста). Из...

10
init5
24 / 24 / 16
Регистрация: 13.11.2016
Сообщений: 61
27.11.2016, 14:46 2
как вариант вставку можно сделать так

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
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
 
void insert(int a[], int *n, int pos, int value)
{
    assert(a = (int*)realloc(a, ++*n*sizeof(int)));
    
    for (int i=*n;i>pos;i--)
        a[i] = a[i-1];
    a[pos] = value;
}
 
int main()
{
    int n, pos, v, *a;
    
    scanf("%d", &n);
    
    assert(a = (int*)malloc(n*sizeof(int)));
 
    for (int i=0;i<n;i++)
        scanf("%d", &a[i]);
    scanf("%d", &pos);
    scanf("%d", &v);
    
    insert(a, &n, pos, v);
    
    for (int i=0;i<n;i++)
        printf("%d ", a[i]);
    
    free(a);
    
    return 0;
}
добавьте поиск чисел и вставку в нужную позицию
1
Байт
Эксперт C
20290 / 12854 / 2689
Регистрация: 24.12.2010
Сообщений: 26,851
27.11.2016, 14:55 3
init5, Вы догадываетесь, что если после realloc массив a будет перемещен, то после вызова insert main будет иметь дело со старым массивом? Но n изменится. И ваш цикл " i< n" залезет в чужую память.
Рекомендую повторить тему "передача параметров в функцию"
0
init5
24 / 24 / 16
Регистрация: 13.11.2016
Сообщений: 61
27.11.2016, 15:02 4
Вы про int a[]?
0
Байт
Эксперт C
20290 / 12854 / 2689
Регистрация: 24.12.2010
Сообщений: 26,851
27.11.2016, 15:10 5
Цитата Сообщение от init5 Посмотреть сообщение
Вы про int a[]?
Я про то, что изменившийся в insert указатель a в функции main остается при старом значении.
1
init5
24 / 24 / 16
Регистрация: 13.11.2016
Сообщений: 61
27.11.2016, 15:28 6
Да, Вы правы, спасибо. конечно же нужно int **a

C
1
2
3
4
5
6
7
8
9
void insert(int **a, int *n, int pos, int value)
{
    
    assert(*a = (int*)realloc(*a, ++*n*sizeof(int)));
    
    for (int i=*n;i>pos;i--)
        (*a)[i] = (*a)[i-1];
    (*a)[pos] = value;
}
0
Mentalist_
0 / 0 / 4
Регистрация: 05.11.2016
Сообщений: 60
Завершенные тесты: 1
03.12.2016, 17:55  [ТС] 7
ошибку выдает не подскажите что делать
0
Миниатюры
Задача (Изменение исходного массива) си  
Байт
Эксперт C
20290 / 12854 / 2689
Регистрация: 24.12.2010
Сообщений: 26,851
03.12.2016, 19:34 8
Получил
Цитата Сообщение от Mentalist_
в моей теме Изменение исходного массива задача
Цитата Сообщение от Mentalist_ Посмотреть сообщение
что делать
1. Никогда и ни к кому не обращаться с подобными вопросами в личку. Короче, соблюдать правила форума и хорошего тона.
2. Почаще публикуйте такие слепые скрины
0
init5
24 / 24 / 16
Регистрация: 13.11.2016
Сообщений: 61
04.12.2016, 11:17 9
у вас pos больше размера массива. вставьте проверку на этот случай
0
Mentalist_
0 / 0 / 4
Регистрация: 05.11.2016
Сообщений: 60
Завершенные тесты: 1
07.12.2016, 15:04  [ТС] 10
Не могли бы пояснить что мы передаем в функцию т.е value и pos
Ошибку выдает Assertion ну как в скриншоте даже если размер= 20 ;pos = 4; value=7 например
0
init5
24 / 24 / 16
Регистрация: 13.11.2016
Сообщений: 61
07.12.2016, 18:10 11
C
1
insert(&a, &n, pos, v);
0
07.12.2016, 18:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2016, 18:10

Изменение исходного массива
6.5) Дан массив из четного числа элементов. Поменять местами первый элемент со вторым, третий — с...

Изменение исходного массива
Помогите пожалуйста...вот задачка: дан одномерный массив из 15 элементов.Представить в обратном...

Изменение исходного массива
Дан массив из четного числа элементов. Поменять местами его половины;


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru