Объясните лабу с классами
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Объясните лабу с классами - 2010-04-26 18:20:54.500000
|
|
|
Promlol
Сообщений: 19
Оценки: 0
Присоединился: 2010-04-04 23:00:01.010000
|
Создайте класс с именем Rational для выполнения действий с дробями и программу тестирования вашего класса. Объясните что нужно сделать по порядку, и книжку где про классы почитать можно плиз Заранее спасибо
|
|
|
RE: Объясните лабу с классами - 2010-04-26 19:08:09.980000
|
|
|
katangawise
Сообщений: 23
Оценки: 0
Присоединился: 2010-02-14 16:27:58.953333
|
Привет. Примерно код такой:
[color=#0000ff][size=2]
using[/size][/color][size=2] System;
[/size][color=#0000ff][size=2]
using[/size][/color][size=2] System.Collections.Generic;
[/size][color=#0000ff][size=2]
using[/size][/color][size=2] System.Linq;
[/size][color=#0000ff][size=2]
using[/size][/color][size=2] System.Text;
[/size][color=#0000ff][size=2]
namespace[/size][/color][size=2] prog
{
[/size][color=#0000ff][size=2]class[/size][/color][size=2] [/size][color=#2b91af][size=2]Rational
[/size][/color][size=2]
{
[/size][color=#0000ff][size=2]public[/size][/color][size=2] [/size][color=#0000ff][size=2]double[/size][/color][size=2] PlusF([/size][color=#0000ff][size=2]double[/size][/color][size=2] n1, [/size][color=#0000ff][size=2]double[/size][/color][size=2] n2)
{
[/size][color=#0000ff][size=2]return[/size][/color][size=2] n1 + n2;
}
[/size][color=#0000ff][size=2]public[/size][/color][size=2] [/size][color=#0000ff][size=2]double[/size][/color][size=2] MinusF([/size][color=#0000ff][size=2]double[/size][/color][size=2] n1, [/size][color=#0000ff][size=2]double[/size][/color][size=2] n2)
{
[/size][color=#0000ff][size=2]return[/size][/color][size=2] n1 - n2;
}
[/size][color=#0000ff][size=2]public[/size][/color][size=2] [/size][color=#0000ff][size=2]double[/size][/color][size=2] MultF([/size][color=#0000ff][size=2]double[/size][/color][size=2] n1, [/size][color=#0000ff][size=2]double[/size][/color][size=2] n2)
{
[/size][color=#0000ff][size=2]return[/size][/color][size=2] n1 * n2;
}
[/size][color=#0000ff][size=2]public[/size][/color][size=2] [/size][color=#0000ff][size=2]double[/size][/color][size=2] DevideF([/size][color=#0000ff][size=2]double[/size][/color][size=2] n1, [/size][color=#0000ff][size=2]double[/size][/color][size=2] n2)
{
[/size][color=#0000ff][size=2]return[/size][/color][size=2] n1 / n2;
}
}
[/size][color=#0000ff][size=2]class[/size][/color][size=2] [/size][color=#2b91af][size=2]Program
[/size][/color][size=2]
{
[/size][color=#0000ff][size=2]static[/size][/color][size=2] [/size][color=#0000ff][size=2]void[/size][/color][size=2] Main([/size][color=#0000ff][size=2]string[/size][/color][size=2][] args)
{
[/size][color=#2b91af][size=2]Rational[/size][/color][size=2] rat = [/size][color=#0000ff][size=2]new[/size][/color][size=2] [/size][color=#2b91af][size=2]Rational[/size][/color][size=2]();
[/size][color=#0000ff][size=2]double[/size][/color][size=2] a, b,res=0;
[/size][color=#0000ff][size=2]char[/size][/color][size=2] c;
[/size][color=#2b91af][size=2]Console[/size][/color][size=2].WriteLine([/size][color=#a31515][size=2]"\nPlease enter first number: "[/size][/color][size=2]);
a = [/size][color=#0000ff][size=2]double[/size][/color][size=2].Parse([/size][color=#2b91af][size=2]Console[/size][/color][size=2].ReadLine());
[/size][color=#2b91af][size=2]Console[/size][/color][size=2].WriteLine([/size][color=#a31515][size=2]"Please enter the math methode (+/-*): "[/size][/color][size=2]);
c = [/size][color=#0000ff][size=2]char[/size][/color][size=2].Parse([/size][color=#2b91af][size=2]Console[/size][/color][size=2].ReadLine());
[/size][color=#2b91af][size=2]Console[/size][/color][size=2].WriteLine([/size][color=#a31515][size=2]"Please enter second number: "[/size][/color][size=2]);
b = [/size][color=#0000ff][size=2]double[/size][/color][size=2].Parse([/size][color=#2b91af][size=2]Console[/size][/color][size=2].ReadLine());
[/size][color=#0000ff][size=2]switch[/size][/color][size=2](c)
{
[/size][color=#0000ff][size=2]case[/size][/color][size=2] [/size][color=#a31515][size=2]'+'[/size][/color][size=2]:
res = rat.PlusF(a, b);
[/size][color=#0000ff][size=2]break[/size][/color][size=2];
[/size][color=#0000ff][size=2]case[/size][/color][size=2] [/size][color=#a31515][size=2]'-'[/size][/color][size=2]:
res = rat.MinusF(a, b);
[/size][color=#0000ff][size=2]break[/size][/color][size=2];
[/size][color=#0000ff][size=2]case[/size][/color][size=2] [/size][color=#a31515][size=2]'/'[/size][/color][size=2]:
res = rat.DevideF(a, b);
[/size][color=#0000ff][size=2]break[/size][/color][size=2];
[/size][color=#0000ff][size=2]case[/size][/color][size=2] [/size][color=#a31515][size=2]'*'[/size][/color][size=2]:
res = rat.MultF(a, b);
[/size][color=#0000ff][size=2]break[/size][/color][size=2];
}
[/size][color=#2b91af][size=2]Console[/size][/color][size=2].Write([/size][color=#a31515][size=2]"\nIt's equal to : "[/size][/color][size=2]+res.ToString());
[/size][color=#2b91af][size=2]Console[/size][/color][size=2].Read();
}
}
}
[/size] Понятно?
|
|
|
RE: Объясните лабу с классами - 2010-04-26 19:14:00.216666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
очень :)
|
|
|
RE: Объясните лабу с классами - 2010-04-26 20:09:31.810000
|
|
|
sbk
Сообщений: 144
Оценки: 0
Присоединился: 2008-12-20 19:01:57.273333
|
Почитать про классы можно в любой книжке по ООП.
|
|
|
RE: Объясните лабу с классами - 2010-04-26 23:28:20.593333
|
|
|
Promlol
Сообщений: 19
Оценки: 0
Присоединился: 2010-04-04 23:00:01.010000
|
капитан детектед, автора в студию плиз
|
|
|
RE: Объясните лабу с классами - 2010-04-26 23:53:12.583333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
Вот тебе книжка, где можно почитать про классы: http://www.gigamonkeys.com/book/
|
|
|
RE: Объясните лабу с классами - 2010-04-27 08:45:22.740000
|
|
|
katangawise
Сообщений: 23
Оценки: 0
Присоединился: 2010-02-14 16:27:58.953333
|
Ндааа… Сорри! :) А теперь, понятно? using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace prog { class Rational { public double PlusF(double n1, double n2) { return n1 + n2; } public double MinusF(double n1, double n2) { return n1 - n2; } public double MultF(double n1, double n2) { return n1 * n2; } public double DevideF(double n1, double n2) { return n1 / n2; } } class Program { static void Main(string[] args) { Rational rat = new Rational(); double a, b,res=0; char c; Console.WriteLine("\nPlease enter first number: "); a = double.Parse(Console.ReadLine()); Console.WriteLine("Please enter the math methode (+/-*): "); c = char.Parse(Console.ReadLine()); Console.WriteLine("Please enter second number: "); b = double.Parse(Console.ReadLine()); switch© { case '+': res = rat.PlusF(a, b); break; case '-': res = rat.MinusF(a, b); break; case '/': res = rat.DevideF(a, b); break; case '*': res = rat.MultF(a, b); break; } Console.Write("\nIt's equal to : "+res.ToString()); Console.Read(); } } }
|
|
|
RE: Объясните лабу с классами - 2010-04-27 11:01:55.576666
|
|
|
Promlol
Сообщений: 19
Оценки: 0
Присоединился: 2010-04-04 23:00:01.010000
|
терь, понятно, я думал там посложней будет :) сижу щас дейтла читаю p.s. спасиб большое
|
|
|
RE: Объясните лабу с классами - 2010-04-27 12:31:54.156666
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: katangawise А теперь, понятно? а какое отношение этот класс имеет к рациональным числам?
|
|
|
RE: Объясните лабу с классами - 2010-04-27 16:01:43.510000
|
|
|
sbk
Сообщений: 144
Оценки: 0
Присоединился: 2008-12-20 19:01:57.273333
|
Вот самый простой класс для работы с дробями. Язык C#.
class Rational
{
public double A{get;set;}
public double B{get;set;}
public Rational(double a,double b)
{
this.A = a;
this.B = b;
}
public Rational() : this(0,0) { }
public static Rational operator +(Rational r1,Rational r2)
{
return new Rational((r1.A * r2.B) + (r2.A * r1.B), r1.B * r2.B);
}
public Rational operator *(Rational r1,Rational r2)
{
return new Rational(r1.A * r2.A, r1.B * r2.B);
}
public Rational operator -(Rational r1,Rational r2)
{
return new Rational((r1.A * r2.B) - (r2.A * r1.B), r1.B * r2.B);
}
public Rational operator /(Rational r1,Rational r2)
{
return new Rational(r1.A * r2.B, r1.B * r2.A);
}
}
PS В коде могут быть ошибки.
|
|
|
RE: Объясните лабу с классами - 2010-04-27 16:13:55.920000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
double замени на какой-нить int ;) Рациональная дробь - это дробь, у которой числитель и знаменатель - целые числа.
|
|
|
RE: Объясните лабу с классами - 2010-04-27 16:34:19.040000
|
|
|
sbk
Сообщений: 144
Оценки: 0
Присоединился: 2008-12-20 19:01:57.273333
|
Да, но если double заменить на int, то при делении будут неточности.
|
|
|
RE: Объясните лабу с классами - 2010-04-27 16:52:05.483333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: sbk Да, но если double заменить на int, то при делении будут неточности. =) Это как раз когда ты double используешь, будут неточности. А если использовать int'ы, то все деления будут проводиться с остатком точно. Да и делить-то особо-то и не надо. Запишем число m/n как (m, n), тогда определения действий: (m, n) + (p, q) = (m*q + n*p, n*q) (m, n) * (p, q) = (m*p, n*q) -(m, n) = (-m, n) проверка на равенство: (m, n) == (p, q) <=> (m*q - n*p) == 0 Для удобства стоит оговорить, что знаменатель – натуральное число, то есть число из списка 1, 2, 3, 4…, а числитель – произвольное целое. Ещё удобно "сокращать" дроби, после каждой операции – это позволит в большем числе ситуаций обойтись без переполнения целого, и упростит проверку на равенство. Сокращение – это деление числителя и знаменателя на одно и то же число, которое является делителем и числителя, и знаменателя. Лучше всего, понятное дело, делить на наибольший общий делитель. Собственно деление понадобиться только для того, чтобы сокращать дроби. Во всех остальных ситуациях вполне можно обойтись умножением и сложением.
|
|
|
RE: Объясните лабу с классами - 2010-04-27 17:55:02.296666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: rgo Для удобства стоит оговорить, что знаменатель – натуральное число, то есть число из списка 1, 2, 3, 4…, а числитель – произвольное целое. Это уже нормализация дроби ;).
|
|
|
|
|