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

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

Восстановить пароль Регистрация
 
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
31.05.2011, 00:48     Почему все обнуляется??? #1
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ицательных
значений, наибольшее из всех значений, количество нулевых
значений.
На указатели не обращайте внимание, так требуется(и без них все обнуляется).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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)
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
31.05.2011, 07:00  [ТС]     Почему все обнуляется??? #3
Все равно массив обнуляется
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
31.05.2011, 07:16     Почему все обнуляется??? #4
irina3456, сами же обнуляете в 67 строке:
C++
1
if ( x[i][j] = 0 )
Исправьте на ==
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
31.05.2011, 07:28  [ТС]     Почему все обнуляется??? #5
теперь не обнуляется, максимум вычисляет, а вот максимальное среди отрицательных и кол. нулей равно 0????
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 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];
        }
    }
}
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
31.05.2011, 09:19  [ТС]     Почему все обнуляется??? #7
я не знаю что такое Замечания accept (((

Добавлено через 17 минут
Теперь не считает количество нулей, значит у меня условия изначально были заданы не правильно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
31.05.2011, 09:24     Почему все обнуляется??? #8
Цитата Сообщение от irina3456 Посмотреть сообщение
я не знаю что такое Замечания accept (((

Посмотри второй пост)
irina3456
1 / 1 / 0
Регистрация: 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++;
     }
    }
  }
accept
4837 / 3236 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
31.05.2011, 09:37     Почему все обнуляется??? #10
C++
1
(*kol_nul)++;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2011, 09:45     Почему все обнуляется???
Еще ссылки по теме:

C++ Почему не обнуляется указатель через функцию?
C++ после цикла while символьный массив обнуляется?
Почему во время чтения из файла переменная row_i в цикле постоянно обнуляется? C++

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

Или воспользуйтесь поиском по форуму:
irina3456
1 / 1 / 0
Регистрация: 23.05.2011
Сообщений: 91
31.05.2011, 09:45  [ТС]     Почему все обнуляется??? #11
Люди добрые, спасибо большое, я побежала сдавать!!!!!!!!!!
Yandex
Объявления
31.05.2011, 09:45     Почему все обнуляется???
Ответ Создать тему
Опции темы

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