С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
8 / 8 / 1
Регистрация: 24.10.2013
Сообщений: 205
1

Преобразовать массив, увеличив каждую его серию на один элемент

30.10.2014, 13:43. Показов 2882. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан целочисленный массив размера N. Серия-это группа подряд идущих одинаковых элементов, а ее длина-количество этих элементов(длина серии может быть равна 1). Преобразовать массив,увеличив каждую его серию на один элемент.

C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <conio.h>
void main()
{int N;
int A[100];
int i;
clrscr();
printf("vvod N=");
scanf("%d",&N);
printf("vvod elementov");
for (i=0;i<N;i++) scanf ("%d",&A[i]);
}
Алгоритм я понимаю, но не знаю,как это записать.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.10.2014, 13:43
Ответы с готовыми решениями:

Преобразовать массив, увеличив каждую его серию на один элемент
Дан массив, состоящий из n элементов. Назовем серией группу подряд идущих одинаковых элементов, а...

Преобразовать одномерный массив, увеличив каждую его серию на 1 элемент
Подскажите,пожалуйста, как написать эту программу. Дан целочисленный массив размера N. Назовем...

Преобразовать массив, увеличив его первую серию наибольшей длины на один элемент
Привет ребят! Есть рабочая программа на паскале: // Дан целочисленный массив размера N. //...

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

25
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
30.10.2014, 13:50 2
Юзайте поиск. Совсем на днях была ровно такая задача.
Преобразовать одномерный массив, увеличив каждую его серию на 1 элемент
1
8 / 8 / 1
Регистрация: 24.10.2013
Сообщений: 205
30.10.2014, 13:52  [ТС] 3
Я в ней не особо разобралась К тому же, нужно чтобы начало программы было таким
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <conio.h>
void main()
{int N;
int A[100];
int i;
clrscr();
printf("vvod N=");
scanf("%d",&N);
printf("vvod elementov");
for (i=0;i<N;i++) scanf ("%d",&A[i]);
}
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
30.10.2014, 14:02 4
Евдокия, вы только не обижайтесь, но переделывать программу под вашу шапку мне сильно лень. И еще больше некогда. Поэтому, у вас вариантов два:
1) пытаться разобраться самостоятельно;
2) ждать у моря погоды.
Если все же решите пытаться разобраться самостоятельно и не поймете логику (что делается в блоке кода например, а не "что такое int**"), тогда спрашивайте.
1
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 29
30.10.2014, 15:50 5
HighPredator, я хоть и не ТС, но тоже спрошу (хотел еще в той теме спросить, да постеснялся) - я не разбирал ваш код, но мне кажется, что задачу можно решить в 2 строчки кода. Так, собственно, вопрос - зачем такой многострочный код?
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
30.10.2014, 15:55 6
Цитата Сообщение от _Ivana Посмотреть сообщение
собственно, вопрос - зачем такой многострочный код?
Даже не знаю, что вам ответить... Вариант "я захотел решить именно так" вас устроит?
0
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 29
30.10.2014, 15:59 7
Конечно устроит, по всем параметрам, включая искренность. Просто думал, вдруг за этим стоит какая-то методическая философия или что еще - просто удивился, когда увидел такое обилие кода для такой задачки.
0
8 / 8 / 1
Регистрация: 24.10.2013
Сообщений: 205
30.10.2014, 16:06  [ТС] 8
И как решить эту задачу в 2 строчки?
0
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 29
30.10.2014, 16:10 9
Евдокия, вы же писали:
Цитата Сообщение от Евдокия Посмотреть сообщение
Алгоритм я понимаю
- вот его и реализовать. А учитывая, что
Цитата Сообщение от Евдокия Посмотреть сообщение
длина серии может быть равна 1
реализация получается совсем тривиальной.
0
8 / 8 / 1
Регистрация: 24.10.2013
Сообщений: 205
30.10.2014, 16:28  [ТС] 10
Примерно так?

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
int i = 0;
int j = 0;
int N = 0;
int nN = 0;
 
  for(i = 0; i < N - 1; i++)
  {
    if (A[i] != A[i + 1])
    {
      nN++;
    }
  }
 nN++;
 
 
  while (i < N - 1)
  {
    A[j] = (A)[i];
    if (A[i] != A[i + 1])
    {
    A[j + 1] = A[j];
      j = j + 2;
    }
    else
       j++;
       i++;
  }
0
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 29
30.10.2014, 16:37 11
Давайте начнем с нарезания памяти под массивы. Их у вас в коде один? Не думаю, что можно решить эту задачу в исходном массиве, полагаю, что надо все-таки два.
HighPredator опытный, он динамически память выделяет. А я таких сложностей не хочу, хочу сразу нарезать максимального размера, но отдельно хранить переменную - его фактическую длину. Какой максимальный размер массива результата может быть? Вот такой и нарезайте его.
1
8 / 8 / 1
Регистрация: 24.10.2013
Сообщений: 205
30.10.2014, 16:45  [ТС] 12
То есть, нужно создать другой массив В,в который поместить результат?
C
1
2
3
B[j]=A[i];
 if (A[i] != A[i + 1])
B[j+1]=B[j]
0
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,970
Записей в блоге: 29
30.10.2014, 16:48 13
Цитата Сообщение от Евдокия Посмотреть сообщение
То есть, нужно создать другой массив В,в который поместить результат?
На самом деле можно просто вывести в выходной поток (в файл или на экран) результат, не храня его в отдельном массиве. Но у вас в задании сказано
Цитата Сообщение от Евдокия Посмотреть сообщение
Преобразовать массив,увеличив
- значит надо создавать другой массив. А поскольку его длина будет больше длины исходного массива (надеюсь, вы это понимаете), то имеет полный резон нарезать другой массив. Если, конечно, не хотите хранить результат в другом контейнере типа связанного списка или каком-то еще
1
HighPredator
30.10.2014, 16:52
  #14

Не по теме:

Цитата Сообщение от _Ivana Посмотреть сообщение
Не думаю, что можно решить эту задачу в исходном массиве
Это можно сделать в рамках одного массива, только если ограничить пользователя вводом не более n/2 элементов.

0
_Ivana
30.10.2014, 16:56
  #15

Не по теме:

Можно. Но для этого надо применить пару хитрых трюков, а в случае ТС это имхо пока рановато.

0
8 / 8 / 1
Регистрация: 24.10.2013
Сообщений: 205
31.10.2014, 14:32  [ТС] 16
Подскажите,где ошибка?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <conio.h>
void main()
{int N;
int A[N];
int B[K];
int i; int j;
clrscr();
printf("vvod N=");
scanf("%d",&N);
printf("vvod elementov");
for (i=0;i<N;i++) scanf ("%d",&A[i]);
}
for (i=0;i<N;i++)
{if (A[i]!=A[i+1])
{B[j++]=A[i];
B[j++]=A[i+1]}
else B[j++]=A[i];
}
for (j=0;j<K;j++)
printf("rez",B[j]);
}
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
31.10.2014, 14:50 17
Цитата Сообщение от Евдокия Посмотреть сообщение
Подскажите,где ошибка?
вначале N должно быть присвоено значение и только потом должны создаваться массивы размера N
и что такое К?
0
8 / 8 / 1
Регистрация: 24.10.2013
Сообщений: 205
31.10.2014, 14:53  [ТС] 18
Значение N вводится пользователем
C
1
2
printf("vvod N=");
scanf("%d",&N);
Добавлено через 1 минуту
Что не так в самом алгоритме?
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
31.10.2014, 15:00 19
Цитата Сообщение от Евдокия Посмотреть сообщение
Значение N вводится пользователем
я повторю и выделю жирным
Цитата Сообщение от Darkrduk Посмотреть сообщение
вначале N должно быть присвоено значение и только потом должны создаваться массивы размера N
"К" вообще не объявлено и не имеет значения.

Добавлено через 5 минут
начиная с 16 строки, где задаем B[j++] у нас j не определено, оно не может увеличиваться. Определяется оно только в 20 строке.
1
8 / 8 / 1
Регистрация: 24.10.2013
Сообщений: 205
31.10.2014, 15:03  [ТС] 20
Вот так?
C
1
2
3
4
5
6
7
8
9
10
for (i=0;i<N;i++)
{if (A[i]!=A[i+1])
{j=0;
B[j++]=A[i];
B[j++]=A[i+1]}
else B[j++]=A[i];
}
for (j=0;j++)
printf("rez",B[j]);
}
0
31.10.2014, 15:03
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.10.2014, 15:03
Помогаю со студенческими работами здесь

Преобразовать массив, увеличив первую серию наибольшей длины на один элемент
Дан массив, состоящий из n элементов. Назовем серией группу подряд идущих одинаковых элементов, а...

Заменить каждую серию массива, длина которой меньше L, на один элемент с нулевым значением
Здравствуйте! Помогите в решении следующей задачи, пожаалуйста Дано целое число L (&gt; 1) и...

Заменить в строке каждую серию подряд идущих пробелов на один пробел
Заменить в строке каждую серию подряд идущих пробелов на один пробел.

Преобразовать массив, умножив все его элементы на минимальный элемент
Дан целочисленный массив, состоящий из n элементов. Преобразовать его, умножив все его элементы на...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru