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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2011, 21:21   #1
Alexey_kor
Пользователь
 
Регистрация: 29.01.2011
Сообщений: 19
По умолчанию Новая олимпиадная задача)

Злые админы седня изменили задачу и сделали олимпиаду на время и теперь я вообще в ауте. Понимаю, что слишком многого прошу, но кто-нибудь может написать эту программу под один из этих компиляторов:
Microsoft visual с 2005, gnu C 3.4.2 (minGW), gnu C++ 3.4.2 (minGW), borland delphi 7.0, borland pascal 7.0, c# .net 2.0 (VS 2005).

Вот задание:
Дана текстовая строка, содержащая неотрицательное вещественное число. Вывести строку, содержащую это число в виде: x*10^y, где:

1. x – вещественное число, большее, либо равное 0, но меньшее 1, в качестве символа десятичной запятой используется запятая «,». Если x=0, то десятичная запятая не отображается.
2. y – целое положительное число от 0 до 10.

Отображение строки не должно зависеть от региональных настроек операционной системы (не следует использовать функции преобразования числа в строку, результат которых зависит от региональных настроек операционной системы).
Формат входного файла

Во входном файле Input.txt находится вещественное число X (0 <= X <= 1010-1), записанное в десятичной системе счисления с точностью, не превышающей двух десятичных знаков после запятой, символ десятичной запятой – точка «.».
Формат выходного файла

В выходной файл Output.txt вывести строку, отвечающую требованиям задания.
Пример входных и выходных данных

Input.txt
123456789.7

Output.txt
0,1234567897*10^9

Вы только не подумайте, что я зажравшаася ско*ина, которая требует кого-то сделать всю работу. Просто на все про все 2 с половиной часа, а мне ещё 9 программ делать, эту просто никак не успею. Вообщем если вам это не очень сложно, то помогите, пожалуйста)
ПС Из прошлой задачи у многих были правильный варианты, но админы написали, типа у них сбой был поэтому они всех и посылали на "три буквы". Обещаю, что если будет время, то свой вариант тоже выложу)
Alexey_kor вне форума Ответить с цитированием
Старый 30.01.2011, 21:41   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

это же элементарно
Код:
#include <iostream>
using namespace std;

int main(){
    
    string in, out = "0,";
    cin >> in;
    int digits = 0, len = in.size();
    for(; in[digits] != '.'; digits++);    
    for(int i=0; i < len; i++){
             if( in[i] == '.') continue;
             out += in[i];
    }
    cout << out << "*10^" << digits << endl;    
    //cin.ignore();
    //cin.get();
    return 0;
}
NiCola999 вне форума Ответить с цитированием
Старый 30.01.2011, 21:45   #3
Alexey_kor
Пользователь
 
Регистрация: 29.01.2011
Сообщений: 19
По умолчанию

to NiCola999, скажите пожалуйста под какой компилятор вы писали программу, ибо я владею только дельфи, и сам не могу распознать)
Alexey_kor вне форума Ответить с цитированием
Старый 30.01.2011, 21:48   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Этот язык называется C++. Работать он будет на Borland C++.

Я бы перевёл это на Паскаль, но некоторые конструкции приведённого кода мне непонятны, ибо C++ знаю не так хорошо, как Паскаль.

Последний раз редактировалось Вадим Мошев; 30.01.2011 в 21:52.
Вадим Мошев вне форума Ответить с цитированием
Старый 30.01.2011, 21:49   #5
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

gnu c++ )
NiCola999 вне форума Ответить с цитированием
Старый 30.01.2011, 21:51   #6
Alexey_kor
Пользователь
 
Регистрация: 29.01.2011
Сообщений: 19
По умолчанию

to NiCola999,
я отправил им прогу в компилятор: gnu C++ 3.4.2 (minGW)
Пишут: Программа не отвечает.
Так что в чем-то наверное ошибка...
Вот какие нормы должны быть соблюдены(у них написано):
1. Программа должна завершаться с кодом 0. Иначе Вы получите ошибку "Runtime Error". Для этого в C и C++ нужно сделать так, чтобы функция int main() возвращала 0.
2. Нельзя обрабатывать ввод с клавиатуры или ожидать нажатия клавиши. В противном случае Вы получите ошибку, например “Security Violation”.
3. Не используйте абсолютные пути при работе с файлами. При запуске Вашей программы эти файлы будут находиться в текущем каталоге.

Последний раз редактировалось Alexey_kor; 30.01.2011 в 21:53.
Alexey_kor вне форума Ответить с цитированием
Старый 30.01.2011, 21:56   #7
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

че за бред, можно же перенаправить файл в поток ввода
Код:
proga.exe < input.txt
NiCola999 вне форума Ответить с цитированием
Старый 30.01.2011, 21:59   #8
Alexey_kor
Пользователь
 
Регистрация: 29.01.2011
Сообщений: 19
По умолчанию

NiCola999,
Можете полностью код снова написать?)
Я же говорю, что только в дельфи шарю нормально, а в ГНУ полный ноль, так что я не очень понимаю, куда нужно эту часть кода вставить) (сорри за такой дебилизм с моей стороны)
Alexey_kor вне форума Ответить с цитированием
Старый 30.01.2011, 22:10   #9
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Код:
#include <iostream>
#include <fstream>
using namespace std;

int main(){    
    ifstream input;
    ofstream output;
    input.open("Input.txt");
    output.open("Output.txt");
    string in, out = "0,";
    input >> in;
    int digits = 0, len = in.size();
    if (in == "0"){
           out = "0";
    }else{
      for(; in[digits] != '.'; digits++);    
      cout << digits << endl;
      for(int i=0; i < len; i++){
             if( in[i] == '.') continue;
             out += in[i];
      }
    }
    output << out << "*10^" << digits << endl;    // endl - символ новой строки, нужен он в задаче?
    return 0;
}

Последний раз редактировалось NiCola999; 30.01.2011 в 22:12.
NiCola999 вне форума Ответить с цитированием
Старый 30.01.2011, 22:18   #10
Alexey_kor
Пользователь
 
Регистрация: 29.01.2011
Сообщений: 19
По умолчанию

to NiCola999, Решение засчитано!!!! (символ новой строки не убирал)
Спасибо вам большое! Без вас бы реально пропал)
Alexey_kor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Олимпиадная задача Alexey_kor Помощь студентам 7 30.01.2011 02:22
Олимпиадная задача. _-Re@l-_ Паскаль, Turbo Pascal, PascalABC.NET 1 09.12.2010 20:53
Олимпиадная задача Carbon Общие вопросы C/C++ 2 23.05.2007 22:07