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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2014, 00:02   #1
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
Подмигивание преобразование дроби

Как преобразовать дробь обыкновенную в десятичную?
например Ввожу 1/2 а программа считывает как 0.5
может так? но не уверен(.
Код:
 int c,b;
float drob(int a;int b);
          { return a/b}
dimka123 вне форума Ответить с цитированием
Старый 14.04.2014, 08:33   #2
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Нууу... Ка бы... Эта... Нуу... Надо поделить делитель на знаменатель. Ну это каждый второклассник знает. Может так? но не уверен(.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 14.04.2014, 10:37   #3
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Krok27 Посмотреть сообщение
Нууу... Ка бы... Эта... Нуу... Надо поделить делитель на знаменатель. Ну это каждый второклассник знает. Может так? но не уверен(.
да ясен пень. .но мне это нужно в заполнении массива..а С++ недавно изучать начал.
dimka123 вне форума Ответить с цитированием
Старый 14.04.2014, 10:44   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от dimka123 Посмотреть сообщение
да ясен пень. .но мне это нужно в заполнении массива..а С++ недавно изучать начал.
А, какая разница? Если это массив вещественных чисел, то каждый его элемент можно вычислить как Вам подсказали выше.
Streletz вне форума Ответить с цитированием
Старый 14.04.2014, 13:41   #5
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
А, какая разница? Если это массив вещественных чисел, то каждый его элемент можно вычислить как Вам подсказали выше.
вот кривоватая функция на паскале

function drob(a,b:integer):real;
begin;
readln(a);readln(b);
drob:=a/b;
end;

var a,b:integer;c:real;
begin;
c:=drob(a,b);
writeln('Получилось',c);
end.


но!!! дан массив...и я его заполняю в формате 1/2..1/5.. и т.д
как сделать что бы именно так считывалось?


есть такой вариант,он рабочий но нудный очень....помогите его сократить..исправить....

Код:
function drob(var s: string): double;
var
  a, b, c: integer;
begin
  if s.Split('/').Length > 1 then begin
    if integer.TryParse(s.Split('/')[0], c) then
      a := c
    else begin
      writeln('Error!'); 
    end;
    
    if integer.TryParse(s.Split('/')[1], c) then
      b := c
    else begin
      writeln('Error!'); 
    end;
    result := a / b;
  end else
  if integer.TryParse(s, c) then
    result := c
  else begin
    writeln('Error!'); 
    exit;
  end;
end;

Последний раз редактировалось dimka123; 14.04.2014 в 13:45.
dimka123 вне форума Ответить с цитированием
Старый 14.04.2014, 13:43   #6
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
По умолчанию

((.........
dimka123 вне форума Ответить с цитированием
Старый 14.04.2014, 14:13   #7
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
помогите его сократить
Подсказка. Что будет если попытаться объединить 2 первых оператора if? А, ещё лучше, если помимо этого убрать 1 переменную типа Integer.
Streletz вне форума Ответить с цитированием
Старый 14.04.2014, 14:47   #8
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Подсказка. Что будет если попытаться объединить 2 первых оператора if? А, ещё лучше, если помимо этого убрать 1 переменную типа Integer.
будет обычное деление дроби по идее..но формат записи не поменяется ?
I don't know ((
dimka123 вне форума Ответить с цитированием
Старый 14.04.2014, 15:54   #9
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
будет обычное деление дроби
Без объединения оно тоже есть. Посмотрите Ваш код внимательнее.
Цитата:
..но формат записи не поменяется ?
Почему он должен поменяться?
А, чтобы не поменялась логика интерпретации формата, подсказка №2. Что нужно для того, чтобы только при одновременном выполнении 1х 2х условий единственный объединяющий их if был true?
Подсказка №3. Нужен всего 1 логический оператор.
přemyšlejte hlavou
Streletz вне форума Ответить с цитированием
Старый 14.04.2014, 22:35   #10
Desmoond
 
Аватар для Desmoond
 
Регистрация: 27.01.2013
Сообщений: 5
По умолчанию

Используй каскадирование операции извлечения >>.


Выглядеть будет примерно так:


Код:
void main() {
    int a,b;
    char ch;
    double c;

    cout << "input fraction: ";
    cin >> a >> ch >> b;
    c=static_cast<double>(a)/b;
    system("pause");
}
Спокойно вводишь, например, 24/20, без лишних проблем получишь необходимый результат.
Считается первое число до символа, потом считается символ, а потом второе число считается до пробела. Вроде должно работать, когда-то давно делал.

Последний раз редактировалось Desmoond; 14.04.2014 в 22:48.
Desmoond вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование дроби dimka123 Паскаль, Turbo Pascal, PascalABC.NET 0 12.04.2014 22:41
дроби Alexander1205 Общие вопросы C/C++ 7 10.06.2011 20:40
сокращение дроби Demonmov Microsoft Office Excel 4 15.04.2009 11:54
преобразование десятичной дроби в обыкновенную и обратно, Delphi ИгорьОК Помощь студентам 4 04.04.2007 21:12