Вопрос № 162444: Здравствуйте уважаемые эксперты помогите написать программу. Нужно создать менеджера"чат" по обмену файлами. Пользователи во время общения в чате должны не только посылать друг другу сообщения типа:Привет,Как дела? и т.д., но и должны им...
Вопрос № 162447: Доброго времени суток Уважаемые эксперты необходима ваша помощь. Нужно переделать программу написанную В <b>Visual C++</b> в код на <b>Visual
C#</b> <img src="http://rusfaq.ru/images/Forum/69.gif" border="0"> (код программы приведен ниже).Программ...Вопрос № 162467: Доброго времени суток, уважаемые эксперты, прошу помощи в решении следующей задачи: "Дана строка текста, в которой слова разделены пробелами и запятыми. Необходимо: -определить количество слов в строке и вывести на экран каждое нечетное сл...
<
table width=100% cellpadding=4 class=A>
Вопрос № 162.444
Здравствуйте уважаемые эксперты помогите написать программу. Нужно создать менеджера"чат" по обмену файлами. Пользователи во время общения в чате должны не только посылать друг другу сообщения типа:Привет,Как дела? и т.д., но и должны иметь возможность между собой обмениватся файлами.
ЗАРАНЕЕ БОЛЬШОЕ СПАСИБО!!!!!!!!!!!!!!!!!
Отправлен: 15.03.2009, 20:14
Вопрос задал: Magma (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Jan
Здравствуйте, Magma!
Интересно, а почему вы не написали, на основе чего этот чат должен работать, и где? (Локальная сеть, Интернет?...) Многопользовательский чат или общение только двух людей?
Основываясь на том, что вы сказали можно только посоветовать смотреть в сторону SOCKET API для реализации клиент-серверных приложений.
Если добавите информации с удовольствием подумаю над тем, как можно было бы помочь.
Ответ отправил: Jan (статус: 5-й класс)
Ответ отправлен: 16.03.2009, 21:42
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 245472 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 162.447
Доброго времени суток Уважаемые эксперты необходима ваша помощь. Нужно переделать программу написанную В Visual C++ в код на Visual C# (код программы приведен ниже).Программа рабочая Вот задание для которого она написана: Определить класс “Шаровая поверхность”, точки которой задаются в полярной системе координат (широта, долгота, радиус-вектор). Реализовать операцию определения длины линии на поверхности шара между двумя точками.
Отвечает: Evgenijm
Здравствуйте, Иванов Руслан Иванович!
В приложении переведенная программа. Много "архитектурных" ошибок. Зачем здесь try/catch (я их убрал)? Зачем отменяете введеные точки после пункта 2 (тоже убрал)? Зачем Вектор, если он не используется? ShowBallPoint и оператор вывода делают логически одинаковые вещи. Их нельзя разводить на разные уровни. Вместо оператора вывода надо было сделать еще 1 обычную функцию.
Приложение:
Ответ отправил: Evgenijm (статус: 3-й класс)
Ответ отправлен: 15.03.2009, 23:58
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 245386 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 4
Отвечает: Micren
Здравствуйте, Иванов Руслан Иванович! Вот программа:
Код:
using System;
namespace _162447 { class Program { static void Main(string[] args) { try { // Вводим точки BallPoint
bp1 = InputBallPoint("Введите данные о точке 1:"), bp2 = InputBallPoint("Введите данные о точке 2:"); // Выводим результат Console.WriteLine("Расстояние между точкой {0:POL} и точкой {1:POL} равняется :{2}", bp1, bp2, Math.Abs(bp1 - bp2)); Console.WriteLine("Координаты точек в декартовой системе:
Точка 1:{0:DEC}
Точка 2:{1:DEC}", bp1, bp2); } catch (System.Exception ex) { Console.WriteLine("Исключение:{0}", ex.Message); } Console.WriteLine("Нажмите любую клавишу для выхода"); Console.ReadKey(); } // Функция ввода точки static BallPoint InputBallPoint(string msg) { while (true) { Console.WriteLine(msg);
double latitude = InputDouble("Широта:"), longitude = InputDouble("Долгота:"), radius = InputDouble("Радиус:"); try { return new BallPoint(latitude, longitude, radius); } catch (ArgumentException ex) { Console.WriteLine("
;Исключение: {0}", ex.Message); }
} } // Функция ввода числа static double InputDouble(string msg) { while (true) { Console.Write(msg); try { return Convert.ToDouble(Console.ReadLine()); } catch { Console.WriteLine("Ожидается действительное
число"); } } } } // Класс - точка на шаре class BallPoint : IFormattable { // Конструктор public BallPoint(double Latitude, double Longitude, double Radius) { if (Math.Abs(Latitude) <= 90) { // Углы переводим из градусов в радианы latitude = Latitude * Math.PI / 180;
longitude = (Longitude - Math.Floor(Longitude / 360) * 360) * Math.PI / 180; radius = Math.Abs(Radius); } else throw new ArgumentException("Широта должна быть в пределах -90..90"); } // Оператор вычисляет расстояние между точками public static double operator -(BallPoint p1, BallPoint p2) { if (p1.radius == p2.radius) { return 2 * Math.Asin(Math.Sqrt(Math.Pow(p1.X
- p2.X, 2) + Math.Pow(p1.Y - p2.Y, 2) + Math.Pow(p1.Z - p2.Z, 2)) / 2 / p1.radius) * p1.radius; } else throw new ApplicationException("Точки лежат не на одном радиусе"); } // Следующие свойства возвращают декартовы координаты public double X { get { return radius * Math.Cos(latitude) * Math.Cos(longitude); }
} public double Y { get { return radius * Math.Cos(latitude) * Math.Sin(longitude); } } public double Z { get { return radius * Math.Sin(latitude); } } // Следующие методы нужны для форматирования при выводе public override string ToString() { return String.Format("({0};{1};{2})",
latitude, longitude, radius); } public string ToString(string format, IFormatProvider formatProvider) { if (format == null) return ToString(); switch (format.ToUpper()) { case "DEC": return String.Format("X:{0} Y:{1} Z:{2}", X, Y, Z); case "POL": return String.
Format("Широта:{0} Долгота:{1} Радиус:{2}", latitude * 180 / Math.PI, longitude * 180 / Math.PI, radius); default: return ToString(); } } // Широта,долгота,радиус private double latitude, longitude, radius; } }
Пример работы:
Код:
Введите данные о точке 1: Широта:90 Долгота:10 Радиус:1 Введите данные о точке 2: Широта:-90 Долгота:10 Радиус:1 Расстояние между точкой Широта:90 Долгота:10 Радиус:1 и точкой Широта:-90 Долгота:10 Радиус:1 равняется :3,14159265358979 Координаты точек в декартовой системе: Точка 1:X:6,03000915816144E-17 Y:1,063253308503E-17 Z:1 Точка 2:X:6,03000915816144E-17 Y:1,063
253308503E-17 Z:-1
Ответ отправил: Micren (статус: Студент)
Ответ отправлен: 16.03.2009, 17:45
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 245439 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Вопрос № 162.467
Доброго времени суток, уважаемые эксперты, прошу помощи в решении следующей задачи: "Дана строка текста, в которой слова разделены пробелами и запятыми. Необходимо: -определить количество слов в строке и вывести на экран каждое нечетное слово -определить, сколько слов в строке имеют максимальную длину -вывести результат в файл" Заранее благодарен!
Отправлен: 16.03.2009, 00:47
Вопрос задал: XaciH (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Micren
Здравствуйте, XaciH! Программа. VS 2008. C++.
int main() { locale::global(locale("rus_rus.866")); // Вводим строку символов wstring str; wcout<<L"Введите
строку:"<<endl; getline(wcin,str); // Вводим имя файла wstring fileName; wcout<<L"Имя файла для вывода результата:"; getline(wcin,fileName); // Открываем файл wofstream out(fileName.c_str()); // Проверяем успешно ли открытие if(out) { out.imbue(locale("rus_rus")); // Позиция начала слова и конца wstring::size_type indexFirst=0,indexLast=0; // Счетчи
ки количества слов в строке, максимальная длина и количество слов с максимальной длиной unsigned int wordCounter=0,maxLen=0,maxLenCounter=0; wcout<<L"Нечетные слова:"<<endl; out<<L"Нечетные слова:"<<endl; // Перебираем слова while(indexFirst<str.length()&&indexLast!=wstring::npos) { // Выделяем слово indexLast=str.find_first_of(L" ,",indexFirst); wstring word=str.substr(indexFirst,indexLast-indexFirst); //
Если слово не пустое(пустое слово вряд ли можно считать словом). Уберите если не согласны. if(!word.empty()) { // Если нечетное слово if(++wordCounter%2) { wcout<<word<<endl; out<<word<<endl; } // Если найдено слово с большей длиной if(word.length()>maxLen) { maxLen=word.length(); maxLenCounter=1; } else if(maxLen==word.length())max
LenCounter++; } indexFirst=indexLast+1; } wcout<<L"Количество слов в строке:"<<wordCounter<<endl; out<<L"Количество слов в строке:"<<wordCounter<<endl; wcout<<L"Максимальную длину "<<maxLen<<L" символов имеют "<<maxLenCounter<<L" слов(а)"<<endl; out<<L"Максимальную длину "<<maxLen<<L" символов имеют "<<maxLenCounter<<L"
слов(а)"<<endl; } else wcerr<<L"Невозможно открыть файл("<<fileName<<L") для записи"<<endl; system("PAUSE"); return 0; }
Пример работы:
Код:
Введите строку: jsdh,sjhg sydfg sereytwr рпыфава феуцк,,,,оцунп ырвп,офвп Имя файла для вывода результата:e:out.txt Нечетные слова: jsdh sydfg рпыфава оцунп офвп Количество слов в строке:9 Максимальную длину 8 символов имеют 1 слов(а)
Редактирование: исправлено по просьбе автора ответа.
--------
∙ Отредактировал: Зенченко Константин Николаевич, Профессор
∙ Дата редактирования: 16.03.2009, 15:46 (время московское)
Ответ отправил: Micren (статус: Студент)
Ответ отправлен: 16.03.2009, 14:51
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 245425 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.