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

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

Войти
Регистрация
Восстановить пароль
 
r.e.a.c.t.o.r
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 43
#1

Преобразование массива - C++

13.11.2012, 05:55. Просмотров 428. Ответов 5
Метки нет (Все метки)

Помогите пожалуйста найти ошибку. первые 2 пункта сделаны, ошибка в 3.

Задание:
В одномерном массиве {-3.24, -7.16, -2.28, -0.16, -3.22, 7.14, 2.88, -3.20, 0.99, -4.15} вычислить:
1) номер максимального по модулю элемента массива;
2) сумму элементов массива, расположенных после первого положительного элемента;
3) преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых лежит в интервале [-3,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
#include <iostream.h>
#include <math.h>
void main ()
{
    int i,j,y,k;
    double max;
    double b=0;
    const int size=10;
    double massiv[size]={-3.24, -7.16, -2.28, -0.16, -3.22, 7.14, 2.88, -3.20, 0.99, -4.15},z,x,s,m=0;
for ( i = 0; i < size; i++)
cout << massiv[i] << "; ";
 
 cout << endl << endl;
    
    max=massiv[0];
    for ( i=0;i<size;i++)
    {
        if (fabs(massiv[i])>fabs(max))
            {
            max=massiv[i];
            b=i;
            }
        }
    cout<<"Nomer maksimalnogo po modulu elementa:  "<< (b+1) <<endl;
 
 
        
        for(i=0;i<size;i++)
        {
            if (massiv[i]>0)
            {
            x=massiv[i];
            y=i+1;
            break;
            }
        }
for (i=y;i<size;i++)
    s +=massiv[i];
cout <<"Summa elementov posle pervogo polozhitelnogo:  "<<s<<endl;
 
 
//скорее всего ошибка где-то внизу
 
 
for (j=0;j<size;j++)
  for(i=0; i<size;i++)
if (int(massiv[i])>=-3 && int(massiv[i])<=3)
    {
    z=massiv[i];
    k=i;
 
  for(i=k; i>0; i--) 
        m=massiv[i];
        massiv[i]=massiv[i-1];
        massiv[i-1]=m;
    }
 
for (int l = 0; l < size; l++)
cout << massiv[l] << "; ";
 cout << endl << endl;
}
Подскажите пожалуйста где ошибка здесь или подскажите другой способ для решения 3 пункта
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2012, 05:55     Преобразование массива
Посмотрите здесь:

Преобразование массива - C++
Прошу помочь в решении данной задачи: преобразовать данный 1-мерный массив в 2-хмерный так, чтобы в I столбце 2-хмерного массива...

преобразование массива - C++
Задан массив из k символов. Преобразовать массив следующим образом: расположить символы в обратном порядке.

Преобразование массива - C++
Есть массив char mas пользователь вводит с клавиатуры пример, и помещает его в массив, например: 34+16 -( 4-2 ) = Нужно создать новый...

Преобразование массива по условию - C++
Здравствуйте. На паре программирования была сформулирована задача: ...В одномерном массиве, состоящем из n...

Преобразование двумерного массива - C++
Добрый вечер. Сегодня передо мной поставили задачу следующего содержания: Даны 2 двумерных массива X и Y. Необходимо найти...

Преобразование (упорядочивание) массива - C++
Добрые люди! Написала код, каждое задание лабораторной надо оформить в виде функции, первые 2 функции работают так, как нужно :). Третья...

Преобразование двумерного массива - C++
Помогите нужно написать функцию которая преобразовывает матрицу в строку по схеме например 1 2 3 4 5 6 7 8 9 в такую строку ...

преобразование массива в динамический - C++
Здравствуйте! написал код с обычным двумерным массивом, подскажите как его преобразовать в Динамический массив, используя массив...

Преобразование одномерного массива - C++
Преобразуйте одномерный массив таким образом, чтобы сумма элементов в его первой половине была бы как можно ближе к сумме элементов его...

Преобразование двумерного массива - C++
Есть массив: 1 4 5 7 6 4 5 3 7 8 2 7 4 1 3 4 5 6 9 1 3 2 6 8 5 На выходе получится: 7 0 0 4 0 8 7 0 4 3 7 4 3 2 1


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
13.11.2012, 06:11     Преобразование массива #2
C++
1
2
3
4
5
6
7
8
9
10
bool ready=false;
int bound=0;
double temp;
for (i=0; i<size; i++)
  if ((massiv[i]<4.0)&&(massiv[i]>-4.0)){
    temp=massiv[bound];
    massiv[bound]=massiv[i];
    massiv[i]=temp;
  }
}
Добавлено через 5 минут
Цитата Сообщение от r.e.a.c.t.o.r Посмотреть сообщение
for(i=k; i>0; i--)
* * * * m=massiv[i];
* * * * massiv[i]=massiv[i-1];
* * * * massiv[i-1]=m;
не знаю, что это но это а) три строчки,которые ты думал будут выполняться в цикле, а выполняется только одна.
б)счётчик цикла i (стр 53)такой же как у внешнего цикла(стр 47), после прохождения внутреннего цикла он обнуляется и цикл из строки 47 будет вечно крутиться с i=0/
r.e.a.c.t.o.r
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 43
13.11.2012, 11:55  [ТС]     Преобразование массива #3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
bool ready=false;
int bound=0;
double temp;
for (i=0; i<size; i++)
  if ((massiv[i]<4.0)&&(massiv[i]>-4.0)){
    temp=massiv[bound];
    massiv[bound]=massiv[i];
    massiv[i]=temp;
  }
}
Добавлено через 5 минут

не знаю, что это но это а) три строчки,которые ты думал будут выполняться в цикле, а выполняется только одна.
б)счётчик цикла i (стр 53)такой же как у внешнего цикла(стр 47), после прохождения внутреннего цикла он обнуляется и цикл из строки 47 будет вечно крутиться с i=0/
Дело в том, что что-то влияет на пункт 2 и тут ппц)
Миниатюры
Преобразование массива  
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
13.11.2012, 12:17     Преобразование массива #4
Цитата Сообщение от r.e.a.c.t.o.r Посмотреть сообщение
bool ready=false;
int bound=0;
double temp;
for (i=0; i<size; i++)
* if ((massiv[i]<4.0)&&(massiv[i]>-4.0)){
* * temp=massiv[bound];
* * massiv[bound]=massiv[i];
* * massiv[i]=temp;
* }
}
А почему ты bound++ забыл добавить? Ну ладно я. Я это в окне форума писал. Но ты же это. Короче
C++
1
2
3
4
5
6
7
8
9
10
11
bool ready=false;
int bound=0;
double temp;
for (i=0; i<size; i++)
* if ((massiv[i]<4.0)&&(massiv[i]>-4.0)){
* * temp=massiv[bound];
* * massiv[bound]=massiv[i];
* * massiv[i]=temp;
    bound++
* }
}[
r.e.a.c.t.o.r
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 43
13.11.2012, 23:42  [ТС]     Преобразование массива #5
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
#include <iostream.h>
#include <math.h>
void main ()
{
    int i,y;
    double max;
    double b=0;
    const int size=10;
    double massiv[size]={-3.24, -7.16, -2.28, -0.16, -3.22, 7.14, 2.88, -3.20, 0.99, -4.15},x=0,s,m=0;
for ( i = 0; i < size; i++)
cout << massiv[i] << "; ";
 
 cout << endl << endl;
    
    max=massiv[0];
    for ( i=0;i<size;i++)
    {
        if (fabs(massiv[i])>fabs(max))
            {
            max=massiv[i];
            b=i;
            }
        }
    cout<<"Nomer maksimalnogo po modulu elementa:  "<< (b+1) <<endl;
 
 
        
        for(i=0;i<size;i++)
        {
            if (massiv[i]>0)
            {
            x=massiv[i];
            y=i+1;
            break;
            }
        }
for (i=y;i<size;i++)
 
    s+=massiv[i];
cout <<"Summa elementov posle pervogo polozhitelnogo:  "<< s <<endl;
 
 
bool ready=false;
int bound=0;
double temp;
for (i=0; i<size; i++)
{
    if ((massiv[i]<4.0)&&(massiv[i]>-4.0))
    {
 temp=massiv[bound];
 massiv[bound]=massiv[i];
 massiv[i]=temp;
 bound++;
    }
}
 
for (int l = 0; l < size; l++)
cout << massiv[l] << "; ";
 cout << endl << endl;
}
Миниатюры
Преобразование массива  
r.e.a.c.t.o.r
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 43
14.11.2012, 00:26  [ТС]     Преобразование массива #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
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
#include <iostream>
#include <cmath>
using namespace std;
void main ()
{
int i,y;
double max;
double b=0;
const int size=10;
double massiv[size]={-3.24, -7.16, -2.28, -0.16, -3.22, 7.14, 2.88, -3.20, 0.99, -4.15},x=0,s,m=0;
for ( i = 0; i < size; i++)
cout << massiv[i] << "; ";
 
cout << endl << endl;
 
max=massiv[0];
for ( i=0;i<size;i++)
{
if (fabs(massiv[i])>fabs(max))
{
max=massiv[i];
b=i;
}
}
cout<<"Nomer maksimalnogo po modulu elementa: "<< (b+1) <<endl;
 
 
 
for(i=0;i<size;i++)
{
if (massiv[i]>0)
{
x=massiv[i];
y=i+1;
break;
}
}
s=0;
for (i=y;i<size;i++)
 
s+=massiv[i];
cout <<"Summa elementov posle pervogo polozhitelnogo: "<< s <<endl;
 
 
bool ready=false;
int bound=0;
double temp;
for (i=0; i<size; i++)
{
    if ((massiv[i]<4.0)&&(massiv[i]>-4.0))
    {
 temp=massiv[bound];
 massiv[bound]=massiv[i];
 massiv[i]=temp;
 bound++;
    }
 
}
 
for (int l = 0; l < size; l++)
cout << massiv[l] << "; ";
 cout << endl << endl;
}
Yandex
Объявления
14.11.2012, 00:26     Преобразование массива
Ответ Создать тему
Опции темы

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