Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2013, 21:06   #1
Ulq
Пользователь
 
Аватар для Ulq
 
Регистрация: 17.08.2011
Сообщений: 14
По умолчанию язык Си (рекурсия)

Добрый вечер.
Задание: Функция должна вычислять максимум из вещественных отрицательных чисел. Она вычисляет, но результат возвращает без дробной части.
вот код:
Код:
float max=-9999;
          int max_otr(float x[], int n)
		   {
                   if (n==0)
			 {
			     if ((x[n]<0) && (x[n]>max))  max=x[n];

			 return max;
			 }
			 else  if ((x[n]<0) && (x[n]>max)) max=x[n];
			 max_otr(x,n-1);
			 }
Подскажите как решить проблему.
Спасибо!
Ulq вне форума Ответить с цитированием
Старый 13.01.2013, 22:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
результат возвращает без дробной части.
Потому что int max_otr
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.01.2013, 22:50   #3
Ulq
Пользователь
 
Аватар для Ulq
 
Регистрация: 17.08.2011
Сообщений: 14
По умолчанию

если поставлю float,то вернет 1 и после запятой какие-то символы.

Последний раз редактировалось Ulq; 13.01.2013 в 23:01.
Ulq вне форума Ответить с цитированием
Старый 13.01.2013, 23:20   #4
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Цитата:
Сообщение от Ulq Посмотреть сообщение
если поставлю float,то вернет 1 и после запятой какие-то символы.
экспоненциальная форма числа) допустим 1000000 = 1 e+6
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 13.01.2013, 23:41   #5
Ulq
Пользователь
 
Аватар для Ulq
 
Регистрация: 17.08.2011
Сообщений: 14
По умолчанию

нет, там другие символы - "Q#"
Ulq вне форума Ответить с цитированием
Старый 13.01.2013, 23:54   #6
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

полный код программы тогда скидывайте)
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 14.01.2013, 00:20   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну а отладчик что показывает? Проходил им?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.01.2013, 00:29   #8
Ulq
Пользователь
 
Аватар для Ulq
 
Регистрация: 17.08.2011
Сообщений: 14
По умолчанию

Код:

#include<stdio.h>
#include<locale.h>
#include<conio.h>

#define N 100

int main()
{
  setlocale(LC_ALL,"RUSSIAN");
  int max_otr(float x[],int n);

        /*====Входные данные====*/
  float x[N];  /*Вещественный вектор*/
  int n; /*длина вектора*/
  int fl=1; /*флаг*/
  int i;
  float r_max;



	  printf("Введите длину вектора : ");
	  do {
        scanf("%d",&n);
        if ((n>1) && (n<100)) fl=0;
        else printf("Ошибка. Повторите ввод :");

		 }while(fl);

		printf("Введите элементы массива :\n");
		 for(i=0; i<n; i++)
		{
		printf("x[%d]= ",i+1);
		scanf("%f",&x[i]);
		}

		 for(i=0; i<n; i++)
		{
		printf("x[%d]= %.2f \n",i+1,x[i]);

		}


        r_max=max_otr(x,n);
        if(r_max==-9999) printf("В данном массиве нет отрицательных елементов \n");
        else printf("%.2f",r_max);

		getch();
		return 0;

		}
              float max=-9999;
		   int max_otr(float x[], int n)
		   {

              if (n==0)
			 {
			     if ((x[n]<0) && (x[n]>max))  max=x[n];

			 return max;
			 }
			 else  if ((x[n]<0) && (x[n]>max)) max=x[n];
			 max_otr(x,n-1);
			 }
Ulq вне форума Ответить с цитированием
Старый 14.01.2013, 00:29   #9
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

что-то мне подсказывает, что ТС printf - ом выводит и спецификатор формата не тот.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 14.01.2013, 00:32   #10
Ulq
Пользователь
 
Аватар для Ulq
 
Регистрация: 17.08.2011
Сообщений: 14
По умолчанию

спасибо всем, кто попытался) уже решил.

Последний раз редактировалось Ulq; 14.01.2013 в 01:30.
Ulq вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия язык с++ sofalina Помощь студентам 2 27.12.2012 23:41
рекурсия Chiki Помощь студентам 1 05.12.2012 22:11
Одномерные массивы. Рекурсия.(язык С) ZinGoZol Помощь студентам 7 01.04.2011 21:45
(С++) Рекурсия Troi666 Помощь студентам 9 23.05.2009 02:01
Рекурсия Claster Помощь студентам 7 24.09.2008 20:52