5.cpp 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4. int size, negative_counter, positive_counter, element_counter;
  5. negative_counter = positive_counter = element_counter = 0;
  6. // ввод размера массива пока размер не будет больше 0
  7. while (true){
  8. cout << "Input size of array: " << endl;
  9. cin >> size;
  10. if (size < 1){
  11. cout << "The size of array can't be less than 1." << endl;
  12. cout << "---------------------------------------" << endl;
  13. }
  14. else {
  15. cout << "---------------------------------------" << endl;
  16. break;
  17. }
  18. }
  19. int *array = new int [size]; // инициализация динамического массива чисел с размером [size]
  20. // ввод массива
  21. cout << "Input array's elements: " << endl;
  22. for (int i = 0; i < size; i++){
  23. cin >> array[i];
  24. }
  25. cout << "---------------------------------------" << endl;
  26. // вывод массива
  27. cout << "Your array:" << endl << "| ";
  28. for (int i = 0; i < size; i++){
  29. cout << array[i] << " | ";
  30. }
  31. cout << endl << "---------------------------------------" << endl;
  32. // подсчёт отрицательных и не отрицательных элементов
  33. for (int i = 0; i < size; i++){
  34. if (array[i] < 0){
  35. negative_counter++;
  36. }
  37. else {
  38. positive_counter++;
  39. }
  40. }
  41. // проверка пограничных случаев
  42. if (negative_counter <= 0){ // если нет отрицательных элементов для вывода, то
  43. cout << "There are no negative elements in the array to delete." << endl; // выводим сообщение об ошибке
  44. delete[] array; // Очистка ОЗУ от динамического массива
  45. exit(0); // останавливаем программу
  46. }
  47. if (positive_counter < 1){ // если нет положительных элементов для вывода, то
  48. cout << "There are no positive elements in the array to output." << endl; // выводим сообщение об ошибке
  49. delete[] array; // Очистка ОЗУ от динамического массива
  50. exit(0); // останавливаем программу
  51. }
  52. int *result_array = new int [size - negative_counter]; // инициализация динамического массива положительных чисел с размером [negative_counter]
  53. for (int i = 0; i < size; i++){
  54. if (array[i] >= 0){
  55. result_array[element_counter] = array[i];
  56. element_counter++;
  57. }
  58. }
  59. // вывод массива-результата
  60. cout << "Result array:" << endl << "| ";
  61. for (int i = 0; i < element_counter; i++){
  62. cout << result_array[i] << " | ";
  63. }
  64. cout << endl;
  65. delete[] array;
  66. delete[] result_array;
  67. return 0;
  68. }