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

Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1. - C++

Восстановить пароль Регистрация
 
Enigmya
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
08.09.2011, 14:44     Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1. #1
Есть задача:
Дан N-элементный одномерный массив M. Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1.

Подскажите, пожалуйста, с помощью какой функции искать эту половину и как потом перемещать элементы?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2011, 14:44     Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1.
Посмотрите здесь:

C++ заполнить массив(NxM) последовательными числами от 1 до NxM в следующем порядке
C++ Превратить массив так, чтобы в его первой половине располагались элементы стоящие в четных позициях а во второй половине - нечетные
которая будет заполнить массив случайно числами, но чтобы пристутствував 0, количество элементов = 25 найти сумму модулей элементов массива после перв C++
Заполнение массива последовательными натуральными числами, начиная с X C++
C++ Выполнить реверс отдельно в первой половине и второй половине массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ruu
13 / 13 / 1
Регистрация: 20.07.2010
Сообщений: 43
08.09.2011, 14:53     Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1. #2
Цитата Сообщение от Enigmya Посмотреть сообщение
Подскажите, пожалуйста, с помощью какой функции искать эту половину и как потом перемещать элементы?
C
1
2
3
4
5
6
7
char M[N];
int i, K;
while(K>=1) {
  M[N/2 + i] = K;
  ++i;
  --K;
}
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
08.09.2011, 16:15     Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1. #3
C++
1
2
3
char M[N];
int i, K;
while(K>=1) {
И чему изначально равно K и i ?

Добавлено через 8 минут
вариант
C++
1
2
3
4
5
6
7
8
9
 const int N=10;
 char M[N]={0,};
 int i=0, K=N/2;
 while(K)
 {
  M[(N+1)/2 + i] = K;
  ++i;
  --K;
 }
Go0gle
17 / 17 / 1
Регистрация: 08.09.2011
Сообщений: 22
08.09.2011, 20:12     Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1. #4
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 nSize ;    // Размер твоего массива
 
    cout << "Input n: ";
    cin >> nSize ;
 
    int M[nSize] ;    //Создаем массив с указаным размером
 
 
    for(int i = 0 ; i < nSize ; ++i )
        M[i] = 0 ;                    // Инициализируем нулями
 
 
    int nCenterMass = nSize / 2 ;      //Находим середину массива
 
 
    for(int i = nCenterMass, k = nCenterMass ; i <= nSize ; ++i) //Начинаем заполнять массив с середины
    {
        M[i] = k ;  // В начале k будет равно среднему элементу, потом дикрементируем
        k-- ;
    }
 
 
    for(int i = 0 ; i <= nSize ; ++i)    // Выводим
    {                                    // результат
        cout<<"M["<<i<<"]="<<M[i] ;      // на
        cout<<endl;                      // экран
    }
Enigmya
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
08.09.2011, 23:26  [ТС]     Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1. #5
Спасибо. Чуть-чуть исправила, но все-равно что-то не так)

Код
#include <iostream>
using namespace std;
int main()                                         
{setlocale(LC_ALL,"Russian");
	int nSize ;    // Размер твоего массива
	     cout << "Input n: ";
		  cin >> nSize ;
	     int* M;    //Создаем массив с указаным размером
		 M=new int[nSize];
      for(int i = 0 ; i < nSize ; ++i )
	  {M[i] = i; }                   // Инициализируем нулями

 
     int nCenterMass = nSize / 2 ;      //Находим середину массива
      for(int i = nCenterMass, k = nCenterMass ; i <= nSize ; ++i) //Начинаем заполнять массив с середины
    {
        M[i] = k ;  // В начале k будет равно среднему элементу, потом дикрементируем
        k-- ;
    }
	  
     for(int i = 0 ; i <= nSize ; ++i)   
    {                                   
        cout<<"M["<<i<<"]="<<M[i] ;      
        cout<<endl;
		delete[] M;
		    }
	 system("pause");
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
08.09.2011, 23:38     Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1. #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<conio.h>
#define N 21
using namespace std;
 
int main()
{
    int M[N]={}, K = N/2;
    for (int i = N/2 + N%2; i<N; i++, K--)
        M[i] = K;
    for (int j = 0; j<N; j++)
        cout<< M[j]<< " ";
    getch();
    return 0;
}
Ruu
13 / 13 / 1
Регистрация: 20.07.2010
Сообщений: 43
09.09.2011, 10:30     Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1. #7
mimicria,
Цитата Сообщение от mimicria Посмотреть сообщение
И чему изначально равно K и i ?
Я лишь ответил на вопрос. Разумеется мой пример кода и рядом не стоял с Вашим
Ответьте, пожалуйста, -- с чего Вы взяли, что число N равно 10? может оно равно 20 или 113?
Возможно Вы телепат? Если Вы действительно телепат, то могу сказать лишь одно -- Вы очень ценная находка для форума
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
09.09.2011, 12:19     Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1. #8
Цитата Сообщение от Ruu Посмотреть сообщение
mimicria,
Я лишь ответил на вопрос. Разумеется мой пример кода и рядом не стоял с Вашим
Ответьте, пожалуйста, -- с чего Вы взяли, что число N равно 10? может оно равно 20 или 113?
Возможно Вы телепат? Если Вы действительно телепат, то могу сказать лишь одно -- Вы очень ценная находка для форума
Вы объявляете переменные, но не инициализируете их, в них хранится мусор. Для избежания нежелательных ошибок, навроде попытки создания массива M[-5] и для демонстрации работы программы, некоторым переменным, не указанным в условии, присваиваются значения из головы.
Enigmya
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
09.09.2011, 23:00  [ТС]     Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1. #9
И все же, как заставить заработать вот этот вариант кода, чтобы был динамический массив???
Код
#include <iostream>
using namespace std;
int main()                                         
{setlocale(LC_ALL,"Russian");
        int nSize ;    // Размер твоего массива
             cout << "Input n: ";
                  cin >> nSize ;
             int* M;    //Создаем массив с указаным размером
                 M=new int[nSize];
      for(int i = 0 ; i < nSize ; ++i )
          {M[i] = i; }                   // Инициализируем нулями
 
 
     int nCenterMass = nSize / 2 ;      //Находим середину массива
      for(int i = nCenterMass, k = nCenterMass ; i <= nSize ; ++i) //Начинаем заполнять массив с середины
    {
        M[i] = k ;  // В начале k будет равно среднему элементу, потом дикрементируем
        k-- ;
    }
          
     for(int i = 0 ; i <= nSize ; ++i)   
    {                                   
        cout<<"M["<<i<<"]="<<M[i] ;      
        cout<<endl;
                delete[] M;
                    }
         system("pause");
}
Добавлено через 8 часов 52 минуты
Помогите, пожалуйста
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2011, 14:50     Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1.
Еще ссылки по теме:

В первой половине массива нужно найти количество элементов, больших P, а в второй – меньших P C++
Вычислить произведение положительных элементов в первой и во второй половине массива C++
C++ Найти максимальные элементы массива в первой и во второй его половине

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

Или воспользуйтесь поиском по форуму:
Ruu
13 / 13 / 1
Регистрация: 20.07.2010
Сообщений: 43
24.09.2011, 14:50     Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1. #10
Цитата Сообщение от MrGluck Посмотреть сообщение
Вы объявляете переменные, но не инициализируете их, в них хранится мусор
Вы знаете в чем отличие примера от готового варианта решения?
З.Ы. Я думаю, что любой начинающий программист знает такой термин, как инициализация переменных.
Yandex
Объявления
24.09.2011, 14:50     Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1.
Ответ Создать тему
Опции темы

Текущее время: 04:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru