Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Enigmya
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
1

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

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

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

Подскажите, пожалуйста, с помощью какой функции искать эту половину и как потом перемещать элементы?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2011, 14:44
Ответы с готовыми решениями:

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

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

Заполнить массив случайными числами и увеличить в 3 раза значения всех элементов во второй половине массива
напишите программу которая заполняет массив из 5 случайными числами на отрезке и увеличивает в 3...

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

В первой половине массива найти максимальный элемент, во второй половине минимальный
Дан одномерный массив размером N. Заполнить массив случайными элементами. В первой половине массива...

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);
1963 / 1100 / 219
Регистрация: 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
20 / 20 / 2
Регистрация: 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
08.09.2011, 20:12
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Эксперт С++
8134 / 4985 / 1436
Регистрация: 29.11.2010
Сообщений: 13,456
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Эксперт С++
8134 / 4985 / 1436
Регистрация: 29.11.2010
Сообщений: 13,456
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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2011, 14:50

Даны две матрицы. В каждой матрице вычислить минимум из элементов, стоящих во второй половине, относительно строк( количество строк четное),, и найти
Нужно написать программы(консольное приложение) в делфи самым простым способом без...

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

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


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

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

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