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

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

Восстановить пароль Регистрация
 
Rev
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
18.09.2011, 16:23     Положительные и отрицательные элементы массива записать в разные переменные #1
В универе используем компилятор DEV C++.
Была дана задача ввести массив разными способами(вручную и рандомно). И сделать следующее: чтобы все положительные элементы множились и записывались в некую переменную "р", а все отрицательные формировались в другой массив.
И по своему не знанию...я не могу разобраться...Пошлите на путь истинный...
А то лазил по форуму, и ничего не смог склеить(
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2011, 16:23     Положительные и отрицательные элементы массива записать в разные переменные
Посмотрите здесь:

Все положительные элементы массива поставить в начало, а отрицательные - в конец C++
Проверить, чередуются ли отрицательные и положительные элементы массива C++
Все положительные элементы из массива записать в массив A, а отрицательные в массив B C++
C++ Перестановить положительные элементы в начало массива, отрицательные — в конец
Записать в другой файл сначала отрицательные элементы, а затем положительные C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
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];
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
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;
}
Rev
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(
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
18.09.2011, 19:55     Положительные и отрицательные элементы массива записать в разные переменные #5
Цитата Сообщение от Rev Посмотреть сообщение
for(; i < n ; ++i)
этот цикл бредовый

почему начального значения нет?
надо
C++
1
for(i = 0; i < n ; ++i)
Rev
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
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
18.09.2011, 20:11     Положительные и отрицательные элементы массива записать в разные переменные #7
Rev, я не понимаю, тебе 2 варианта решения предложили, как ты умудряешься не понимать?
зачем заново что-то пишешь? спроси лучше что непонятно по предыдущим решениям.
Rev
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 минуты
А лепить, новое приходится, чтобы хоть как-то понять.
Да и если я вывалю преподу Ваш код, для простой на деле задачи...он на меня как на ошпаренного будет смотреть. Нам такого не объясняли да еще и написано все на более (как для меня простого еще не въехавшего в дело человека), не примитивном уровне.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
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)
Rev
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 27
18.09.2011, 20:55  [ТС]     Положительные и отрицательные элементы массива записать в разные переменные #10
Цитата Сообщение от sandye51 Посмотреть сообщение
getch();
Пробовал, но чет материться на него...и библиотеки уже разные подключал...
Про потоки вообще я полный "0". Я только и понял сначала...про освобождение памяти и все(
Спасибо, за то, что ответил и подсказал...)
Буду сейчас все приводить в рабочий вид...Еще раз спасибо за уделенное время!
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 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 );
Rev
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.
Делал...уже по всякому. Завтра буду еще разбираться с этим)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2011, 00:46     Положительные и отрицательные элементы массива записать в разные переменные
Еще ссылки по теме:

Закрасить нечётные отрицательные и чётные положительные элементы массива C++
C++ Сортировка массива: сначала положительные элементы, потом - отрицательные
Записать все положительные и отрицательные элементы двумерного массива в одномерные массивы C++

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

Или воспользуйтесь поиском по форуму:
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 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;
}
Yandex
Объявления
19.09.2011, 00:46     Положительные и отрицательные элементы массива записать в разные переменные
Ответ Создать тему
Опции темы

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