powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / неправильно работает код
7 сообщений из 32, страница 2 из 2
неправильно работает код
    #34273615
lrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переписал функцию обработки массива
По моему лучше получилось?
Код: plaintext
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.
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
//Прототипы функций
void inputmas(float[ 15 ],char);
float raschet(float [ 15 ]);
void printrez(float [ 15 ],char);

   void main()
   {
    cout <<"Задача № 1  \n";
    cout <<"Даны вещественные массивы А[15]F[15] \n";
    cout <<"Для каждого массива определить наибольшее \n";
    cout <<"из отрицательных значений" << endl;
    cout<<"\nДля вывода результатов вам нужно самостоятельно заполнить массив!\n";

   // Объявление массива и переменных
   float a[ 15 ],f[ 15 ];
   // Обращение
   inputmas(a,'a'); // в функцию в качестве аргумента
   inputmas(f,'f'); // передается массив и его имя
   // вызов функции, возращающей 1 значение

   printrez(a,'a');
   printrez(f,'f');
   cout<<"Нажмите любую клавишу...";
   getch();
   return;
   }
// Определение функции ввода массива inputmas()

   void inputmas(float x[ 15 ],char name)
   {

    cout <<"Вводим массив  " << name << endl;
  int i;
  for ( i= 0 ;i< 15 ;i++)
  {
  cout <<"Введите элемент массива  " << name <<"["<<i<<"]=";
  cin >>x[i];
  }
  }
// Определение расчетной функции raschet()
 float raschet(float m[ 15 ])
 {
      int i,max;
      max=m[ 0 ];

  if(max>= 0 )
  for (i= 0 ;i< 15 ;i++){
    if(m[i]< 0 ){
      max=m[i];
      break;
    }
  }
  if(max>= 0 ){
    cout<<endl<<" В данном массиве нет отрицательных значений "<<endl;
    return  0 ;
  }

    for (i= 0 ;i< 15 ;i++)
    if (m[i] >max && m[i] < 0 )
    max=m[i];

 return max;

}


//Вывод массива и результата

 void printrez(float x[ 15 ],char name)
 {

 cout<<"Исходный массив  "<<name<<":"<<endl;
 for (int i= 0 ;i< 15 ;i++)
 cout<<setw( 5 )<<x[i];
 { if (raschet(x)< 0 )
 cout<<endl<<"Наибольшее отрицательное значение в массиве  "<<name<<" равно " <<      raschet(x)<< endl;

 }
 }
...
Рейтинг: 0 / 0
неправильно работает код
    #34273743
Slip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lradПереписал функцию обработки массива
По моему лучше получилось?

А зачем так? тебе ж посоветовал
MasterZivХранить вмесро значения искомого элемента указатель на него,
при этом в начале задать его == NULL, что будет значить,
что еще НЕ НАЙДЕН такой элемент.

И красивее, и массив будет проходиться 1 раз, а не 2, как в последнем варианте...
...
Рейтинг: 0 / 0
неправильно работает код
    #34273833
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЭта функция никогда ничего не введет, она работает со
своей локальной копией массива. Я тебе говорил про передачу
массивов по ссылкам или по указателям.
Но благодаря тому, что твой алгоритм в принципе пока не работает,
ты еще об этом даже не догадываешься.

Ну вообще-то предать в функцию массив не по ссылке, а по значению - этта нада оччень постараться. Примерчиг дадите?
...
Рейтинг: 0 / 0
неправильно работает код
    #34276616
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lrad пишет:
> Автор: "lrad"
> Переписал функцию обработки массива
> По моему лучше получилось?

Что-то я не вижу прогресса. Наоборот, деградация...

Пошто максимальное значение в int хранится ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
неправильно работает код
    #34276618
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikhail_n пишет:
>
> Ну вообще-то предать в функцию массив не по ссылке, а по значению - этта
> нада оччень постараться. Примерчиг дадите?

Был не прав на счет этого, вспылил ... ну и все такое.
Каюсь, посыпаю голову пеплом...
Забыл я старый добрый С и что С++ должен его тоже компилировать.

Вообще интересно получается, в С++ параметры в функции передаются
всегда по значению, но если параметр - массив, параметр передается
по ссылке.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
неправильно работает код
    #34276698
A. Fig Lee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
// Определение расчетной функции raschet()
float raschet(float m[15])
{
int i, indx = -1;

for (i=0;i<sizeof(m);i++){
if (m < 0.0) {
if ((indx >= 0 && m > m[indx]) || (indx < 0)) {
indx = i;
}
}

if(indx<0){
cout<<endl<<" В данном массиве нет отрицательных значений "<<endl;
return 0.0;
}

return m[indx];

}
...
Рейтинг: 0 / 0
неправильно работает код
    #34276701
A. Fig Lee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
// Определение расчетной функции raschet()
 float raschet(float m[ 15 ])
 {
      int i, indx = - 1 ;

  for (i= 0 ;i<sizeof(m);i++){
    if (m[i] <  0 . 0 ) {
      if ((indx >=  0  && m[i] > m[indx]) || (indx <  0 )) {
         indx = i;
      }
  }

  if(indx< 0 ){
    cout<<endl<<" В данном массиве нет отрицательных значений "<<endl;
    return  0 . 0 ;
  }

 return m[indx];

}
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / неправильно работает код
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]