С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

Заполнить массив из N элементов в обратном порядке последовательными натуральными числами - C++
#include <iostream> using namespace std; int main () { int x, n, a; cin >> x >> n; for (int i = 0; i < n; i--) ...

Заполнение массива из N элементов последовательными натуральными числами - C++
Напишите программу, которая заполняет массив из N элементов последовательными натуральными числами, начиная с X , и выводит его. ...

Заполнить матрицу последовательными натуральными числами - C++
1.Сформировать матрицу по следующему правилу 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

Выполнить реверс отдельно в первой половине и второй половине массива - C++
Массив имеет четное число элементов,заполните массив случайными числами и выполнить реверс отдельно в первой половине и второй половине.

Найти количество отрицательных элементов массива, находящихся во второй половине массива - C++
Обязательные условия: 1) массивы должны быть динамические – организовать выделение памяти; 2) значения элементов массива вводятся с ...

Заполнить двумерный массив последовательными убывающими числами - C++
Помогите пожалуйста...очень прошу** Дан массив А размером n x m. Заполнить его следующим образом: 36 35 34 33 32 31 30 29 28 27 26 25...

9
Ruu
13 / 13 / 1
Регистрация: 20.07.2010
Сообщений: 43
08.09.2011, 14:53 #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;
}
0
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
08.09.2011, 16:15 #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;
 }
0
Go0gle
18 / 18 / 1
Регистрация: 08.09.2011
Сообщений: 22
08.09.2011, 20:12 #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;                      // экран
    }
0
Enigmya
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
08.09.2011, 23:26  [ТС] #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");
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7498 / 4614 / 694
Регистрация: 29.11.2010
Сообщений: 12,636
08.09.2011, 23:38 #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;
}
0
Ruu
13 / 13 / 1
Регистрация: 20.07.2010
Сообщений: 43
09.09.2011, 10:30 #7
mimicria,
Цитата Сообщение от mimicria Посмотреть сообщение
И чему изначально равно K и i ?
Я лишь ответил на вопрос. Разумеется мой пример кода и рядом не стоял с Вашим
Ответьте, пожалуйста, -- с чего Вы взяли, что число N равно 10? может оно равно 20 или 113?
Возможно Вы телепат? Если Вы действительно телепат, то могу сказать лишь одно -- Вы очень ценная находка для форума
0
MrGluck
Модератор
Эксперт CЭксперт С++
7498 / 4614 / 694
Регистрация: 29.11.2010
Сообщений: 12,636
09.09.2011, 12:19 #8
Цитата Сообщение от Ruu Посмотреть сообщение
mimicria,
Я лишь ответил на вопрос. Разумеется мой пример кода и рядом не стоял с Вашим
Ответьте, пожалуйста, -- с чего Вы взяли, что число N равно 10? может оно равно 20 или 113?
Возможно Вы телепат? Если Вы действительно телепат, то могу сказать лишь одно -- Вы очень ценная находка для форума
Вы объявляете переменные, но не инициализируете их, в них хранится мусор. Для избежания нежелательных ошибок, навроде попытки создания массива M[-5] и для демонстрации работы программы, некоторым переменным, не указанным в условии, присваиваются значения из головы.
0
Enigmya
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
09.09.2011, 23:00  [ТС] #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 минуты
Помогите, пожалуйста
0
Ruu
13 / 13 / 1
Регистрация: 20.07.2010
Сообщений: 43
24.09.2011, 14:50 #10
Цитата Сообщение от MrGluck Посмотреть сообщение
Вы объявляете переменные, но не инициализируете их, в них хранится мусор
Вы знаете в чем отличие примера от готового варианта решения?
З.Ы. Я думаю, что любой начинающий программист знает такой термин, как инициализация переменных.
0
24.09.2011, 14:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2011, 14:50
Привет! Вот еще темы с ответами:

Выполнить реверс элементов массива отдельно в первой половине и во второй - C++
Массив имеет четное число элементов. Заполнить массив случайными числами и выполнить реверс отдельно в первой половине и второй половине. ...

Вычислить произведение положительных элементов в первой и во второй половине массива - C++
Заполнить одномерный массив целыми числами. Вычислить произведение положительных элементов в первой и во второй половине массива.

В первой половине массива нужно найти количество элементов, больших P, а в второй – меньших P - C++
У целочисленному массиве А (a0, a2, ..., an) случайных чисел парна число элементов. У первой половине нужно найти количество элементов,...

Заполнение массива последовательными натуральными числами, начиная с X - C++
Напишите программу, которая заполняет массив из N элементов последовательными натуральными числами, начиная с X , и выводит его. ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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