Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
1

Положительные и отрицательные элементы массива записать в разные переменные

18.09.2011, 16:23. Показов 1312. Ответов 12
Метки нет (Все метки)

В универе используем компилятор DEV C++.
Была дана задача ввести массив разными способами(вручную и рандомно). И сделать следующее: чтобы все положительные элементы множились и записывались в некую переменную "р", а все отрицательные формировались в другой массив.
И по своему не знанию...я не могу разобраться...Пошлите на путь истинный...
А то лазил по форуму, и ничего не смог склеить(
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2011, 16:23
Ответы с готовыми решениями:

Записать отрицательные и положительные элементы массива в разные массивы
Дан массив М. Нужно все отрицательные элементы массива М записать в массив МО, а положительные — в...

Переписать отдельно в разные массивы положительные и отрицательные элементы заданного массива
Переписать отдельно в разные массивы положительные и отрицательные элементы заданного массива

Получить из него два массива: в один записать все положительные элементы, в другой – отрицательные элементы исходного массива
Дан массив. Получить из него два массива: в один записать все положительные элементы, в другой –...

Отрицательные элементы исходного массива записать в начале массива, а положительные в конце
Есть массив -2 4 0 9 -3 8 Надо отрицательные элементы исходного массива записать в начале...

12
Каратель
Эксперт С++
6601 / 4020 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
18.09.2011, 16:31 2
Цитата Сообщение от Rev Посмотреть сообщение
чтобы все положительные элементы множились и записывались в некую переменную "р"
C
1
2
3
4
5
 
int p = 1, i = 0;
for(; i < n ; ++i)   
   if(arr[i] > 0) 
      p *= arr[i];
Цитата Сообщение от Rev Посмотреть сообщение
а все отрицательные формировались в другой массив.
C
1
2
3
4
int i = 0; j = 0;
for (; i < n; ++i)
    if (arr[i] < 0)
       other[j++] = arr[i];
1
программист С++
841 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
18.09.2011, 16:35 3
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cstdio>
 
#define size 10
#define MAX_VALUE 100
 
int main()
{
   srand(static_cast<unsigned int>(time(NULL)));
   int* vector = new int[size];
    
   std::cout << "Выберите способ формирование массива" << std::endl
      << "t1. С клавиатуры" << std::endl
      << "t2. Рандомно" << std::endl;
      
   char key = std::getchar();
   switch(key)
   {
      case '1':
          // рандомный способ;
         for (unsigned int i = 0; i < size; ++i)
            vector[i] = rand() % MAX_VALUE;
         break;
      case '2':   
         // с клавиатуры;
         for (unsigned int i = 0; i < size; ++i)
            std::cin >> vector[i];
      default:
         std::cout << "Неверный ключ" << std::endl;
         return EXIT_FAILURE;
   }
     
   std::cout << "Вывод массив на экран" << std::endl;
   for (unsigned int i = 0; i < size; ++i)
      std::cout << vector[i] << " ";
   std::cout << std::endl;
      
   // теперь само задание;
   int p = 1;
   for (unsigned int i = 0;i < size; ++i)
      if (vector[i] > 0)
         p *= vector[i];
   std::cout << "Произведение положительных: " << p << std::endl;
   
   unsigned int counter = 0;
   for (unsigned int i = 0;i < size; ++i)
      if (vector[i] < 0)
         ++counter;
         
   if (counter)
   {
      int* minus = new int[counter];
      unsigned int j = 0;
      
      for (unsigned int i = 0;i < size; ++i)
         if (vector[i] < 0)
            minus[j++] = vector[i];
            
      std::cout << "Отрицательные элементы" << std::endl;
      for (unsigned int j = 0; j < counter; ++j)
         std::cout << minus[j] << " ";
         
      std::cout << std::endl;
      delete[]minus;
   }   
           
   delete[]vector;
   return EXIT_SUCCESS;
}
1
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
18.09.2011, 19:52  [ТС] 4
sandye51
Ох ничего себе...Эт даже не по моему уровню знания языка___Большое Спасибо)
Буду разбирать...чтоб не в тупую копипастить...

Добавлено через 4 минуты
Jupiter
Спасибо)
У меня до сих пор ступор с циклами...Я пытался делать вроде: если "И" меньше нуля - то отрицательные...и наоборот, но безуспешно(

Добавлено через 3 часа 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
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<string.h>
 
const int n=5;
main()
{
int A[n],j, p = 1, i = 0;
system("color 8A");
 
printf("Vvedite massiv A\n"); 
for ( i = 0; i < n; i ++ )
 { 
printf("Vvedite A[%d]> ", i ); 
scanf ("%d", &A[i]); 
}
 
for(; i < n ; ++i)   
   if(A[i] > 0) 
      p *= A[i];
      printf("Zminna p=%d", p *= A[i] );
  getch();
}
Попробовал...
Что не так делаю, для данного примера? Оно не хочет выводить произведение чисел положительных на экран. Иногда остается дефолтное значение "1", а иногда получается 240(
0
программист С++
841 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
18.09.2011, 19:55 5
Цитата Сообщение от Rev Посмотреть сообщение
for(; i < n ; ++i)
этот цикл бредовый

почему начального значения нет?
надо
C++
1
for(i = 0; i < n ; ++i)
0
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
18.09.2011, 20:08  [ТС] 6
Цитата Сообщение от sandye51 Посмотреть сообщение
этот цикл бредовый

почему начального значения нет?
надо
C++
1
for(i = 0; i < n ; ++i)
Я уже так делал...просто скинул в оригинале.
Когда меняю получаю:
C++
1
2
3
4
5
6
7
Vvedite massiv A
Vvedite A[0]> 1
Vvedite A[1]> 4
Vvedite A[2]> 2
Vvedite A[3]> 8
Vvedite A[4]> -7
Zminna p=15360
0
программист С++
841 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
18.09.2011, 20:11 7
Rev, я не понимаю, тебе 2 варианта решения предложили, как ты умудряешься не понимать?
зачем заново что-то пишешь? спроси лучше что непонятно по предыдущим решениям.
0
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
18.09.2011, 20:35  [ТС] 8
Цитата Сообщение от sandye51 Посмотреть сообщение
Rev, я не понимаю, тебе 2 варианта решения предложили, как ты умудряешься не понимать?
зачем заново что-то пишешь? спроси лучше что непонятно по предыдущим решениям.
Ладно, не кричи дядь...Просто препод у нас сам не очень-то и хо... все объяснять.
Вот к примеру в Твоем варианте...как поставить задержку, чтоб оно на экране задержалось, а не сразу сворачивалось...
И можешь пояснить
C++
1
2
3
4
5
6
std::cout << "Vivod massiva"<< std::endl;
   for (unsigned int i = 0; i < size; ++i)
      std::cout << vector[i] << " ";
   
   delete[]vector;
   return EXIT_SUCCESS;
Цикл понятен...а в остальном я потеряный...
Нам не дают сам материал обширно, а это я делаю на завтра...и осталась одна задача...И не могу я сейчас половину матчасти перечитать. Знаю, сам себе доктор...тут можно уже как хотите обзывать_

Добавлено через 3 минуты
А лепить, новое приходится, чтобы хоть как-то понять.
Да и если я вывалю преподу Ваш код, для простой на деле задачи...он на меня как на ошпаренного будет смотреть. Нам такого не объясняли да еще и написано все на более (как для меня простого еще не въехавшего в дело человека), не примитивном уровне.
0
программист С++
841 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
18.09.2011, 20:41 9
Цитата Сообщение от Rev Посмотреть сообщение
не кричи дядь.
я еще молодой
преподы у всех уг, надо самому разбираться по книгам не за один день до сдачи, а пораньше

Цитата Сообщение от Rev Посмотреть сообщение
как поставить задержку, чтоб оно на экране задержалось
_getch(); например

std::cout << "Vivod massiva"<< std::endl; // страндартный для С++ вывод в поток
for (unsigned int i = 0; i < size; ++i)
std::cout << vector[i] << " "; // тотже самый вывод в поток, но в цикле

delete[]vector; // освобождение памяти, выделеннрй под vector;
return EXIT_SUCCESS; // выод из функции с кодом завершения EXIT_SUCCESS (равно 0)
0
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
18.09.2011, 20:55  [ТС] 10
Цитата Сообщение от sandye51 Посмотреть сообщение
getch();
Пробовал, но чет материться на него...и библиотеки уже разные подключал...
Про потоки вообще я полный "0". Я только и понял сначала...про освобождение памяти и все(
Спасибо, за то, что ответил и подсказал...)
Буду сейчас все приводить в рабочий вид...Еще раз спасибо за уделенное время!
0
221 / 134 / 19
Регистрация: 06.11.2010
Сообщений: 234
18.09.2011, 23:05 11
Rev, измените в своем коде ( 22 строка )
C
1
printf("Zminna p=%d", p *= A[i] );
на
C
1
printf("Zminna p=%d", p );
0
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
19.09.2011, 00:01  [ТС] 12
Цитата Сообщение от x1Mike7x Посмотреть сообщение
Rev, измените в своем коде ( 22 строка )
C
1
printf("Zminna p=%d", p *= A[i] );
на
C
1
printf("Zminna p=%d", p );
Там все-равно толку ноль...Это будет значение "р" - а оно у нас и так =1 в int.
Делал...уже по всякому. Завтра буду еще разбираться с этим)
0
895 / 789 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
19.09.2011, 00:46 13
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Rev,
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
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<string.h>
 
const int n=5;
int main()
{
 int A[n],p = 1, i = 0;
 system("color 8A");
 printf("Vvedite massiv A\n");
  for ( i = 0; i < n; i ++ )
 {
printf("Vvedite A[%d]> ", i );
scanf ("%d", &A[i]);
}
 
for(i=0; i < n ; ++i)
   if(A[i] > 0)
      p *= A[i];
      printf("Zminna p=%d",p);
  getch();
  return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2011, 00:46

Записать в начало массива Y положительные, а в конец - отрицательные элементы массива Х
Записать в начало массива Y положительные, а в конец - отрицательные элементы массива Х,сохраняя...

В массив P записать сначала отрицательные элементы массива X, затем положительные
В массив P записать сначала отрицательные элементы массива X(k), затем положительные.данные для...

Записать сначала все отрицательные, потом положительные элементы массива
2) Дан массив чисел содержащий 20 элементов. Записать сначала все отрицательные потом...

Записать подряд в массивы Y положительные, а в массив Z отрицательные элементы массива х1,х2,…,х20.
Записать подряд в массивы Y положительные, а в массив Z отрицательные элементы массива х1,х2,…,х20.

[Masm] Записать отрицательные элементы массива в его начале, а положительные в конце
Добрый день! Мне нужно записать отрицательные элементы массива в его начале, а положительные в...

Записать все положительные и отрицательные элементы двумерного массива в одномерные массивы
Составить программу, использовав функции. Массив должен передаваться в функцию как параметр....


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

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

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