Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
3 / 3 / 2
Регистрация: 23.10.2014
Сообщений: 62

Записать в массив z все порядковые номера элементов массива a равные 1

16.02.2015, 21:47. Показов 3277. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сейчас у нас начались динамические переменные...
Итак, задание:

Создать динамические массивы, используя указатели. Дан одномерный массив a. Записать в массив z все порядковые номера элементов массива a равные 1. Затем упорядочить по возрастанию элементы массива a, расположенные между двумя последними элементами равными 1.

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
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
int main(){
    int *a, *z;
    a=new int;
    z=new int;
    int n, m=0,  e1=0,e2=0;
    
    printf("Введите N:"); scanf("%d",&n);
    srand(time(NULL));
    printf("Массив A:\n");
    for(int i=0;i<n;i++){
        a[i]=rand()%11-5;
        printf("%d  ",a[i]);
        if(a[i]==1){
            z[m]=i; m++;
            e1=e2; e2=i;
        }
    }
    
    printf("\n\nМассив Z, состоящий из индексов единиц массива А:\n");
    for(int i=0;i<m;i++)
        printf("%d  ",z[i]);
        
    printf("\nИндекс предпоследней единицы = %d",e1);
    printf("\nИндекс последней единицы = %d",e2);
    for(int i=e1+1;i<e2;i++){
        int min=i;
        for (int j=i;j<e2;j++)
            if(a[j]<a[min])min=j;
        int tmp=a[i];
        a[i]=a[min];
        a[min]=tmp;
    }
    
    printf("\n\nМассив A, с упорядоченными элементами, стоящими между двух последних единиц:\n");
    for(int i=0;i<n;i++)
        printf("%d  ",a[i]);
    getch();
}
Программа делает не пойми что, что не так?
(Выдает индексы иногда неправильные , а изредка, вообще, отрицательные)

P.S.Компилятор P.S. Dev-Cpp_5.4.2_TDM-GCC_x64

Вот:
Кликните здесь для просмотра всего текста
[404]
-Откуда взялась девятка в отсортированном массиве?!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2015, 21:47
Ответы с готовыми решениями:

Увеличить массив на порядковые номера элементов из другого массива
помогите, пожалуйста, решить задачу В исходном массиве А из n целых чисел все элементы, равны заданному d; получить массив В увеличить на...

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

Найти минимальный элемент массива и вывести на экран все номера элементов массива равные минимальному
Найти минимальный элемент массива и вывести на экран все номера элементов массива равные минимальному(Delphi)

27
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
16.02.2015, 23:33
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Lesnik Посмотреть сообщение
а в си можно выходить за пределы массива, если что
В C++ тоже, если что.
Но, если память перед/до массива предварительно не выделена, то это, в конце концов, приведёт к непредсказуемым последствиям.
0
3 / 3 / 2
Регистрация: 23.10.2014
Сообщений: 62
16.02.2015, 23:39  [ТС]
вообщем скормлю сдам преподу так
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
17.02.2015, 00:06
Цитата Сообщение от Lesnik Посмотреть сообщение
а в си можно выходить за пределы массива, если что
можно, "если вас не интересует результат"(с) Жванецкий
0
3 / 3 / 2
Регистрация: 23.10.2014
Сообщений: 62
17.02.2015, 00:12  [ТС]
а вот я сам и попался... нам препод скинул лекции и там было:
4.3 ДИНАМИЧЕСКИЕ МАССИВЫ

С помощью операции new[ ] могут быть созданы Динамические массивы
Пример:
C++
1
2
int n = 100;
float *p = new float[n];
Создается указатель p на вещественный тип , и в оперативной памяти выделяется область смежных ячеек памяти для размещения 100 элементов вещественного типа, и при этом адрес начальной ячейки записывается в указатель р
new[ ] выделяет область памяти, состоящую из смежных m штук байтов и возвращает адрес начального байта в указанную переменную:



Доступ к элементам динамического массива осуществляется точно так же как и к статическим, так как массив и указатель – одно и то же: p[5].
Динамические массивы не обнуляются при создании.
Память, выделенная для динамического массива, после использования должна быть освобождена. Для первого способа (для операции new[ ]) с помощью оператора delete[ ],
Пример:
C++
1
Delete(p); //освобождение памяти для указателя р
так что верно было сказано, что
C++
1
2
a=new int; // -для одного элемента
a=new int[n]; // -для n элементов
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
17.02.2015, 00:21
Цитата Сообщение от Lesnik Посмотреть сообщение
Delete(p); //освобождение памяти для указателя р
что это?
C++
1
2
delete p;// для одного элемента
delete []p;// для массива
Цитата Сообщение от Lesnik Посмотреть сообщение
так как массив и указатель – одно и то же:
Да ну?
имя массива и указатель, еще куда ни шло
а масссив на 1000 элементов и указатель, это вряд ли
0
3 / 3 / 2
Регистрация: 23.10.2014
Сообщений: 62
17.02.2015, 00:37  [ТС]
нууу, такие у нас и методы и лекции и задания

Добавлено через 7 минут
Окончательный РАБОЧИЙ вариант
Кликните здесь для просмотра всего текста
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
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
int main(){
    srand(time(NULL));
    int *a,n,  *z,m=0,  e1=0,e2=0;
    printf("Введите N:"); scanf("%d",&n);
    a=new int[n];
    printf("Массив A:\n");
    for(int i=0;i<n;i++){
        a[i]=rand()%11-5;
        printf("%d  ",a[i]);
        if(a[i]==1){
            m++;
            e1=e2;
            e2=i;
        }
    }
    
    z=new int[m];
    for(int i=0,j=0;i<n;i++)
        if(a[i]==1)
            z[j++]=i;
    
    printf("\n\nМассив Z, состоящий из индексов единиц массива А:\n");
    for(int i=0;i<m;i++)
        printf("%d  ",z[i]);
    delete []z;
        
    printf("\nИндекс предпоследней единицы = %d",e1);
    printf("\nИндекс последней единицы = %d",e2);
    for(int i=e1+1;i<e2;i++){
        int min=i;
        for (int j=i;j<e2;j++)
            if(a[j]<a[min])min=j;
        int tmp=a[i];
        a[i]=a[min];
        a[min]=tmp;
    }
    
    printf("\n\nМассив A, с упорядоченными элементами, стоящими между двух последних единиц:\n");
    for(int i=0;i<n;i++)
        printf("%d  ",a[i]);
    delete []a;
    getch();
}


Добавлено через 4 минуты
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
после этого создаете массив z:
Код C++
C++
1
2
3
4
z = new int[m];
for (int i = 0, j = 0; i < n; ++i)
* * if (a[i] == 1)
* * * * z[j++] = i;
for (int i = 0, j = 0; i < n; ++i); - почему так, а не так for (int i = 0, j = 0; i < n; i++); ?
ну здесть то понятно z[j++] - сначало мы берем z[0], а уж потом увеличиваем
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
17.02.2015, 00:47
Цитата Сообщение от Lesnik Посмотреть сообщение
for (int i = 0, j = 0; i < n; ++i); - почему так, а не так for (int i = 0, j = 0; i < n; i++); ?
в данном случае без разницы, но обычно пре более быстр чем пост
1
20 / 20 / 1
Регистрация: 24.12.2014
Сообщений: 65
17.02.2015, 06:01
Lesnik, сразу так предлагал, вроде как даже понял:
Цитата Сообщение от Lesnik Посмотреть сообщение
Сначала считать элементы, создавать массив z
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2015, 06:01

Дано массив А[4][5]. Определить номера элементов массива равные 10. C#
1)Дано целое число массив А. Определить номера элементов массива равные на 10. C# 2)Составьте программу, которая найдет арифметическую...

Сформировать массив B (m), записав в него по росту порядковые номера всех нулевых элементов массива А
Заданный массив A (n). Сформировать массив B (m), записав в него по росту порядковые номера всех нулевых элементов массива А. Если в...

Записать в массив С подряд номера положительных элементов массива R и N элементов
Записать в массив С подряд номера положительных элементов массива R и N элементов. Распечатать в виде: Исходный массив: Число...

Записать в массив С номера положительных элементов массива R
Записать в массив С номера положительных элементов массива R из N элементов. CLS INPUT &quot;vvedite kolichestvo elementov massiva R...

Записать в массив y номера отрицательных элементов массива x
записать в массив y номера отрицательных элементов массива x(10) очень нужно


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru