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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.83
Electrosoul
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 9
#1

Процедура в С++ - C++

24.05.2012, 15:57. Просмотров 4334. Ответов 12
Метки нет (Все метки)

Здравствуйте , госопода.
Дано условие задачи : 3. Даны действительные числа a, b, c. Получить:
С = max(a,a+b)+min(a,b+c)/1+max(a+bc , b+ac ,c+ab)
В программе обязательно использовать одну процедуру.
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
bool error;
float calc_h (float a, float b, float c)
{
  float znam;
  znam = 1 + __max( a + b * c, __max( b + a * c, c + a * b));
  if (znam != 0)
  return ( __max (a, a + b) + __min (a, b + c)) / znam;  
  else 
    {
      error = true;
      return 1.0; 
     }
}
 
void main()
{
      float a, b, c, x;
      error = false;
      printf ("Vvedite chisla: ");
      scanf ("%f %f %f", &a, &b, &c ); 
      x = calc_h (a, b, c);
      if (!error)
      printf ("\n x = %f ", x);
      else
      printf ("Оshibka");
      getch ();
}
Использовал такой код , но нужно высчитать максимумы и минимумы самостоятельно , как это переделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2012, 15:57     Процедура в С++
Посмотрите здесь:

процедура - C++
создать программу аналог процедуры для вводу массива из трех целых чисел.

Процедура - C++
Найти все коэффициенты разложения (x+y)n , т.е. Cn^k , где k= 0, ..., n. Вычисление Cn^k оформите в виде подпрограммы. Подскажите как это...

Процедура. - C++
Разработать и отладить программу, состоящую из модуля, который содержит процедуру нахождения среднего арифметического отрицательных...

Простенькая процедура - C++
// Вторая лаба.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Процедура - не функция! - C++
Помогите перевести программу с Pascal на C++. Задача звучит так: Вычислить сумму и произведение N пар заданны вещественных чисел,...

Матрица и процедура - C++
Добрый день, товарищи, такой вопрос возник: акромя как дополнительным оператором функции никак нельзя сделать эту задачу? Хотелось бы...

Матрица и процедура - C++
Народ завтра зачёт помогите, буду очень блогодарен!!! 1.дано целочисленную матрицу размера 3 х4. Найти среднее арифметическое...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
avg93
61 / 61 / 10
Регистрация: 11.12.2009
Сообщений: 248
Завершенные тесты: 3
24.05.2012, 16:18     Процедура в С++ #2
Напиши 2 функции:

C++
1
2
3
4
5
6
7
8
9
float Max(float a, float b)
{
if (a>b) return a; else return b;
}
 
float Min(float a, float b)
{
if (a<b) return a; else return b;
}
Electrosoul
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 9
24.05.2012, 16:51  [ТС]     Процедура в С++ #3
1. У нас даны 3 переменные , т.е придется писать float Max(float a, float b , float c)?
2. Нам каждый раз нужно высчитывать максимум из разных значений , т.е max(a,a+b);min(a,b+c);max(a+bc , b+ac ,c+ab) нужно для каждой написать процедуру так?

Добавлено через 20 минут
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
float Max1(float a, float b,float c)
{
  if (a>a+b) 
  {
      return a;
  }
  else 
  {
       return (a+b);
  }
}
float Max2(float a, float b,float c) 
{
    if (a+b*c>b+a*c)
    {
        if (a+b*c>c+a*b)
        {
            return (a+b*c);
        }
        else
        {
            return (c+a*b);
        }
    }
    else
    {
        if (b+a*c>c+a*b)
        {
            return (b+a*c);
        }
        else
        {
            return (c+a*b);
        }
    }
}
float Min(float a, float b,float c)
{
     if (a>b+c) 
        {
            return a; 
        }
     else
        {
            return (b+c);
        }
}
float caclc_h (float a, float b, float c)
{
  float znam;
  znam = 1 + Max2;
  if (znam != 0)
  {
     return (Max1 + Min / znam);  
  }
  else 
    {
     printf("oshibka");
    }
}
 
void main()
{
      float a, b, c, x;
      printf ("Vvedite chisla: ");
      scanf ("%f %f %f", &a, &b, &c ); 
      x = calc_h (a, b, c);
      if (znam != 0)
      printf ("\n x = %f ", x);
      else
      printf ("Оshibka");
      getch ();
}
Перестроил , но выдает 4 ошибки в Void Main и в Caclc_h
avg93
61 / 61 / 10
Регистрация: 11.12.2009
Сообщений: 248
Завершенные тесты: 3
24.05.2012, 16:58     Процедура в С++ #4
Цитата Сообщение от Electrosoul Посмотреть сообщение
У нас даны 3 переменные , т.е придется писать float Max(float a, float b , float c)?
Зачем?
max(a,max(b,c));

Цитата Сообщение от Electrosoul Посмотреть сообщение
Нам каждый раз нужно высчитывать максимум из разных значений , т.е max(a,a+b);min(a,b+c);max(a+bc , b+ac ,c+ab) нужно для каждой написать процедуру так?
Зачем? Все лишь 2 функции макс и мин.
fidesxfx
9 / 9 / 0
Регистрация: 21.05.2012
Сообщений: 44
24.05.2012, 17:37     Процедура в С++ #5
Ну а насчет ошибок
выдает 4 ошибки в Void Main и в Caclc_h
мб всетаки дело в :
C++
1
2
3
znam = 1 + Max2;
 
return (Max1 + Min / znam)
Передавай параметры функциям чтоли.
Electrosoul
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 9
24.05.2012, 17:37  [ТС]     Процедура в С++ #6
avg93, Разве нельзя описать каждый максимум ? Ведь формула уже задана

Теперь выдает другие ошибки :

Ошибка 1 error C2297: +: недопустимо, правый оператор имеет тип "float (__cdecl *)(float,float,float)"
Ошибка 2 error C2296: /: недопустимо, левый операнд имеет тип "float (__cdecl *)(float,float,float)"


fidesxfx, Вы правы ,что ошибки именно в этих строках , но как передать параметры функциям и как оно работает?
fidesxfx
9 / 9 / 0
Регистрация: 21.05.2012
Сообщений: 44
24.05.2012, 17:52     Процедура в С++ #7
подправте код вообще,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
float caclc_h (float a, float b, float c)
{
  float znam;
  znam = 1 + Max2;
  if (znam != 0)
  {
     return (Max1 + Min / znam);  
  }
  else 
    {
     printf("oshibka");
    }
}
Функция принимает 3 параметра, затем вы не один из них не используете.

Ну а как передавать параметры? Как то так:
C++
1
znam = 1 + Max2(a,b,c);
Но там вам выше обясняли достатоно 2 функций на минимум и на максимум.
Electrosoul
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 9
24.05.2012, 18:17  [ТС]     Процедура в С++ #8
fidesxfx, Спасибо с ошибкой разобрался.
Теперь проблема в подсчетах и по всей видимости ошибка в расписании максимумов и минимумов.
Почему мои записи не подходят ?
И до сих пор не понял , как все можно уместить в 2 функции
fidesxfx
9 / 9 / 0
Регистрация: 21.05.2012
Сообщений: 44
24.05.2012, 18:30     Процедура в С++ #9
Напиши исправлений код, посмотрим что там у тебя
Electrosoul
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 9
24.05.2012, 18:31  [ТС]     Процедура в С++ #10
Нынешний код :
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
float Max1(float a, float b,float c)
{
  if (a>a+b) 
  {
      return a;
  }
  else 
  {
       return (a+b);
  }
}
float Max2(float a, float b,float c) 
{
    if (a+b*c>b+a*c)
    {
        if (a+b*c>c+a*b)
        {
            return (a+b*c);
        }
        else
        {
            return (c+a*b);
        }
    }
    else
    {
        if (b+a*c>c+a*b)
        {
            return (b+a*c);
        }
        else
        {
            return (c+a*b);
        }
    }
}
float Min(float a, float b,float c)
{
     if (a>b+c) 
        {
            return a; 
        }
     else
        {
            return (b+c);
        }
}
float calc_h (float a, float b, float c)
{
  float znam;
  znam = 1 + Max2(a,b,c);
  if (znam != 0)
  {
     return (Max1(a,b,c) + Min(a,b,c) / znam);  
  }
  else 
    {
     printf("oshibka");
    }
}
 
void main()
{
      float a, b, c, x;
      printf ("Vvedite chisla: ");
      scanf ("%f %f %f", &a, &b, &c ); 
      x = calc_h (a, b, c);
      printf ("\n x = %f ", x);
      getch ();
}
Ошибок нет , но подсчитывает не верно... Несколько раз перепроверил максимумы и минимумы , но ошибок сам не нашел
fidesxfx
9 / 9 / 0
Регистрация: 21.05.2012
Сообщений: 44
24.05.2012, 18:56     Процедура в С++ #11
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
//----------------------------------------
float Min (float a, float b ) {
    if (a < b)
        return a;
    else 
        return b;
 
}
float Max (float a, float b ) {
    if (a > b)
        return a;
    else 
        return b;
 
}
//---------------------------------------
float calc_h (float a, float b, float c)
{
  float znam;
  znam = 1 + Max((a+b*c),Max((b+a*c),(c+a*b)));
  if (znam != 0)
  {
     return ((Max(a,(a+b)) + Min(a, (b+c)) ) / znam);  
  }
  else 
    {
     printf("oshibka");
    }
}
 
void main()
{
      float a, b, c, x;
      printf ("Vvedite chisla: ");
      scanf ("%f %f %f", &a, &b, &c ); 
      x = calc_h (a, b, c);
      printf ("\n x = %f ", x);
      getch ();
}
Вот вам рабочий код разбирайтесь, увы но ничего сложного тут нету. и я так понимаю в вашем примере С = max(a,a+b)+min(a,b+c)/ ( 1+max(a+bc , b+ac ,c+ab) ) была опущена скобка.
Electrosoul
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 9
24.05.2012, 19:04  [ТС]     Процедура в С++ #12
Только хотел написать об этой ошибке... Как всегда ошибки из-за невнимательности
Может кому пригодится и такой вариант :
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
float Max1(float a, float b,float c)
{
  if (a>a+b) 
  {
      return a;
  }
  else 
  {
       return (a+b);
  }
}
float Max2(float a, float b,float c) 
{
    if (a+b*c>b+a*c)
    {
        if (a+b*c>c+a*b)
        {
            return (a+b*c);
        }
        else
        {
            return (c+a*b);
        }
    }
    else
    {
        if (b+a*c>c+a*b)
        {
            return (b+a*c);
        }
        else
        {
            return (c+a*b);
        }
    }
}
float Min(float a, float b,float c)
{
     if (a<b+c) 
        {
            return a; 
        }
     else
        {
            return (b+c);
        }
}
float calc_h (float a, float b, float c)
{
  float znam;
  znam = 1 + Max2(a,b,c);
  if (znam != 0)
  {
     return ((Max1(a,b,c) + Min(a,b,c)) / znam);  
  }
  else 
    {
     printf("oshibka");
    }
}
 
void main()
{
      float a, b, c, x;
      printf ("Vvedite chisla: ");
      scanf ("%f %f %f", &a, &b, &c ); 
      x = calc_h (a, b, c);
      printf ("\n x = %f ", x);
      getch ();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2012, 19:17     Процедура в С++
Еще ссылки по теме:

Внешняя процедура на ассемблере - C++
Доброй ночи! Не хочет собираться C++ (в Dev-C++) и внешняя процедура ассемблера (компилируется в отдельном файле, т.е. имею _pSr.obj)....

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

Процедура уничтожения графа - C++
Задача состоит и множества условий, но я не знаю как написать уничтожения графа. Помогите пожалуйста, очень нужна помощь.

Процедура обмена столбца - C++
Написать процедуру обмена столбца и строки двухмерного массива. С ее помощью поменять местами те строки и столбцы первые элементы которых...

Матрица,функция или процедура. - C++
Доброго всем времени. Пытаюсь написать функцию или процедуру. ” В заданной целочисленной матрице A(N, M) выведите на печать индексы...


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

Или воспользуйтесь поиском по форуму:
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
24.05.2012, 19:17     Процедура в С++ #13
Цитата Сообщение от Electrosoul Посмотреть сообщение
С = max(a,a+b)+min(a,b+c)/1+max(a+bc , b+ac ,c+ab)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
inline float max(float x, float y){
   return (x > y) ? x : y;
}
 
inline float min(float x, float y){
   return (x < y) ? x : y;
}
 
int main(){
   float a, b, c, C;
   C = max(a, a+b) + min(a, b+c) / (1 + max(a+bc, b+ac, c+ab));
 
   return 0;
}

Не по теме:

Научись наконец-то пользоваться запятыми. Чего я только не видел, где только запятая не стояла. ПИШИТЕ ПРАВИЛЬНО! Запятая ставится без пробела после последней буквы слова, за которым она следует. Потом ставится пробел, потом начинается другое слово. Если хотите, чтобы Вам кто-нибудь помог, помогите ему прочитать Ваш текст!

Yandex
Объявления
24.05.2012, 19:17     Процедура в С++
Ответ Создать тему
Опции темы

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