Свободен |
16-05-2006 - 14:58 В общем,господа компьютерщики,задачка,я уверен,простейшая для программиста,но я - ламер в программировании...Прошу вас,помогите решить!!! За помощь ГАРАНТИРУЮ 4 плюса вам в репутацию, а также 100 сексо на ваш счет,и мою огромную вам благодарность(плюсы в репутацию и сексо - тому,кто решит задачку верно,и напишет решение в этой теме). А звучит задача следующим образом: Дан файл f,компоненты которого являются целыми числами...Создать обьект,имеющий метод,позволяющий переписать данный файл таким образом,чтобы не было двух соседних чисел с одним знаком,а числа шли: - положительные - в порядке возрастания, отрицательные - в порядке убывания. ПРОШУ ВАС,ПОМОГИТЕ!!!
Это сообщение отредактировал Tanzilit - 16-05-2006 - 17:08 |
Свободен |
16-05-2006 - 22:22 Лови. Компилировал VS8.0.
CODE | #include <list> #include <fstream> #include <algorithm> #include <iostream>
class MyClass { public: void Convert(); };
void MyClass::Convert() { // читаем файл в список и закрываем его std::ifstream ifs("f"); if(!ifs) { std::cout << "file not found" << std::endl; return; }
std::list<int> pnums; std::copy(std::istream_iterator<int>(ifs), std::istream_iterator<int>(), std::back_inserter(pnums)); ifs.close();
// сортируем числа по возрастанию, копируем отрицательные в другой список и сортируем их по убыванию std::list<int> nnums; pnums.sort(); nnums.splice(nnums.begin(), pnums, pnums.begin(), std::find_if(pnums.begin(), pnums.end(), std::bind2nd(std::greater<int>(), -1))); nnums.sort(std::greater<int>());
// если нет положительных или отрицательных чисел - ошибка if(nnums.empty() || pnums.empty()) { std::cout << "there are no positive or negative numbers" << std::endl; return; }
// получаем итераторы двух списков с выбираем внешние на основе большего количества чисел std::list<int>::iterator iit = pnums.begin(), iit_end = pnums.end(), eit = nnums.begin(), eit_end = nnums.end(); if(pnums.size() > nnums.size()) { std::swap(iit, eit); std::swap(iit_end, eit_end); }
// записываем поочередно положительные и отрицательные числа в файл std::ofstream ofs("f", std::ios::out | std::ios::trunc); for(; eit != eit_end; ++eit) { ofs << *eit << " " << *iit << " "; // в более коротком одном из списков последнее число записывает в файл недостающее число раз для 1-ого условия if(iit != iit_end) ++iit; if(iit == iit_end) --iit; } }
int main() { MyClass my; my.Convert(); }
|
Тестировал на файле "f":
QUOTE | 1 3 2 -6 878 -67 100 4589 -0
|
Результат:
QUOTE | 0 -6 1 -67 2 -878 3 -878 100 -878 4589 -878
|
Это сообщение отредактировал GregZ - 16-05-2006 - 22:27 |
Свободен |
16-05-2006 - 23:22 Вот спасибо!!! Единственная проблема - мне нужно,чтобы заработало на древнем досовском компиляторе Barland C++ version 3.0...Если заработает,как и обещал,плюсы и сексо(мне эти сексо все равно не нужны) |
Свободен |
16-05-2006 - 23:28
QUOTE (Tanzilit @ 16.05.2006 - время: 23:22) | Вот спасибо!!! Единственная проблема - мне нужно,чтобы заработало на древнем досовском компиляторе Barland C++ version 3.0...Если заработает,как и обещал,плюсы и сексо(мне эти сексо все равно не нужны) |
Не заработает :) Небыло там шаблонов и STL :)
Надо было тебе сразу указывать версию компилятора. А преподу советую прочесть лекцию на тему современных языков программирования. |
Свободен |
16-05-2006 - 23:53 кОРОЧЕ ALGORITHM И LIST - ТАКИХ ПОДКЛЮЧАЕМЫХ БИБЛИОТЕК В моем старом компиляторе нет...А мне нужно,чтобы на нем шла...но все равно,спасибо... p.s.Нельзя ли ту же прогу,но без иопользования этих 2-х подключаемых библиотек??? |
Свободен |
17-05-2006 - 00:06 Greqz,тебе все равно ОГРОМНОЕ СПАСИБО,извини,что по своей дурости не написал,что надо... Слушай,ты видимо,программер,и для тебя это раз плюнуть...В общем,если у тебя ADSL интернет...Или у самого есть старый компилятор borland c++ 3.0...В общем...Не мог бы ты сделать,чтобы пошло на старом компиляторе? Просто я не уверен,что преподавателю понравится такой ваниант.как ты предложил... Что же касается современных языков,то я первокурсник,мы изучаем самые основы,а потом уже,на старших курсах,будем изучать все современное... |
Свободен |
17-05-2006 - 00:07 Вот ссылка,по которой можно скачать Borland c++ 3.0 http://underworld.hut1.ru/download/program...++/TURBOC30.rar Весит ВСЕГо около 2 мегабайтов!!! |
Свободен |
17-05-2006 - 13:55 Прошу прощения, но задача не имеет решения, как некорректно поставленная. Во-первых непонятно, что делать, если количество положительных и отрицательных чисел не совпадает, а во-вторых неясно, как трактовать 0, поскольку оный бывает как плюс, так и минус. Да и вообще, за "создать обьект,имеющий метод" на месте клавиатурами убивать надо. :) Во времена моей учебы преподаватель, уличенный в некорректности постановки задачи, автоматом в репу плюс :) записывал.
Я не умничаю, мне просто интересно, как можно сделать то, чего сделать нельзя? Вы просто подумайте, КАК можно переписать файл, состоящий только из последовательности цифры 0 и пробелов (отвечает условиям задачи), чтобы он соответствовал условию той же задачи??? Я плакаль (с).
Так что по примеру GregZ'а советую преподу "убей сибя ап стену!"... |
AngeLR Свободен |
17-05-2006 - 14:21
QUOTE (JeyLo @ 17.05.2006 - время: 13:55) | Прошу прощения, но задача не имеет решения, как некорректно поставленная. Во-первых непонятно, что делать, если количество положительных и отрицательных чисел не совпадает, а во-вторых неясно, как трактовать 0, поскольку оный бывает как плюс, так и минус. Да и вообще, за "создать обьект,имеющий метод" на месте клавиатурами убивать надо. :) Во времена моей учебы преподаватель, уличенный в некорректности постановки задачи, автоматом в репу плюс :) записывал.
Я не умничаю, мне просто интересно, как можно сделать то, чего сделать нельзя? Вы просто подумайте, КАК можно переписать файл, состоящий только из последовательности цифры 0 и пробелов (отвечает условиям задачи), чтобы он соответствовал условию той же задачи??? Я плакаль (с).
Так что по примеру GregZ'а советую преподу "убей сибя ап стену!"... |
Гы... а я уже не реагирую, у сестры моей жены подобный препод, ни одной задачи грамотно поставить не может, но упорно пытается... меня это уже просто умиляет... как говорится - сказочный долбо*б © |
WorldSin Влюблен |
17-05-2006 - 16:28 У нас препод тоже долб.Рассказывает всё,но почему то никто не понимает:) А тё советую всё таки показать хоть такую версию. + от препода получишь,да и репутацию в его глазах тоже повысишь(типо - во умеет парень програмировать). |
Свободен |
17-05-2006 - 23:06 Сори, не за репутацию и сексо делал. Просто выдалась свободная минутка. Боюсь для старого борланда не смогу написать - банально нет времени. Могу для тебя откомпилировать этот код под DOS другим современным досовым компилятором - djgpp. По крайней мере сможет продемонстрировать функциональность преподавателю. Если что - обращайся. Либо здесь, либо стучись в аську. Информация в профайле.
|
Свободен |
18-05-2006 - 18:09
QUOTE (GregZ @ 18.05.2006 - время: 00:06) | Сори, не за репутацию и сексо делал. Просто выдалась свободная минутка. Боюсь для старого борланда не смогу написать - банально нет времени. Могу для тебя откомпилировать этот код под DOS другим современным досовым компилятором - djgpp. По крайней мере сможет продемонстрировать функциональность преподавателю. Если что - обращайся. Либо здесь, либо стучись в аську. Информация в профайле.
|
Откомпилируй,пожалуйста... Очень поможешь.... Буду весьма благодарен... |
Свободен |
18-05-2006 - 20:08
QUOTE (Tanzilit @ 18.05.2006 - время: 18:09) | Откомпилируй,пожалуйста... Очень поможешь.... Буду весьма благодарен... |
Теперь только завтра. На RSDN правильно обратился, но там тебе сначала косточки перемоют :) сам не рад будешь. |
Свободен |
19-05-2006 - 11:22 Скачал... Аж слезы на глазах... Ностальгияяяяяя..... В аттачменте скомпилированный этим самым TC...
QUOTE | #include <stdlib.h> #include <string.h> #include <stdio.h> #include <memory.h>
// Что-то странное :) #define max(a,b) (( a > b ) ? a : b )
// Класс, экземпляр которого (объект) и будет создан class CMyObject { public: // Конструктор CMyObject ( char* szFileName = 0 ) : m_szFileName(0) { SetFile ( szFileName ); };
// Установить имя файла void SetFile ( char* szFileName ) { if ( m_szFileName ) delete m_szFileName; m_szFileName = 0; if ( szFileName ) { if ( m_szFileName = new char[strlen(szFileName)+1] ) { strcpy (m_szFileName, szFileName ); }; } };
int Convert ( char* szFileName = 0 ) { // Устанавливаем имя файла if ( szFileName ) SetFile (szFileName); // Проверяем валидность.. if ( !m_szFileName ) return -1;
// И начинаем // Массив позитивных чисел int* pPositiveNumbers = 0; int nPositiveNumbers = 0;
// Массив отрицательных чисел // 0 записываем в положительные int* pNegativeNumbers = 0; int nNegativeNumbers = 0;
FILE *stream; char buffer[12]; // Хватит-с.. int i = 0; // На всякий случай...
// Откроем поток для чтения if( !( stream = fopen( m_szFileName, "r" )) ) { printf ( "Файл не найден." ); // ... Убей сибя ап стену! return 0; };
// Навсегда... int bIsEof = 1; while ( bIsEof ) { // Начинаем-с читать... buffer[i] = fgetc( stream ); if ( buffer[i] == ' ' || buffer[i] == EOF ) { if ( buffer[i] == EOF ) { bIsEof = 0; }; buffer[i] = 0; int nYetAnotherNumber; if ( ( nYetAnotherNumber = atoi ( buffer ) ) > 0 ) { if ( !( nPositiveNumbers = insertItem ( pPositiveNumbers, nPositiveNumbers, nYetAnotherNumber ) ) ) { // Ну все, приехали... Память кончилась, пришел старческий маразм.. exit(0); }; } else { if ( !( nNegativeNumbers = insertItem ( pNegativeNumbers, nNegativeNumbers, nYetAnotherNumber ) ) ) { // Ну все, приехали... Память кончилась, пришел старческий маразм.. exit(0); }; };
i = -1; } else if ( i > 11 || ( ( buffer[i] < '0' || buffer[i] > '9' ) && buffer[i] != '-' ) || (buffer[i] == '-' && i != 0) ) { fclose ( stream ); if ( pPositiveNumbers ) delete pPositiveNumbers; if ( pNegativeNumbers ) delete pNegativeNumbers; printf ( "Файл имеет неправильный формат." ); // ... Убей сибя ап стену - 2! return 0; } i++;
};
// Закрываемся... fclose ( stream );
// Код возврата int nResult = 0;
if ( nNegativeNumbers == nPositiveNumbers || nNegativeNumbers-1 == nPositiveNumbers || nNegativeNumbers+1 == nPositiveNumbers ) { if( ( stream = fopen( m_szFileName, "w" )) ) { for ( int i = 0; i < max(nNegativeNumbers, nPositiveNumbers); i ++ ) { if ( i < nPositiveNumbers ) { fprintf ( stream, "%d ", pPositiveNumbers[i] ); }; if ( nNegativeNumbers - i > 0 ) { fprintf ( stream, "%d ", pNegativeNumbers[nNegativeNumbers - i - 1] ); }; }; fclose ( stream ); printf ( "Готово!" ); nResult = 1; } else { printf ( "Невозможно открыть файл на запись." ); }; } else { printf ( "Количество положительных и отрицательных чисел не совпадает." ); // ... Убей сибя ап стену - 3! };
if ( pPositiveNumbers ) delete pPositiveNumbers; if ( pNegativeNumbers ) delete pNegativeNumbers;
return nResult; };
// Деструктор ~CMyObject () { if ( m_szFileName ) delete m_szFileName; };
private: // Имя файла char* m_szFileName;
public: // Вставить элемент в массив int insertItem ( int* &pArray, int nSize, int nItem ) { // Если массив еще пуст, то делаем все быстро. if ( !nSize ) { return ( pArray = new int[1]) ? pArray[0] = nItem , 1: 0; };
// Декларация переменных int* pNewArray = 0; // Выделяем память для нового массива данных if ( !(pNewArray = new int[nSize+1]) ) { // Ошибка выделения памяти. Все в сад смотреть на звезды lil' delete pArray; return 0; };
// Переносимся memcpy ( pNewArray, pArray, ( nSize + 1 ) * sizeof(int) ); delete pArray; pArray = pNewArray;
// Чуть-чуть задекларируемся int nInjectionPoint = nSize; pArray[nInjectionPoint] = nItem;
// Наш элемент всплывает вверх // с помощью простейшей пузырьковой сортировки while ( nInjectionPoint ) { if ( pArray[nInjectionPoint] < pArray[nInjectionPoint-1] ) { int nYetAnotherVariable = pArray[nInjectionPoint]; pArray[nInjectionPoint] = pArray[nInjectionPoint-1]; pArray[nInjectionPoint-1] = nYetAnotherVariable; }; nInjectionPoint--; };
// Уходим, уходим, уходим.... return nSize+1; } };
int main(int argc, char* argv[]) {
// А аргументики где? if ( argc < 2 ) { printf ( "Параметр использования: JustTask имя_файла" ); return 0; };
// Создаем объект CMyObject* pObject = new CMyObject ( argv[1] ); if ( pObject ) { if ( pObject->Convert() ) { // Все хорошо, все сконвертировалось }; delete pObject; };
return 0; }
|
|
Свободен |
19-05-2006 - 13:59 Будет ошибка при наличии в исходном файле пробела после последнего числа. Появится лишний ноль.
- для чтения можно было использовать fscanf, вышло бы короче
CODE | for(int nYetAnotherNumber; fscanf(stream, "%d", &nYetAnotherNumber) != EOF;) { // добавление числа }
|
- для изменения размера выделенной под массив памяти есть функция realloc
|
Свободен |
19-05-2006 - 14:58
QUOTE (GregZ @ 19.05.2006 - время: 13:59) | Будет ошибка при наличии в исходном файле пробела после последнего числа. Появится лишний ноль.
- для чтения можно было использовать fscanf, вышло бы короче
CODE | for(int nYetAnotherNumber; fscanf(stream, "%d", &nYetAnotherNumber) != EOF;) { // добавление числа }
|
- для изменения размера выделенной под массив памяти есть функция realloc
|
Даааа... Вы действительно еще дымитесь... :)) Не было цели "укоротить" или "realloc" использовать. Вы тогда еще про qsort напомните мне, про isdigit и прочая-прочая-прочая... Вообще нужно было даже fprintf и atoi не использовать. Да, можно и укоротить.. Думаю строк до традцати, используя стандартные библиотеки (STL - это на то время совсем не стандарт)... Но зачем? Человек должен и хотя бы понять, как оно все работает. И научиться обрабатывать ошибки, а то получаются всякие неучи... Лишь бы "написать", а там хоть трава не расти... Не нервничайте, никто не хочет никому ничего доказать. :) А про пробел - ну так вместо "if ( buffer[i] == ' ' || buffer[i] == EOF ) {" напишите "if ( ( buffer[i] == ' ' && i ) || buffer[i] == EOF ) {" и все... Тоже мне, проблема... :) |
Свободен |
19-05-2006 - 20:05 Ничего личного, просто заметил небольшую ошибку, вот и сообщил.
QUOTE | Даааа... Вы действительно еще дымитесь... :))
|
Не понял, что Вы хотели сказать? |
tetro Свободен |
22-05-2006 - 17:26 К слову, так я таки был х лет университеским ассистентом, и скажу, что я лично за Гришино решение вполне вкатал бы баранку с просьбой подойти на беседу. (При том что оно мне вполне нравится).
Есть некий ожидаемый уровень решения для человека. Чел который пишет такие вопросы программирует без-году неделю. Вопрос на уровне курса: "Вдение в программирование" или скажем следующий за ним. У нас это был второй скажем семестр (примерно в это время 2й-3й месяц учебы). А вы тут STL. Хоть и люблю я его.
Это явное решение на уровне человека с заметным х-летним опытом. Помните была шутка кто как пишет "Hello world!". Так вот это именно типичный senior programmer |
tetro Свободен |
22-05-2006 - 17:37 Да вдогонку JeyLo по поводу некорректоностей, но в качестве унивеситеского ассистента. Мой типичный ответ, который я давал при раздаче первой домашки: все неточности в формулировках имеете право трактовать как вам более удобно (но консистентно). Часто нет желания писать длинную простыню оговорок и спец. трактовок граничных случаев: получается длиннее, чем решение. Да и человек должен учиться видеть проблемы сам. |
Свободен |
23-05-2006 - 00:29
QUOTE (tetro @ 22.05.2006 - время: 17:26) | Это явное решение на уровне человека с заметным х-летним опытом. Помните была шутка кто как пишет "Hello world!". Так вот это именно типичный senior programmer |
Что Вы, я не усложнял совершенно. Все на уровне базовых знаний STL. Вот если бы замутить итераторы в нужно порядке... Этот паттерн так и просится сюда для обхода элементов списка. Тогда да... |
Свободен |
24-05-2006 - 00:36
QUOTE (GregZ @ 23.05.2006 - время: 00:29) | Что Вы, я не усложнял совершенно. |
2GregZ: Реалии таковы, что не все такие как Вы, GregZ.... Подавляющему большинству программистов (а как же 1С?) даже элементарные темплейты в тягость. А Вы про усложнение.. :) Впрочем не буду ломать стереотипы.
2Tetro: Одно дело неточности, это да, согласен... Тут же задача из серии "ну замутите мне чё..." |
tetro Свободен |
24-05-2006 - 11:49 GregZ, милейший, вы мне отвечаете на уровне: "я не понимаю что здесь можно не понимать..." Напомнили мне одного моего приятеля, который будучи в армии зарабатывал пописывая статьи по программирования в Dr. Dobbs. Я не говорю что решение сложно, я говорю, что оно не соответсвует по применяемым методам ожидаемому уровню: т.е. если Чел бы подошел ко мне и ответил на наводящие вопросы по основам STL то 100 его, а вот если нет, то увы списал :(
2JeyLo: А почему бы нет: для 1-2 семестра и даже далее вполне. Т.е. условия приближенные к реальным: точные формулировки никто не обещал: учитесь приводить задачу к решаемому уровню. Здесь вполне случай, что если описать все хвосты, то проще написать решение...
Более того учитесь читать задачу глазами специалиста: понимать где главная линия, а где детали. Т.е. я заранее согласен, что вы __все__ детали протрактуете как вам будет удобнее, но разумно. Например, лишние числа одного из знаков в хвост (остаток - не волнует), 0 может быть или только положительным или только отрицательным или любым но конкретный 0 всегда имеет некий знак (т.е. перед всеми 0 можно поставить знак в соответствии с их трактовкой)
Это сообщение отредактировал tetro - 24-05-2006 - 12:05 |
tetro Свободен |
24-05-2006 - 12:30 Да, джентельмены, нашел эту шутку The Evolution of a Programmer(про "Hello world!"):
QUOTE | The Evolution of a Programmer
High School/Jr.High
CODE | 10 PRINT "HELLO WORLD" 20 END
|
First year in College
CODE | program Hello(input, output) begin writeln('Hello World') end.
|
Senior year in College
CODE | (defun hello (print (cons 'Hello (list 'World))))
|
New professional
CODE | #include <stdio.h> void main(void) { char *message[] = {"Hello ", "World"}; int i; for(i = 0; i < 2; ++i) printf("%s", message[i]); printf("\n"); }
|
Seasoned professional
CODE | #include <iostream.h> #include <string.h> class string { private: int size; char *ptr; string() : size(0), ptr(new char[1]) { ptr[0] = 0; } string(const string &s) : size(s.size) { ptr = new char[size + 1]; strcpy(ptr, s.ptr); } ~string() { delete [] ptr; } friend ostream &operator <<(ostream &, const string &); string &operator=(const char *); }; ostream &operator<<(ostream &stream, const string &s) { return(stream << s.ptr); } string &string::operator=(const char *chrs) { if (this != &chrs) { delete [] ptr; size = strlen(chrs); ptr = new char[size + 1]; strcpy(ptr, chrs); } return(*this); } int main() { string str; str = "Hello World"; cout << str << endl; return(0); }
|
Master Programmer
CODE | [ uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820) ] library LHello { // bring in the master library importlib("actimp.tlb"); importlib("actexp.tlb"); // bring in my interfaces #include "pshlo.idl" [ uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820) ] cotype THello { interface IHello; interface IPersistFile; }; }; [ exe, uuid(2573F890-CFEE-101A-9A9F-00AA00342820) ] module CHelloLib { // some code related header files importheader(<windows.h>); importheader(<ole2.h>); importheader(<except.hxx>); importheader("pshlo.h"); importheader("shlo.hxx"); importheader("mycls.hxx"); // needed typelibs importlib("actimp.tlb"); importlib("actexp.tlb"); importlib("thlo.tlb"); [ uuid(2573F891-CFEE-101A-9A9F-00AA00342820), aggregatable ] coclass CHello { cotype THello; }; }; #include "ipfix.hxx" extern HANDLE hEvent; class CHello : public CHelloBase { public: IPFIX(CLSID_CHello); CHello(IUnknown *pUnk); ~CHello(); HRESULT __stdcall PrintSz(LPWSTR pwszString); private: static int cObjRef; }; #include <windows.h> #include <ole2.h> #include <stdio.h> #include <stdlib.h> #include "thlo.h" #include "pshlo.h" #include "shlo.hxx" #include "mycls.hxx" int CHello::cObjRef = 0; CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk) { cObjRef++; return; } HRESULT __stdcall CHello::PrintSz(LPWSTR pwszString) { printf("%ws ", pwszString); return(ResultFromScode(S_OK)); } CHello::~CHello(void) { // when the object count goes to zero, stop the server cObjRef--; if( cObjRef == 0 ) PulseEvent(hEvent); return; } #include <windows.h> #include <ole2.h> #include "pshlo.h" #include "shlo.hxx" #include "mycls.hxx" HANDLE hEvent; int _cdecl main( int argc, char * argv[] ) { ULONG ulRef; DWORD dwRegistration; CHelloCF *pCF = new CHelloCF(); hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); // Initialize the OLE libraries CoInitializeEx(NULL, COINIT_MULTITHREADED); CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE, &dwRegistration); // wait on an event to stop WaitForSingleObject(hEvent, INFINITE); // revoke and release the class object CoRevokeClassObject(dwRegistration); ulRef = pCF->Release(); // Tell OLE we are going away. CoUninitialize(); return(0); } extern CLSID CLSID_CHello; extern UUID LIBID_CHelloLib; CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */ 0x2573F891, 0xCFEE, 0x101A, { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 } }; UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */ 0x2573F890, 0xCFEE, 0x101A, { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 } }; #include <windows.h> #include <ole2.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include "pshlo.h" #include "shlo.hxx" #include "clsid.h" int _cdecl main( int argc, char * argv[] ) { HRESULT hRslt; IHello *pHello; ULONG ulCnt; IMoniker * pmk; WCHAR wcsT[_MAX_PATH]; WCHAR wcsPath[2 * _MAX_PATH]; // get object path wcsPath[0] = '\0'; wcsT[0] = '\0'; if( argc > 1) { mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1); wcsupr(wcsPath); } else { fprintf(stderr, "Object path must be specified\n"); return(1); } // get print string if(argc > 2) mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1); else wcscpy(wcsT, L"Hello World"); printf("Linking to object %ws\n", wcsPath); printf("Text String %ws\n", wcsT); // Initialize the OLE libraries hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED); if(SUCCEEDED(hRslt)) { hRslt = CreateFileMoniker(wcsPath, &pmk); if(SUCCEEDED(hRslt)) hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello); if(SUCCEEDED(hRslt)) { // print a string out pHello->PrintSz(wcsT); Sleep(2000); ulCnt = pHello->Release(); } else printf("Failure to connect, status: %lx", hRslt); // Tell OLE we are going away. CoUninitialize(); } return(0); }
|
Apprentice Hacker
CODE | #!/usr/local/bin/perl $msg="Hello, world.\n"; if ($#ARGV >= 0) { while(defined($arg=shift(@ARGV))) { $outfilename = $arg; open(FILE, ">" . $outfilename) || die "Can't write $arg: $!\n"; print (FILE $msg); close(FILE) || die "Can't close $arg: $!\n"; } } else { print ($msg); } 1;
|
Experienced Hacker
CODE | #include <stdio.h> #define S "Hello, World\n" main(){exit(printf(S) == strlen(S) ? 0 : 1);}
|
Seasoned Hacker
CODE | % cc -o a.out ~/src/misc/hw/hw.c % a.out
|
Guru Hacker
CODE | % echo "Hello, world."
|
New Manager
CODE | 10 PRINT "HELLO WORLD" 20 END
|
Middle Manager
CODE | mail -s "Hello, world." bob@b12 Bob, could you please write me a program that prints "Hello, world."? I need it by tomorrow. ^D
|
Senior Manager
CODE | % zmail jim I need a "Hello, world." program by this afternoon.
|
Chief Executive
CODE | % letter letter: Command not found. % mail To: ^X ^F ^C % help mail help: Command not found. % damn! !: Event unrecognized % logout
|
|
|
Свободен |
17-06-2006 - 20:41 Спасибо огромное всем за помощь,особенно JeyLo - его решение мне больше всего помогло!!! Модерам - тему можно закрывать |