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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 64, средняя оценка - 4.72
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
19.09.2012, 10:39     Массив(чётные и нечётные числа) #1
помогите, пожалуйста, написать программу:
нужно в массиве, в его начало, поставить сначала все четные числа, а затем нечётные...затем посчитать количество чётных чисел в массиве(массив можно ввести с клавиатуры, а можно через "srand").
Делать это нужно путём перестановки элементов в массиве.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
19.09.2012, 18:21     Массив(чётные и нечётные числа) #2
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;
}
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
19.09.2012, 18:47  [ТС]     Массив(чётные и нечётные числа) #3
можете пояснить пару строк?

Цитата Сообщение от 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;
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
19.09.2012, 18:56     Массив(чётные и нечётные числа) #4
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; - освобождении памяти от массива.
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
20.09.2012, 18:22  [ТС]     Массив(чётные и нечётные числа) #5
Цитата Сообщение от 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, а не могли бы вы пошагово объяснить каждую строчку программы(каждый её ход), дабы досканально понять
Спасибо
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
20.09.2012, 18:38     Массив(чётные и нечётные числа) #6
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; //...
}
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
20.09.2012, 19:31  [ТС]     Массив(чётные и нечётные числа) #7
BumerangSP, спасибо огромное

Добавлено через 15 минут
BumerangSP,
П.с: а не подскажешь что в этой программе не так? По условию она должна выводить длину максимальной неубывающей последовательности...
http://www.imageup.ru/img274/1048564/dsc_0136.jpg
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
20.09.2012, 19:39     Массив(чётные и нечётные числа) #8
Micki, а можно кодом?

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


Это что-то типа:
23212123456546
123456
Да, именно так...
как дороботать можно? а то там тупо число 1 выводит и всё)
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
20.09.2012, 22:13     Массив(чётные и нечётные числа) #10
Похоже:
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;
}
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
21.09.2012, 08:30  [ТС]     Массив(чётные и нечётные числа) #11
Цитата Сообщение от BumerangSP Посмотреть сообщение
Похоже:
[/CPP]
спасибо, а можешь также каждую строчку пояснить?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.09.2012, 16:13     Массив(чётные и нечётные числа) #12
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;
}
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
21.09.2012, 20:23  [ТС]     Массив(чётные и нечётные числа) #13
Цитата Сообщение от BumerangSP Посмотреть сообщение
Похоже:...
чего-то он ошибку выдаёт, с чем это связано? http://gyazo.com/b9ab5b54e9af5a3c263...png?1348243531
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.09.2012, 20:42     Массив(чётные и нечётные числа) #14
Micki, в 7 строке l=0 сделайте. Что получится?
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
21.09.2012, 21:02  [ТС]     Массив(чётные и нечётные числа) #15
Цитата Сообщение от BumerangSP Посмотреть сообщение
Micki, в 7 строке l=0 сделайте. Что получится?
всмысли?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.09.2012, 21:14     Массив(чётные и нечётные числа) #16
Micki, в прямом:
C++
1
int m=0,l,i=0,k=0; //присвоить здесь l=0
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
21.09.2012, 21:18  [ТС]     Массив(чётные и нечётные числа) #17
Цитата Сообщение от BumerangSP Посмотреть сообщение
Micki, в прямом:
вот что в итоге выходит: http://gyazo.com/c1718f20054b03a539f...png?1348246836
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.09.2012, 21:43     Массив(чётные и нечётные числа) #18
Micki, хм, проверял на dev-cpp, visual c++ 2008, все хорошо работает.
Micki
227 / 3 / 0
Регистрация: 01.04.2010
Сообщений: 145
22.09.2012, 16:19  [ТС]     Массив(чётные и нечётные числа) #19
Цитата Сообщение от BumerangSP Посмотреть сообщение
Micki, хм, проверял на dev-cpp, visual c++ 2008, все хорошо работает.
а вы точно такой же массив вводите(1 2 3 4 5 6 7 8 9 10), да? и программа выдаёт на выходе цифру 10?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2012, 16:37     Массив(чётные и нечётные числа)
Еще ссылки по теме:

Дан массив из N элементов. В нём чётные числа заменить на 0, а нечётные на -1 C++
Чётные и нечётные номера элементов массивов C++

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

Или воспользуйтесь поиском по форуму:
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
22.09.2012, 16:37     Массив(чётные и нечётные числа) #20
Micki, нет, программа выдает 123456789 при таком же примере.
Yandex
Объявления
22.09.2012, 16:37     Массив(чётные и нечётные числа)
Ответ Создать тему
Опции темы

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