Имя: Пароль:
1C
 
Как в массиве, точнее в цикле сохранить несколько элементов?
0 Нач программист
 
31.08.16
09:51
Дан массив из четного числа элементов. Поменять местами:
а) его половины;

        МассивЧетныхЧиселВСтроку="";
    МассивЧетныхЧиселПослеОбменаВСтроку="";
    
    МассивЧетныхЧисел=Новый Массив(20);
    ГСЧ=Новый ГенераторСлучайныхЧисел(20);
    
    Для Счетчик=0 По 19 Цикл
        
        СлучайноеЧисло=ГСЧ.СлучайноеЧисло(0,100);
        МассивЧетныхЧисел[Счетчик]=СлучайноеЧисло;
        МассивЧетныхЧиселВСтроку=МассивЧетныхЧиселВСтроку+МассивЧетныхЧисел[Счетчик]+" ";
        
    КонецЦикла;
    
    Сообщить("Массив Четных Чисел: "+МассивЧетныхЧиселВСтроку);
    
    Для Счетчик=0 По 19 Цикл
        //?    
        МассивЧетныхЧиселПослеОбменаВСтроку=МассивЧетныхЧиселПослеОбменаВСтроку+МассивЧетныхЧисел[Счетчик]+" ";
1 Нач программист
 
31.08.16
09:52
КонецЦикла;
2 FIXXXL
 
31.08.16
09:53
что поменять местами?
3 Fish
 
31.08.16
09:53
Ты СП даже ни разу не открывал что ли? Посмотрел бы там для начала, как с массивами работать.
4 Fish
 
31.08.16
09:55
(2) Какие-то половины.
5 batman69
 
31.08.16
10:06
(2) Как поменять?
6 Fedor-1971
 
31.08.16
10:08
(0) школьный курс информатики "Сортировка массива".
Напиши словами полное задание, а не поток твоего сознания выраженный кодом 1С.
8 Fedor-1971
 
31.08.16
10:17
(7) Может программирование изучает. Только не по книгам, а на форуме. У каждого свой путь.
Поколение экспериментов со школьной программой. Горе будет если это учитель и собрался другим объяснять "как делать правильно".
9 batman69
 
31.08.16
10:20
(8) Не изучает, а решение просит. Поколение экскр... сорри, не сдержался. ТС уже выступал тут.
10 MiniMuk
 
31.08.16
10:42
Для Счетчик=0 По 19 Цикл
          МассивЧетныхЧиселПослеОбменаВСтроку=МассивЧетныхЧиселПослеОбменаВСтроку+МассивЧетныхЧисел[19-Счетчик]+" ";
КонецЦикла;
11 Fedor-1971
 
31.08.16
11:06
(10) ТС надо "поменять половины", а не инвертировать массив. Только непонятно почему на выходе строка, а не результирующий массив.
12 MiniMuk
 
31.08.16
11:13
(11) ну числа из первой половины оказались во второй и наоборот
?
13 MiniMuk
 
31.08.16
11:13
(11) нигде не сказано что порядок половин должен сохранятся
14 Fedor-1971
 
31.08.16
11:23
(12) "Чётное число элементов" - как-бы намекает на обмен начиная с половины массива, т.е. элемент N поменять местами с элемент N*2, где N 1...кол-во/2 (это теория без привязки к коду)
15 Fish
 
31.08.16
11:24
(14) Я так понимаю, что ТС уже покинул ветку. А вы всё гадаете, что же он хотел :)
16 Fedor-1971
 
31.08.16
11:26
14 лопухнулся элемент N поменять местами с элемент N+(кол-во/2)
(15) нет, просто прикольно смотреть на предлагаемые решения
17 Нач программист
 
31.08.16
11:33
Просто подскажите как в этом массиве сохранить первые 10 элементов
18 batman69
 
31.08.16
11:37
(17) Наглец.
19 Fedor-1971
 
31.08.16
11:37
(18) зачем сохранять? просто меняй местами через промежуточную переменную, inf=a[0]; a[0]=a[10]; a[10]=inf; и делов то. (школьная программа информатики)
По ходу, в школе учебник информатики скурил с сотоварищи.
20 Нач программист
 
31.08.16
11:47
Для Счетчик=0 По 19 Цикл
        а=МассивЧетныхЧисел[Счетчик];
        МассивЧетныхЧисел[Счетчик]=МассивЧетныхЧисел[Счетчик+10];
        МассивЧетныхЧисел[Счетчик+10]=а;
        МассивЧетныхЧиселПослеОбменаВСтроку=МассивЧетныхЧиселПослеОбменаВСтроку+МассивЧетныхЧисел[Счетчик]+" ";
        
    КонецЦикла;
    
    Сообщить("Массив Четных Чисел После Обмена: "+МассивЧетныхЧиселПослеОбменаВСтроку);


Такое ты имел в виду? (19)
21 Fedor-1971
 
31.08.16
11:55
(20) В общем да, только счётчик до 19.
Просто интересно где будет взят элемент 29?
22 Fedor-1971
 
31.08.16
12:01
21 и смещение откорректируй для индекса
23 Timon1405
 
31.08.16
12:04
МассивВход=новый массив;
МассивВход.Добавить(1);
МассивВход.Добавить(2);
МассивВход.Добавить(3);
МассивВход.Добавить(4);
МассивВход.Добавить(5);
МассивВход.Добавить(6);

МассивВыход = новый Массив;
Всего = МассивВход.ВГраница()+1;
Смещение = Всего/2;
Для Сч=0 по Всего-1 цикл
    МассивВыход.Добавить(МассивВход[(Сч+Смещение)%Всего]);
КонецЦикла;
24 Fedor-1971
 
31.08.16
12:14
(23) не спеши, пусть ТС разберётся с простыми действиями над одним массивом.
25 MiniMuk
 
31.08.16
12:47
(14) мы намеков не понимаем, мыж не в догодалки с барышней в баре играем
(17)  СохранненыйМассивПервойПоловиныЧетныхЧисел=Новый Массив(10);
  Для Счетчик=0 По 9 Цикл
СохранненыйМассивПервойПоловиныЧетныхЧисел[Счетчик] = МассивЧетныхЧисел[Счетчик]
   КонецЦикла;
26 Fedor-1971
 
31.08.16
12:54
(25) Для ТС задание и есть полные догадалки, ну не понимает он что от него хотят
27 MiniMuk
 
31.08.16
12:57
(26) Ну вот увидит человек что задача выполнена формально, подумает а почему, наверно надо было чтото уточнить. Вдруг в следующий раз сразу так же подумает? не?
28 Fedor-1971
 
31.08.16
13:02
(27) для начала, он её не совсем понимает, не то что-бы оценить результат решения. И очень хочется верить, что на форум он пришёл разобраться, а не выцыганить готовое решение.
29 Нач программист
 
01.09.16
14:51
Всем спасибо!

//Дан массив из четного числа элементов. Поменять местами:
    //а) его половины;
    
    ПерваяПоловинаМассива=0;    
    МассивЧетныхЧиселВСтроку="";
    МассивЧетныхЧиселПослеОбменаВСтроку="";
        
    МассивЧетныхЧисел=Новый Массив(20);
    ГСЧ=Новый ГенераторСлучайныхЧисел(20);
    
    Для Счетчик=0 По 19 Цикл
        
        СлучайноеЧисло=ГСЧ.СлучайноеЧисло(0,100);
        МассивЧетныхЧисел[Счетчик]=СлучайноеЧисло;
        МассивЧетныхЧиселВСтроку=МассивЧетныхЧиселВСтроку+МассивЧетныхЧисел[Счетчик]+" ";
        
    КонецЦикла;
    
    Сообщить("Массив Четных Чисел: "+МассивЧетныхЧиселВСтроку);
    
    Для Счетчик=0 По 9 Цикл
        
        ПерваяПоловинаМассива=МассивЧетныхЧисел[Счетчик];
        МассивЧетныхЧисел[Счетчик]=МассивЧетныхЧисел[Счетчик+10];
        МассивЧетныхЧисел[Счетчик+10]=ПерваяПоловинаМассива;
                
    КонецЦикла;
    
    Для Счетчик=0 По 19 Цикл
        
        МассивЧетныхЧиселПослеОбменаВСтроку=МассивЧетныхЧиселПослеОбменаВСтроку+МассивЧетныхЧисел[Счетчик]+" ";
        
    КонецЦикла;
    
    Сообщить("Массив Четных Чисел После Обмена: "+МассивЧетныхЧиселПослеОбменаВСтроку);