adsl club

Справочник

Форум

Программы

Фильмы

Ресурсы

Файлообмен

Хостинг

Ростелеком
Простая задача на языке "C"
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ
Автор Сообщение
mega
Форумчанин
СообщениеДобавлено: Чт 24-04-08 : 13-52    Заголовок сообщения: Простая задача на языке "C" Ответить с цитатой

Народ, обьясните решение этой задачи:
help me
"В массиве A(m) хранятся различные вещественные числа ( как больше, так и меньше единицы).
Округлите их, оставив в каждом по 3 значащих цифры."
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
BS
Эксперт
СообщениеДобавлено: Чт 24-04-08 : 19-47    Заголовок сообщения: Ответить с цитатой

А где решение, чтобы его объяснять?

Условие сранноватое, я бы сказал.
Причём здесь еденица.

Я понял, что просят округлить цифры до третьего знака после запятой.
Если так, то есть можество решений этой зачаачи.
Например, умножить на 1000 числа, убрать числа после запятой и поделить на 1000.
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
Эйр
Форумчанин
СообщениеДобавлено: Чт 24-04-08 : 20-38    Заголовок сообщения: Ответить с цитатой

Нет, тут же не просто до 3 знака, тут нужно 3 значащие цифры оставить! т.е. после запятой может быть сколько угодно знаков)
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
BS
Эксперт
СообщениеДобавлено: Чт 24-04-08 : 20-52    Заголовок сообщения: Ответить с цитатой

Вмысле, начиная с третьего округлить так, чтобы остались цифры больше 5? Или как?
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
Эйр
Форумчанин
СообщениеДобавлено: Чт 24-04-08 : 21-07    Заголовок сообщения: Ответить с цитатой

нет, не так.
Цитата:
Значащие цифры числа - все цифры в его десятичном изображении, отличные от нуля, и нули, если они содержатся между значащими цифрами или расположены в конце числа и указывают на сохранение разряда точности. Нули, стоящие левее правой отличной от нуля цифры, НЕ являются значащими цифрами. Например, числа 25.047 и 0.00250 имеют соответственно 5 и 3 значащих цифр.


Вот число 256, в нем 3 значащие цифры и ни одного знака после запятой! Ну хотя вещественные числа обычно без дробной части не используются))
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
BS
Эксперт
СообщениеДобавлено: Чт 24-04-08 : 21-15    Заголовок сообщения: Ответить с цитатой

Приведи пример того, как должно быть, если не в ломы?
Типа
2341234
2340000
Так?
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение Посетить сайт автора   Номер ICQ
Эйр
Форумчанин
СообщениеДобавлено: Чт 24-04-08 : 21-22    Заголовок сообщения: Ответить с цитатой

Всмысле как прога должна работать? Ну например округляем число 2.03356, получаем 2,03; число 0.000256213 -> 0.000256
Я все-таки думаю, целые числа тут не надо брать
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
BuXTeR
Продвинутый форумчанин
СообщениеДобавлено: Чт 24-04-08 : 22-17    Заголовок сообщения: Ответить с цитатой

Насколько понял, как-то так:
Код:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

double func(double d)
{
  char buf[100];
  char out[100];
  sprintf(buf,"%.15f",d);
  int i,count,flag;
  for(i=0,count=0,flag=0;buf[i]!='\0' && count<3;i++)
  {
    out[i]=buf[i];
    out[i+1]='\0';
    if(buf[i]=='-' || (buf[i]=='0' && !flag) || buf[i]=='.') continue;
    flag=1;
    count++;
  }
  return atof(out);
}

void main(){
  clrscr();
  double A[5]={0.000256213,2.03356,-1.0000456,-10.012222,-00000.000023};
  for (int i=0;i<5;i++)
    printf("In: %.10f\nOut: %.10f\n\n",A[i],func(A[i]));
  getch();
}


Код:
In: 0.0002562130
Out: 0.0002560000

In: 2.0335600000
Out: 2.0300000000

In: -1.0000456000
Out: -1.0000000000

In: -10.0122220000
Out: -10.0000000000

In: -0.0000230000
Out: -0.0000230000
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение   Номер ICQ
mega
Форумчанин
СообщениеДобавлено: Чт 24-04-08 : 22-27    Заголовок сообщения: Ответить с цитатой

ДА все, уже ненадо!! спасибо всем
 Наверх
Посмотреть профиль / Отправить личное сообщение Отправить личное сообщение  
Показать сообщения:   
Ответить на тему    Форум АДСЛ КлубаЦИФРОВОЙ ФЛЕЙМ :)ПРОГРАММИРОВАНИЕ Часовой пояс: GMT + 7
Страница 1 из 1

 

 
Аватары: Вкл|Выкл   ЮзерИнфо: Вкл|Выкл   Подписи: Вкл|Выкл
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы