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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BekStar
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 14
#1

Дан массив.Все положительные элементы уменьшить на количество отрицательных элементов. Осуществить сдвиг вправо - C++

09.04.2012, 23:04. Просмотров 518. Ответов 1
Метки нет (Все метки)

Помогите доделать задачу на С++
1.Дан массив A[N]. Все положительные элементы уменьшить на количество отрицательных элементов. Осуществить сдвиг вправо на k позиций, где k – число положительных элементов.
2.Массивы, полученные в результате выполнения задания варианта А, отсортировать методом простого обмена, методом простой выборки и методом простой вставки. Методом бинарного поиска найти элемент, равный k. Если такого элемента нет, то вывести соответствующее сообщение.

Все положительные элементы уменьшить на количество отрицательных элементов уже сделал. Теперь мне нужно сдвиг на k позиций.
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 <stdio.h>
#include <math.h>
#include <conio.h>
#define N 100
main () {
clrscr();
int n,i,p,ko,k;
double a[N],b[N],c[N];
ko=0; k=0;
printf ("\n razmer massiva="); // задаем размер
scanf ("%d",&n);
printf ("\n VVedite elementi massiva: \n"); //  ведем элементы
for (i=0; i<n;i++) {
scanf ("%lf", &a[i]); }
for (i=0; i<n; i++)
{
if (a[i]<=0) 
ko=ko+1;// количество отрицательных
else
k=k+1; // количества положительных
}
for (i=0; i<k; i++)
{ if (a[i]>=0)
b[i]=a[i]-ko; } // вычисление уменьшение положительных на количество отрицательных
for(i=0;i<=k-1;i++) 
printf ("\n %2.0lf",b[i]); // Здесь выводиться уменьшенное на количество отрицательных
getch();
return 0;
}
А дальше сдвиг не получается и 2 задание
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2012, 23:04     Дан массив.Все положительные элементы уменьшить на количество отрицательных элементов. Осуществить сдвиг вправо
Посмотрите здесь:
C++ Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента.
Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – индекс максимального элемента C++
C++ Дан массив A[N]. Все положительные элементы уменьшить на значение минимального элемента
C++ Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2;
Дан Двумерный массив размером заполненный случайными числами, количество элементов 20, все положительные. 1.Оп C++
Осуществить сдвиг влево/ вправо элементов C++
Одномерный массив. Осуществить сдвиг вправо на k позиций C++
Осуществить сдвиг элементов массива вправо на k позиций C++
C++ Осуществить циклический сдвиг элементов массива вправо на k позиций
C++ Осуществить циклический сдвиг элементов в матрице на k элементов вправо или вниз
Дан массив A[1.50], элементы которого отличны от нуля. Расположить их в таком порядке, чтобы первыми были все положительные элементы, а затем - все о C++
Осуществить циклический сдвиг элементов массива вправо на одну позицию C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BekStar
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 14
23.04.2012, 16:25  [ТС]     Дан массив.Все положительные элементы уменьшить на количество отрицательных элементов. Осуществить сдвиг вправо #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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define N 100
int main () {
clrscr();
int n,i,ko,k;
double a[N],b[N],c[N],f;
ko=0; k=0;
printf ("\n razmer massiva=");
scanf ("%d",&n);
printf ("\n VVedite elementi massiva: \n");
for (i=0; i<n;i++)
scanf ("%lf", &a[i]);
for (i=0; i<n; i++)
{
if (a[i]<=0)
ko=ko+1;
else
k=k+1;
}
for (i=0; i<k; i++)
{ if (a[i]>=0)
b[i]=a[i]-ko;}
 
 if(k>0)
 {
   while (k!=0)
   {
   i= n-1;
   f=a[i];
   for(i=n-1; i> 0; i--)
   a[i]= a[i-1];
   a[0]= f;
   k--;
   }
   }
 
 
for(i=0;i<=k-1;i++)
printf ("\n %2.0lf",b[i]);
for(i=0;i<n;i++)
printf ("%2.0lf",a[i]);
getch();
return 0 ;
}
Ответ Создать тему
Опции темы

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