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

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

Восстановить пароль Регистрация
 
r.e.a.c.t.o.r
0 / 0 / 0
Регистрация: 16.05.2009
Сообщений: 43
13.11.2012, 05:55     Преобразование массива #1
Помогите пожалуйста найти ошибку. первые 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++
C++ Преобразование двумерного массива
Преобразование элемента массива C++
Преобразование массива C++
Преобразование массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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     Преобразование массива
Ответ Создать тему
Опции темы

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