Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 2
Регистрация: 23.05.2011
Сообщений: 91
1

Почему все обнуляется???

31.05.2011, 00:48. Показов 1406. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <iostream.h>
#include <iomanip.h>
 
  // прототипы функций
void input ( float [5][6], char);
void raschet ( float [5][6], float , float*,float*, int);
void output ( float [5][6], char, float, float, int);
 
void main()
{
  // объявление массивов и переменных
 float a[5][6],b[5][6],otra,otrb,maxa,maxb,maxa_otr,maxb_otr;
 int kola_nul,kolb_nul;
  /*otra - для присваиваивания отриц-го значения в  массиве a,      
    otrb - для присваиваивания отриц-го значения в  массиве b;
    maxa - наиб.значение массива a,
    maxb - наиб.значение массива b;
    maxa_otr - наиб.значение из всех отриц.значений массива а,
    maxb_otr - наиб.значение из всех отриц.значений массива b;
    kola_nul - кол-во нулевых значений массива a,
    kolb_nul - кол-во нулевых значений массива a */
 
  // обращение к функциям (вызов для выполнения)
input ( a, 'a');
input ( b, 'b');
raschet( a, otra, &maxa, &maxa_otr, kola_nul);
raschet( b, otrb, &maxb, &maxb_otr, kolb_nul);
output( a, 'a', maxa, maxa_otr, kola_nul);
output( b, 'b', maxb, maxb_otr, kolb_nul);
}
 
  // определение функции ввода массива input()
void input ( float x[5][6], char name)
{
 int i, j;
 cout << "Vvodim massiv " << name << endl;
 for (i=0; i<5; i++)
  for (j=0; j<6; j++)
  {
   cout << " Vvedite " << name << "[" << i << "][" << j << "]=";
   cin >> x[i][j];
  }
}
 
  // определение расчетной функции
  // в качестве аргументов у данной функции два указателя
void raschet ( float x[5][6], float otr,float *max, float *max_otr,int kol_nul)
{
 int i,j;
 otr=0;
 *max = 0;
 *max_otr = 0;
 kol_nul=0;
 
  // нахождение наиб.значения из всех элементов
{
 for (i=0; i<5; i++)
  for (j=0; j<6; j++)
   if ( x[i][j] > *max )
   {
    *max=x[i][j];
   }
 
  // кол-во нулевых значений
 for (i=0; i<5; i++)
  for (j=0; j<6; j++)
   if ( x[i][j] = 0 )
   {
    kol_nul++;
   }
}
  // нахождение наиб.значения из всех отриц-ных значений
 
 for (i=0; i<5; i++)
  for (j=0; j<6; j++)
   if ( x[i][j] < 0 )
   {
    otr=x[i][j];
   }
   if(*max_otr = 0 && otr > *max_otr)
   {
    *max_otr = otr;
   }
}
 
  // определение функции вывода output()
void output ( float x[5][6], char name, float max, float max_otr,int kol_nul)
{
 int i,j;
 cout << " Ishodnyi massiv " << name << ":" << endl;
 for (i=0; i<5; i++)
 {
  for (j=0; j<6; j++)
   cout << setw(7) << x[i][j];
   cout << endl;
 }
 cout << "\nNaibolshee znachenie iz vseh znachenii massiva"<< name << " = " << max << endl;
 cout << "Naibolshee znachenie iz vseh otricatelnyh znachenii massiva"<< name << " = " << max_otr << endl;
 cout << "Kolichestvo nulevyh znachenii massiva"<< name << " = " << kol_nul << endl;
 cin.get();
 cin.get();
}
Ввожу массивы, результат-массив обнулен, как исправить?
Нужно для каждого массива опpеделить: наибольшее из всех отpицательных
значений, наибольшее из всех значений, количество нулевых
значений.
На указатели не обращайте внимание, так требуется(и без них все обнуляется).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2011, 00:48
Ответы с готовыми решениями:

Почему поинтер обнуляется ?
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() {...

Почему мой указатель обнуляется?
Почему мой указатель обнуляется на какой-то итерации? задача: Функцию, которая возвращает среднее...

Почему не обнуляется указатель через функцию?
В функцию передаю указатель на целое число, хочу удалить память а сам указатель установить в NULL. ...

В определенный момент массив почему-то обнуляется
Вот листинг: #include &lt;fstream&gt; #include &lt;iostream&gt; using namespace std; double _AverageGain;...

10
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
31.05.2011, 05:32 2
C++
1
void raschet ( float x[5][6], float otr,float *max, float *max_otr,int kol_nul)
во-первых, непонятно, зачем otr передавать, если её можно внутри функции создать
во-вторых, kol_nul передаётся, потом наращивается, но не используется

C++
1
void raschet(float x[][6], float *max, float *max_otr,int *kol_nul)
либо так, в стиле C++
C++
1
void raschet(float x[][6], float &max, float &max_otr,int &kol_nul)
0
1 / 1 / 2
Регистрация: 23.05.2011
Сообщений: 91
31.05.2011, 07:00  [ТС] 3
Все равно массив обнуляется
0
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
31.05.2011, 07:16 4
irina3456, сами же обнуляете в 67 строке:
C++
1
if ( x[i][j] = 0 )
Исправьте на ==
1
1 / 1 / 2
Регистрация: 23.05.2011
Сообщений: 91
31.05.2011, 07:28  [ТС] 5
теперь не обнуляется, максимум вычисляет, а вот максимальное среди отрицательных и кол. нулей равно 0????
0
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
31.05.2011, 08:04 6
Цитата Сообщение от irina3456 Посмотреть сообщение
кол. нулей равно 0????
Замечания accept учли? Всё правильно должно быть.

Насчёт максимального среди отрицательных, не уверен, что у вас правильно, переделал как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (i = 0; i < 5; i++)
{
    for (j = 0; j < 6; j++)
    {
        if (x[i][j] < 0)
        {
            // находим первый отрицательный
            if ( max_otr == 0 )
                max_otr = x[i][j];
 
            // сравниваем следующие отрицательные
            else if (x[i][j] > max_otr)
                max_otr = x[i][j];
        }
    }
}
1
1 / 1 / 2
Регистрация: 23.05.2011
Сообщений: 91
31.05.2011, 09:19  [ТС] 7
я не знаю что такое Замечания accept (((

Добавлено через 17 минут
Теперь не считает количество нулей, значит у меня условия изначально были заданы не правильно
1
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
31.05.2011, 09:24 8
Цитата Сообщение от irina3456 Посмотреть сообщение
я не знаю что такое Замечания accept (((

Посмотри второй пост)
0
1 / 1 / 2
Регистрация: 23.05.2011
Сообщений: 91
31.05.2011, 09:30  [ТС] 9
ничего смешного, я "туга на думы")))),как нулевые значения найти, что не верно
C++
1
2
3
4
5
6
7
8
9
10
for (i=0; i<5; i++)
  {
   for (j=0; j<6; j++)
    {
     if ( x[i][j] == 0 )
     {
      *kol_nul++;
     }
    }
  }
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
31.05.2011, 09:37 10
C++
1
(*kol_nul)++;
1
1 / 1 / 2
Регистрация: 23.05.2011
Сообщений: 91
31.05.2011, 09:45  [ТС] 11
Люди добрые, спасибо большое, я побежала сдавать!!!!!!!!!!
0
31.05.2011, 09:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2011, 09:45
Помогаю со студенческими работами здесь

Почему во время чтения из файла переменная row_i в цикле постоянно обнуляется?
Имеется следующий код: #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int...

Переполнение знаковых целых чисел: почему значение переменной обнуляется, а не записывается младшее значение?
что то не пойму, как происходит переполнение знаковых целых чисел вот #include &lt;iostream&gt; ...

Не обнуляется таймер почему-то
procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:=True; ...

Почему обнуляется поле?
Семейство плееров Walkman. tpsl2 - древний. E440 - современный. Хочу два раза увеличить...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru