Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
rufcska
3 / 3 / 0
Регистрация: 18.06.2011
Сообщений: 40
#1

Динамическая память.Одномерный массив. - C++

07.01.2012, 02:34. Просмотров 645. Ответов 9
Метки нет (Все метки)

b) Динамическая память. Одномерный массив. Дан массив целых чисел. Поменять местами все
значение элементов с четными индексами с нечетными
Помогите плиз решить задачу(в си),ничего не лезет в голову...буду очень благодарен!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2012, 02:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамическая память.Одномерный массив. (C++):

Статическая память,Динамическая память. - C++
a) Статическая память. Двумерный массив. Дан массив целых чисел. В массиве есть отрицательные числа. Определить координаты левого нижнего...

Динамическая память - C++
Дано натуральное число n и целые числа{a}_{1},{a}_{2},...,{a}_{n}. Выяснить, есть ли среди цифр {a}_{1},{a}_{2},...,{a}_{n}совпадающие и...

Динамическая память с++ - C++
Как использовать динамическую память в с++

Динамическая память - C++
Всем привет!!! взникла проблема с выполнением строки K=A++; при выполнении printf("\n__________ %d\n",K.gasaaa()); получаю левые...

Динамическая память C++ - C++
Народ, подскажите, плиз, что я делаю не так? Надо посимвольно ститать строку, в процессе выделяя ей ровно столько памяти, сколько...

Динамическая память - C++
Есть 2 массива одной размерности: int *m1 = new int , *m2 = new int ; где N, M некие числа. Собственно вопрос: как...

9
Байт
Эксперт C
16151 / 10429 / 1557
Регистрация: 24.12.2010
Сообщений: 19,767
07.01.2012, 02:42 #2
C
1
2
3
4
5
6
7
int *M = (int *)malloc(2*n*sizeof(int));
// Заполняете массив ...
for(i=o; i<n; i+=2) {
  tmp = M[i];
  M[i] = M[i+1] ;
  M[i+1] = tmp;
}
0
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
07.01.2012, 09:26 #3
Цитата Сообщение от Байт Посмотреть сообщение
for(i=o; i<n; i+=2) {
for(i = 0; i < n; i+=2)
0
Evg
Эксперт CАвтор FAQ
17955 / 6186 / 415
Регистрация: 30.03.2009
Сообщений: 16,979
Записей в блоге: 27
07.01.2012, 10:07 #4
Если в массиве 1 элемент, то программа попытается поменять местами M[0] и M[1] и вылезет за границу массива. Как и для любого нечётного количества элементов
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.01.2012, 10:25 #5
Цитата Сообщение от Evg Посмотреть сообщение
Если в массиве 1 элемент, то программа попытается поменять местами M[0] и M[1] и вылезет за границу массива. Как и для любого нечётного количества элементов
Не вылезет. У него предусмотрено на этот случай создание массива размером n*2. А вот сам обмен не до конца отработан, но он сам все исправит.
2
Evg
Эксперт CАвтор FAQ
17955 / 6186 / 415
Регистрация: 30.03.2009
Сообщений: 16,979
Записей в блоге: 27
07.01.2012, 10:49 #6
Цитата Сообщение от valeriikozlov Посмотреть сообщение
У него предусмотрено на этот случай создание массива размером n*2
Ой, не заметил. Только в от в условии задачи ничто про чётное количество элементов массива не сказано

Добавлено через 35 секунд
Цитата Сообщение от valeriikozlov Посмотреть сообщение
но он сам все исправит.
"он" - это кто?
0
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
07.01.2012, 12:05 #7
Цитата Сообщение от Evg Посмотреть сообщение
"он" - это кто?
тот кто написал - Байт
0
Байт
Эксперт C
16151 / 10429 / 1557
Регистрация: 24.12.2010
Сообщений: 19,767
07.01.2012, 12:56 #8
Исправленному верить
C
1
2
3
4
5
6
7
int *M = (int *)malloc(2*n*sizeof(int));
// Заполняете массив ...
for(i=o; i<2*n; i+=2) {
  tmp = M[i];
  M[i] = M[i+1] ;
  M[i+1] = tmp;
}
Конечно, массив четной размерности 2n. Для нечетной не понятно, кого с чем менять. Или как-то надо уточнять условие
0
rufcska
3 / 3 / 0
Регистрация: 18.06.2011
Сообщений: 40
14.01.2012, 03:24  [ТС] #9
Всмысле уточнять? вроде все написано норм)
а1,а2,а3...аn вот надо их поменять местами четные на нечентые
1 ,2 ,3 ,4 а надо 2 ,1 ,4 ,3
а1,а2,а3,а4 а2,а1,а4,а3
0
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,780
14.01.2012, 04:14 #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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void swap_neighbours(int * arr, size_t size){
    if ( size > 1 ){
        *arr ^= *(arr+1);
        *(arr+1) ^= *arr;
        *arr ^= *(arr+1);
        swap_neighbours(arr+2, size-2);
    }
}
 
void random_fill(int * arr, size_t size, int min, int max){
    while ( size-- )
        *arr++ = rand() % ( max - min + 1 ) + min;
}
 
void dump(const int * arr, size_t size){
    while ( size-- )
        printf("%d%c", *arr++, ( size ) ? ' ' : '\n');
}
 
int main(void){
    int * arr;
    size_t size;
    
    srand(time(NULL));
 
    while ( printf("Size of array: ") && scanf("%u", &size) == 1 && size ){
        if ( ! ( arr = malloc(sizeof(int) * size) ) ){
            perror("malloc");
            exit(1);
        }
        
        random_fill(arr, size, 0, 9);
        printf("Before: ");
        dump(arr, size);
        swap_neighbours(arr, size);
        printf("After:  ");
        dump(arr, size);
        
        free(arr);
    }
    
    exit(0);
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2012, 04:14
Привет! Вот еще темы с ответами:

Динамическая память - C++
Как создать массив A через динамическую память ???

Динамическая память - C++
Кто сможет помочь? Дана матрица А. Упорядочить элементы каждой строки в порядке не убывания. (нужно составить 2 программы с...

Динамическая память - C++
Помогите перевести массивы в динамическую память пожалуйста + почему-то не работает запись в файл(не перезаписывает). #include &lt;iostream&gt;...

Динамическая память. - C++
Всем привет! Уважаемые знатоки, можете посмотреть мою реализацию класса вектор? У меня при их большем количестве в программе вечно...


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
14.01.2012, 04:14
Ответ Создать тему
Опции темы

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