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

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

Войти
Регистрация
Восстановить пароль
 
Enigmya
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
#1

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

08.09.2011, 14:44. Просмотров 654. Ответов 9
Метки нет (Все метки)

Есть задача:
Дан N-элементный одномерный массив M. Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1.

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

C++ Превратить массив так, чтобы в его первой половине располагались элементы стоящие в четных позициях а во второй половине - нечетные
Заполнение массива последовательными натуральными числами, начиная с X C++
C++ Выполнить реверс отдельно в первой половине и второй половине массива
В первой половине массива нужно найти количество элементов, больших P, а в второй – меньших P C++
Вычислить произведение положительных элементов в первой и во второй половине массива C++
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
18 / 18 / 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
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6228 / 3473 / 425
Регистрация: 29.11.2010
Сообщений: 9,178
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
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6228 / 3473 / 425
Регистрация: 29.11.2010
Сообщений: 9,178
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.
Еще ссылки по теме:

C++ Заполнить массив из 15 элементов последовательными простыми
Заполнить массив случайными числами; найти количество элементов массива, равных 50, и их индексы C++
C++ Выполнить реверс элементов массива отдельно в первой половине и во второй
C++ Заполнение массива из N элементов последовательными натуральными числами
C++ Заполнить массив из N элементов в обратном порядке последовательными натуральными числами

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

Или воспользуйтесь поиском по форуму:
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.
Ответ Создать тему
Опции темы

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