Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/198: Рейтинг темы: голосов - 198, средняя оценка - 4.78
227 / 3 / 3
Регистрация: 01.04.2010
Сообщений: 145

Массив(чётные и нечётные числа)

19.09.2012, 10:39. Показов 37482. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите, пожалуйста, написать программу:
нужно в массиве, в его начало, поставить сначала все четные числа, а затем нечётные...затем посчитать количество чётных чисел в массиве(массив можно ввести с клавиатуры, а можно через "srand").
Делать это нужно путём перестановки элементов в массиве.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.09.2012, 10:39
Ответы с готовыми решениями:

Массив(чётные и нечётные числа)
помогите, пожалуйста, написать программу: нужно в массиве, в его начало, поставить сначала все четные числа, а затем нечётные...затем...

Дан массив из N элементов. В нём чётные числа заменить на 0, а нечётные на -1
Помогите пожалуйста с задачей Дан массив из N элементов. В нём чётные числа заменить на 0, а нечётные на -1, Вывести на экран монитора...

Реализовать функцию, принимающую на вход массив и проверяющую, чередуются ли в нем чётные и нёчетные числа
Написать функцию, которая принимает целочисленный массив размера N. Проверить, чередуются ли в нем четные и нечетные числа. Если ...

39
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
19.09.2012, 18:21
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
28
29
30
31
32
#include <iostream>
#include <ctime>
#include <iomanip>
int main()
{
 srand(time(NULL));
 const int n =10;
 int kol=0;
 int *a = new int[n];
 for (int i=0; i<n; i++)
  std::cout<<(a[i]=rand()%10)<<std::setw(4);
 std::cout<<std::endl;
 for (int i=0; i<n; i++)
  for (int j=i; j<n; j++) 
   if (a[j] % 2 == 0)
    {
     int k = a[i];
     a[i]=a[j];
     a[j]=k;
    }    
 for (int i=0; i<n; i++)
  {
   if (a[i] % 2 == 0)
    kol++;
   std::cout<<a[i]<<std::setw(4); 
  }
 std::cout<<std::endl;
 std::cout<<"Четных: "<<kol<<'\n'; 
 system("pause");
 delete[] a;
 return 0;
}
0
227 / 3 / 3
Регистрация: 01.04.2010
Сообщений: 145
19.09.2012, 18:47  [ТС]
можете пояснить пару строк?

Цитата Сообщение от BumerangSP Посмотреть сообщение
srand(time(NULL))
Цитата Сообщение от BumerangSP Посмотреть сообщение
int *a = new int[n];
Цитата Сообщение от BumerangSP Посмотреть сообщение
std::cout<<(a[i]=rand()%10)<<std::setw(4);
Цитата Сообщение от BumerangSP Посмотреть сообщение
system("pause");
delete[] a;
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
19.09.2012, 18:56
1) Генератор случайных чисел. Даже в Вашем условии прописан.
2) выделение памяти под массив из 10 элементов (n=10)
3) можно разделить на 2 строчки:
C++
1
2
a[i]=rand()%10;
std::cout<<a[i]<<std::setw(4);
первая строчка - непосредственно заполнение массива
вторая - вывод на экран. Все вместе, т.е. одной строчкой - просто компактней.
4) system("pause"); - задержка, чтобы после выполнения окно сразу не закрылось, а ожидало нажатия клавиши.
delete[] a; - освобождении памяти от массива.
1
227 / 3 / 3
Регистрация: 01.04.2010
Сообщений: 145
20.09.2012, 18:22  [ТС]
Цитата Сообщение от BumerangSP Посмотреть сообщение
1) Генератор случайных чисел. Даже в Вашем условии прописан.
2) выделение памяти под массив из 10 элементов (n=10)
3) можно разделить на 2 строчки:
C++
1
2
a[i]=rand()%10;
std::cout<<a[i]<<std::setw(4);
первая строчка - непосредственно заполнение массива
вторая - вывод на экран. Все вместе, т.е. одной строчкой - просто компактней.
4) system("pause"); - задержка, чтобы после выполнения окно сразу не закрылось, а ожидало нажатия клавиши.
delete[] a; - освобождении памяти от массива.
спасибо

Добавлено через 23 часа 19 минут
BumerangSP, а не могли бы вы пошагово объяснить каждую строчку программы(каждый её ход), дабы досканально понять
Спасибо
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
20.09.2012, 18:38
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
28
29
30
31
32
33
#include <iostream> //подключение библиотек
#include <ctime>     // ctime для функции srand() 
#include <iomanip> ///нужен только для setw() - расстояние между элементами на экране
int main() //главная функция
{
 srand(time(NULL)); //генератор случайных чисел
 const int n =10; // константа n целого типа
 int kol=0; //счетчик четных чисел
 int *a = new int[n]; //выделяем память под массив в количестве n элементов
 for (int i=0; i<n; i++) //цикл по элементам массива
  std::cout<<(a[i]=rand()%10)<<std::setw(4); //примваиваем значение текущему 
                                              //элементу массива и выводим на экран
 std::cout<<std::endl;  //переходим на следующую строку
 for (int i=0; i<n; i++)
  for (int j=i; j<n; j++)  //двумя циклами перебираем все элементы массива
   if (a[j] % 2 == 0) //если элемент четный
    {
     int k = a[i]; //меняем местами элемент с j-м индексом на 
     a[i]=a[j];    //элемент с i-м 
     a[j]=k; //таким образом сначала выходят все четные, а потом нечетные
    }    
 for (int i=0; i<n; i++) //циклом по элементам
  {
   if (a[i] % 2 == 0) //определяем количество четных
    kol++;
   std::cout<<a[i]<<std::setw(4); //и попутно выводим на экран измененный массив
  }
 std::cout<<std::endl; //переходим на следующую строку
 std::cout<<"Четных: "<<kol<<'\n'; //выводим количество на экран
 system("pause"); //ожидание нажатия клавиши
 delete[] a; //очищаем память, выделенную для массива.
 return 0; //...
}
1
227 / 3 / 3
Регистрация: 01.04.2010
Сообщений: 145
20.09.2012, 19:31  [ТС]
BumerangSP, спасибо огромное

Добавлено через 15 минут
BumerangSP,
П.с: а не подскажешь что в этой программе не так? По условию она должна выводить длину максимальной неубывающей последовательности...
http://www.imageup.ru/img274/1048564/dsc_0136.jpg
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
20.09.2012, 19:39
Micki, а можно кодом?

Цитата Сообщение от Micki Посмотреть сообщение
длину максимальной неубывающей последовательности...
Это что-то типа:
23212123456546
123456
0
227 / 3 / 3
Регистрация: 01.04.2010
Сообщений: 145
20.09.2012, 20:02  [ТС]
Цитата Сообщение от BumerangSP Посмотреть сообщение
Micki, а можно кодом?


Это что-то типа:
23212123456546
123456
Да, именно так...
как дороботать можно? а то там тупо число 1 выводит и всё)
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
20.09.2012, 22:13
Похоже:
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
28
29
#include <iostream>
 
int main()
{
 char* s = new char [100];
 std::cin>>s;
 int m=0,l,i=0,k=0;
 while (s[i])
  {
   if (s[i]<s[i+1])
    k++;
   else
    if (k>0)
    {
     if (k>m)
      {     
       l=i-k;
       m=k;
      }
     k=0;
    }
   i++; 
  }
 for (int i=l; i<(m+l+1); i++)
  std::cout<<s[i]; 
 delete[] s; 
 system("pause");
 return 0;
}
0
227 / 3 / 3
Регистрация: 01.04.2010
Сообщений: 145
21.09.2012, 08:30  [ТС]
Цитата Сообщение от BumerangSP Посмотреть сообщение
Похоже:
[/CPP]
спасибо, а можешь также каждую строчку пояснить?
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
21.09.2012, 16:13
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
28
29
#include <iostream>
 
int main()
{
 char* s = new char [100]; //выделяем память под строку размером 100 символов
 std::cin>>s; //вводим с клавиатуры
 int m=0,l,i=0,k=0; 
 while (s[i]) //пока не будет достигнут конец строки (проходим посимвольно)
  {
   if (s[i]<s[i+1]) //если текущий символ (цифра) больше следующей
    k++; //ув. счетчик. Таким образом узнаем возр. послед-ть, она может и не быть самой большой 
   else //иначе
    if (k>0) //если мы все же нашли какую-то возраст. послед-ть 
    {
     if (k>m) // m - переменная для самой большой послед-ти (изначально=0)
      {     
       l=i-k; //нужна для того, чтобы знать, откуда начинать считывание (когда ответ на экран выводим)
       m=k; //если счетчик текущей послед-ти больше той, которая была до этого, то запоминаем ее
      }
     k=0; //обнуляем счетчик
    }
   i++; //переходим к следующему символу
  }
 for (int i=l; i<(m+l+1); i++)
  std::cout<<s[i]; //выводим наибольшую
 delete[] s;  //очищаем память под строку
 system("pause");
 return 0;
}
0
227 / 3 / 3
Регистрация: 01.04.2010
Сообщений: 145
21.09.2012, 20:23  [ТС]
Цитата Сообщение от BumerangSP Посмотреть сообщение
Похоже:...
чего-то он ошибку выдаёт, с чем это связано? http://gyazo.com/b9ab5b54e9af5... 1348243531
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
21.09.2012, 20:42
Micki, в 7 строке l=0 сделайте. Что получится?
0
227 / 3 / 3
Регистрация: 01.04.2010
Сообщений: 145
21.09.2012, 21:02  [ТС]
Цитата Сообщение от BumerangSP Посмотреть сообщение
Micki, в 7 строке l=0 сделайте. Что получится?
всмысли?
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
21.09.2012, 21:14
Micki, в прямом:
C++
1
int m=0,l,i=0,k=0; //присвоить здесь l=0
0
227 / 3 / 3
Регистрация: 01.04.2010
Сообщений: 145
21.09.2012, 21:18  [ТС]
Цитата Сообщение от BumerangSP Посмотреть сообщение
Micki, в прямом:
вот что в итоге выходит: http://gyazo.com/c1718f20054b0... 1348246836
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
21.09.2012, 21:43
Micki, хм, проверял на dev-cpp, visual c++ 2008, все хорошо работает.
0
227 / 3 / 3
Регистрация: 01.04.2010
Сообщений: 145
22.09.2012, 16:19  [ТС]
Цитата Сообщение от BumerangSP Посмотреть сообщение
Micki, хм, проверял на dev-cpp, visual c++ 2008, все хорошо работает.
а вы точно такой же массив вводите(1 2 3 4 5 6 7 8 9 10), да? и программа выдаёт на выходе цифру 10?
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
22.09.2012, 16:37
Micki, нет, программа выдает 123456789 при таком же примере.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.09.2012, 16:37
Помогаю со студенческими работами здесь

Создать двумерный массив 10 на 20, который будет сортировать четные числа по возростанию и нечетные по убывани
Создать двумерный массив 10 на 20, который будет сортировать четные числа по возростанию и нечетные по убыванию. ребят если хто нить...

Перенести в один другой массив четные числа.Затем перенести в еще один другой массив нечетные числа.
Дан массив из 10 элементов.Перенести в один другой массив четные числа.Затем перенести в еще один другой массив нечетные числа.Помогите с...

Чётные и нечётные числа: определить чётность числа, введённого пользователем с клавиатуры
Пользователь вводит с клавиатуры число. Вывести на экран Y, если число четное и N, если число не четное. с++

Из одного файла считать целые числа, в другие файлы записать четные и нечетные числа
Нужно с одного файла считать целые числа и в другие файлы записать четные и нечетные числа. Вот код, но почему-то не работает...и как...

Четные и нечетные биты числа переписать в отдельные числа
Дано длинное целое неотрицательное число. Получить два коротких целых неотрицательных числа, одно из которых заполнено содержимым битов...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru