Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2012, 16:52   #1
Sergey1989
Новичок
Джуниор
 
Регистрация: 18.04.2012
Сообщений: 1
Печаль Отразить элементы массива!

Помогите пожалуйста! (C++)

Вот исходное задание: Задан массив A(M), число элементов которого кратно N. Отразить каждую группу из N элементов. Элементы массива – вещественные числа в диапазоне ±1000, M - целое число в диапазоне [2, 20], N - целое число в диапазоне [1, 20]

Например: М=8, N=4, Исходный массив : 0 1 2 3 4 5 6 7
Отражённый массив 3 2 1 0 7 6 5 4
Если M не кратно N, выдать сообщение об ошибке!

Это я сделал! Теперь нужно, чтобы программа отражала элементы массива даже тогда, когда M не кратно N. Например: М=10, N=4, Исходный массив: 0 1 2 3 4 5 6 7 8 9
Отражённый массив 3 2 1 0 7 6 5 4 9 8
Помогите, очень прошу! У меня с массивами не очень!

Вот код, где массив отражается, когда M кратно N.


PHP код:
#include "stdafx.h"
#include "testing.h" 

int _tmain(int argc_TCHARargv[])
{

    
//Исходный массив
    
int a[20];
    
//Размерность массива
    
int M,N;

    
//Ввод размерности массиваgg

    
input_printf("input N = ");
    
scanf("%d", &N);

    
input_printf("array size = ");
    
scanf("%d", &M);

    
//ПРоверка, не выходит ли размерность массива за заданные рамки
    
if(|| 20)
    {
        
error_printf("invalid array size !!!");
        
WAIT_ANY_KEY
            
return 0;
    }

    if(
N>|| N<|| N>20)
    {
        
error_printf("invalid N !!!");
        
WAIT_ANY_KEY
            
return 0;
    }
    
    
//Проверяем, кратно ли M
    
if(!=0)
    {
        
error_printf("n ne cratno");
        return 
0;
    }

    
//Ввод исходного массива размерностью М
    
for(int i 0Mi++)
    {
        
input_printf("input a[%d] =",i);
        
scanf("%d",&a[i]);
        
//Проверка, не выходит ли число за диапазон
        
if(a[i]>1000 || a[i] < -1000)
        {
            
error_printf("out of range !!!");
            
WAIT_ANY_KEY
                
return 0;
        }
    }
    
int i=00k=0;

    while(
M)
    {
        if(
i<j*N+(int)((N)/2))
        {
            
a[i] += a[k]; 
            
a[k] = a[i] - a[k] ; 
            
a[i] = a[i] - a[k] ; 
            
k++;
        }
        
printf("%d",a[i]);
        
i++;
        if(
i%== 0)
        {
            
0;
            
j++;
        }
    }
    return 
0;


Последний раз редактировалось Sergey1989; 18.04.2012 в 17:00.
Sergey1989 вне форума Ответить с цитированием
Старый 18.04.2012, 20:07   #2
IQDDD
Пользователь
 
Регистрация: 12.09.2008
Сообщений: 17
По умолчанию

Надо написать функцию void PartReverse(int startIndex, int finishIndex, int[] arr), которая в массиве arr меняет местами элементы, начиная со startIndex и заканчивая finishIndex. Теперь дело сводится к циклу и получению остатка от деления.
IQDDD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Элементы матрицы. Все ненулевые элементы массива D(k) расположить в начале массива E(k) и подсчитать их к Вася Маклауд Помощь студентам 0 03.04.2011 17:21
1.Найти в матрице первую строку, все элементы которой отрицательны 2.отсортировать элементы массива по в w0lf16 Помощь студентам 2 22.11.2009 15:47
Дана матрица размера M*N.Зеркально отразить ее элементы Ильдар ХАЛИКОВ Паскаль, Turbo Pascal, PascalABC.NET 6 09.04.2008 22:22
переписать из массива в линейный двунаправленный список чётные элементы массива Black_Ak24 Помощь студентам 12 08.01.2008 00:44