Задачка по Си++
DELETED
Акула пера
5/16/2006, 6:58:00 PM
В общем,господа компьютерщики,задачка,я уверен,простейшая для программиста,но я - ламер в программировании...Прошу вас,помогите решить!!! За помощь ГАРАНТИРУЮ 4 плюса вам в репутацию, а также 100 сексо на ваш счет,и мою огромную вам благодарность(плюсы в репутацию и сексо - тому,кто решит задачку верно,и напишет решение в этой теме).
А звучит задача следующим образом:
Дан файл f,компоненты которого являются целыми числами...Создать обьект,имеющий метод,позволяющий переписать данный файл таким образом,чтобы не было двух соседних чисел с одним знаком,а числа шли: - положительные - в порядке возрастания, отрицательные - в порядке убывания.
ПРОШУ ВАС,ПОМОГИТЕ!!!
А звучит задача следующим образом:
Дан файл f,компоненты которого являются целыми числами...Создать обьект,имеющий метод,позволяющий переписать данный файл таким образом,чтобы не было двух соседних чисел с одним знаком,а числа шли: - положительные - в порядке возрастания, отрицательные - в порядке убывания.
ПРОШУ ВАС,ПОМОГИТЕ!!!
DELETED
Акула пера
5/17/2006, 2:22:26 AM
Лови. Компилировал 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":
1 3 2 -6 878 -67 100 4589 -0
Результат:
0 -6 1 -67 2 -878 3 -878 100 -878 4589 -878
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":
1 3 2 -6 878 -67 100 4589 -0
Результат:
0 -6 1 -67 2 -878 3 -878 100 -878 4589 -878
DELETED
Акула пера
5/17/2006, 3:22:27 AM
Вот спасибо!!!
Единственная проблема - мне нужно,чтобы заработало на древнем досовском компиляторе Barland C++ version 3.0...Если заработает,как и обещал,плюсы и сексо(мне эти сексо все равно не нужны)
Единственная проблема - мне нужно,чтобы заработало на древнем досовском компиляторе Barland C++ version 3.0...Если заработает,как и обещал,плюсы и сексо(мне эти сексо все равно не нужны)
DELETED
Акула пера
5/17/2006, 3:28:36 AM
(Tanzilit @ 16.05.2006 - время: 23:22) Вот спасибо!!!
Единственная проблема - мне нужно,чтобы заработало на древнем досовском компиляторе Barland C++ version 3.0...Если заработает,как и обещал,плюсы и сексо(мне эти сексо все равно не нужны)
Не заработает :)
Небыло там шаблонов и STL :)
Надо было тебе сразу указывать версию компилятора. А преподу советую прочесть лекцию на тему современных языков программирования.
Единственная проблема - мне нужно,чтобы заработало на древнем досовском компиляторе Barland C++ version 3.0...Если заработает,как и обещал,плюсы и сексо(мне эти сексо все равно не нужны)
Не заработает :)
Небыло там шаблонов и STL :)
Надо было тебе сразу указывать версию компилятора. А преподу советую прочесть лекцию на тему современных языков программирования.
DELETED
Акула пера
5/17/2006, 3:53:11 AM
кОРОЧЕ ALGORITHM И LIST - ТАКИХ ПОДКЛЮЧАЕМЫХ БИБЛИОТЕК В моем старом компиляторе нет...А мне нужно,чтобы на нем шла...но все равно,спасибо...
p.s.Нельзя ли ту же прогу,но без иопользования этих 2-х подключаемых библиотек???
p.s.Нельзя ли ту же прогу,но без иопользования этих 2-х подключаемых библиотек???
DELETED
Акула пера
5/17/2006, 4:06:38 AM
Greqz,тебе все равно ОГРОМНОЕ СПАСИБО,извини,что по своей дурости не написал,что надо...
Слушай,ты видимо,программер,и для тебя это раз плюнуть...В общем,если у тебя ADSL интернет...Или у самого есть старый компилятор borland c++ 3.0...В общем...Не мог бы ты сделать,чтобы пошло на старом компиляторе? Просто я не уверен,что преподавателю понравится такой ваниант.как ты предложил...
Что же касается современных языков,то я первокурсник,мы изучаем самые основы,а потом уже,на старших курсах,будем изучать все современное...
Слушай,ты видимо,программер,и для тебя это раз плюнуть...В общем,если у тебя ADSL интернет...Или у самого есть старый компилятор borland c++ 3.0...В общем...Не мог бы ты сделать,чтобы пошло на старом компиляторе? Просто я не уверен,что преподавателю понравится такой ваниант.как ты предложил...
Что же касается современных языков,то я первокурсник,мы изучаем самые основы,а потом уже,на старших курсах,будем изучать все современное...
DELETED
Акула пера
5/17/2006, 4:07:49 AM
Вот ссылка,по которой можно скачать Borland c++ 3.0
https://underworld.hut1.ru/download/program...++/TURBOC30.rar
Весит ВСЕГо около 2 мегабайтов!!!
https://underworld.hut1.ru/download/program...++/TURBOC30.rar
Весит ВСЕГо около 2 мегабайтов!!!
DELETED
Акула пера
5/17/2006, 5:55:39 PM
Прошу прощения, но задача не имеет решения, как некорректно поставленная. Во-первых непонятно, что делать, если количество положительных и отрицательных чисел не совпадает, а во-вторых неясно, как трактовать 0, поскольку оный бывает как плюс, так и минус. Да и вообще, за "создать обьект,имеющий метод" на месте клавиатурами убивать надо. :) Во времена моей учебы преподаватель, уличенный в некорректности постановки задачи, автоматом в репу плюс :) записывал.
Я не умничаю, мне просто интересно, как можно сделать то, чего сделать нельзя? Вы просто подумайте, КАК можно переписать файл, состоящий только из последовательности цифры 0 и пробелов (отвечает условиям задачи), чтобы он соответствовал условию той же задачи??? Я плакаль (с).
Так что по примеру GregZ'а советую преподу "убей сибя ап стену!"...
Я не умничаю, мне просто интересно, как можно сделать то, чего сделать нельзя? Вы просто подумайте, КАК можно переписать файл, состоящий только из последовательности цифры 0 и пробелов (отвечает условиям задачи), чтобы он соответствовал условию той же задачи??? Я плакаль (с).
Так что по примеру GregZ'а советую преподу "убей сибя ап стену!"...
AngeLR
Мастер
5/17/2006, 6:21:04 PM
(JeyLo @ 17.05.2006 - время: 13:55) Прошу прощения, но задача не имеет решения, как некорректно поставленная. Во-первых непонятно, что делать, если количество положительных и отрицательных чисел не совпадает, а во-вторых неясно, как трактовать 0, поскольку оный бывает как плюс, так и минус. Да и вообще, за "создать обьект,имеющий метод" на месте клавиатурами убивать надо. :) Во времена моей учебы преподаватель, уличенный в некорректности постановки задачи, автоматом в репу плюс :) записывал.
Я не умничаю, мне просто интересно, как можно сделать то, чего сделать нельзя? Вы просто подумайте, КАК можно переписать файл, состоящий только из последовательности цифры 0 и пробелов (отвечает условиям задачи), чтобы он соответствовал условию той же задачи??? Я плакаль (с).
Так что по примеру GregZ'а советую преподу "убей сибя ап стену!"...
Гы... а я уже не реагирую, у сестры моей жены подобный препод, ни одной задачи грамотно поставить не может, но упорно пытается... меня это уже просто умиляет... как говорится - сказочный долбо*б ©
Я не умничаю, мне просто интересно, как можно сделать то, чего сделать нельзя? Вы просто подумайте, КАК можно переписать файл, состоящий только из последовательности цифры 0 и пробелов (отвечает условиям задачи), чтобы он соответствовал условию той же задачи??? Я плакаль (с).
Так что по примеру GregZ'а советую преподу "убей сибя ап стену!"...
Гы... а я уже не реагирую, у сестры моей жены подобный препод, ни одной задачи грамотно поставить не может, но упорно пытается... меня это уже просто умиляет... как говорится - сказочный долбо*б ©
WorldSin
Любитель
5/17/2006, 8:28:51 PM
У нас препод тоже долб.Рассказывает всё,но почему то никто не понимает:)
А тё советую всё таки показать хоть такую версию.
+ от препода получишь,да и репутацию в его глазах тоже повысишь(типо - во умеет парень програмировать).
А тё советую всё таки показать хоть такую версию.
+ от препода получишь,да и репутацию в его глазах тоже повысишь(типо - во умеет парень програмировать).
DELETED
Акула пера
5/18/2006, 3:06:44 AM
(Tanzilit @ 17.05.2006 - время: 00:07)Вот ссылка,по которой можно скачать Borland c++ 3.0
https://underworld.hut1.ru/download/program...++/TURBOC30.rar
Весит ВСЕГо около 2 мегабайтов!!!
Сори, не за репутацию и сексо делал. Просто выдалась свободная минутка. Боюсь для старого борланда не смогу написать - банально нет времени. Могу для тебя откомпилировать этот код под DOS другим современным досовым компилятором - djgpp. По крайней мере сможет продемонстрировать функциональность преподавателю. Если что - обращайся. Либо здесь, либо стучись в аську. Информация в профайле.
https://underworld.hut1.ru/download/program...++/TURBOC30.rar
Весит ВСЕГо около 2 мегабайтов!!!
Сори, не за репутацию и сексо делал. Просто выдалась свободная минутка. Боюсь для старого борланда не смогу написать - банально нет времени. Могу для тебя откомпилировать этот код под DOS другим современным досовым компилятором - djgpp. По крайней мере сможет продемонстрировать функциональность преподавателю. Если что - обращайся. Либо здесь, либо стучись в аську. Информация в профайле.
DELETED
Акула пера
5/18/2006, 10:09:34 PM
(GregZ @ 18.05.2006 - время: 00:06) (Tanzilit @ 17.05.2006 - время: 00:07)Вот ссылка,по которой можно скачать Borland c++ 3.0
https://underworld.hut1.ru/download/program...++/TURBOC30.rar
Весит ВСЕГо около 2 мегабайтов!!!
Сори, не за репутацию и сексо делал. Просто выдалась свободная минутка. Боюсь для старого борланда не смогу написать - банально нет времени. Могу для тебя откомпилировать этот код под DOS другим современным досовым компилятором - djgpp. По крайней мере сможет продемонстрировать функциональность преподавателю. Если что - обращайся. Либо здесь, либо стучись в аську. Информация в профайле.
Откомпилируй,пожалуйста...
Очень поможешь....
Буду весьма благодарен...
https://underworld.hut1.ru/download/program...++/TURBOC30.rar
Весит ВСЕГо около 2 мегабайтов!!!
Сори, не за репутацию и сексо делал. Просто выдалась свободная минутка. Боюсь для старого борланда не смогу написать - банально нет времени. Могу для тебя откомпилировать этот код под DOS другим современным досовым компилятором - djgpp. По крайней мере сможет продемонстрировать функциональность преподавателю. Если что - обращайся. Либо здесь, либо стучись в аську. Информация в профайле.
Откомпилируй,пожалуйста...
Очень поможешь....
Буду весьма благодарен...
DELETED
Акула пера
5/19/2006, 12:08:45 AM
(Tanzilit @ 18.05.2006 - время: 18:09) Откомпилируй,пожалуйста...
Очень поможешь....
Буду весьма благодарен...
Теперь только завтра.
На RSDN правильно обратился, но там тебе сначала косточки перемоют :) сам не рад будешь.
Очень поможешь....
Буду весьма благодарен...
Теперь только завтра.
На RSDN правильно обратился, но там тебе сначала косточки перемоют :) сам не рад будешь.
DELETED
Акула пера
5/19/2006, 3:22:21 PM
Скачал... Аж слезы на глазах... Ностальгияяяяяя..... В аттачменте скомпилированный этим самым TC...
#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 ) {
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; // Хватит-с..
int i = 0; // На всякий случай...
// Откроем поток для чтения
if( !( stream = fopen( m_szFileName, "r" )) ) {
printf ( "Файл не найден." ); // ... Убей сибя ап стену!
return 0;
};
// Навсегда...
int bIsEof = 1;
while ( bIsEof ) {
// Начинаем-с читать...
buffer = fgetc( stream );
if ( buffer == ' ' || buffer == EOF ) {
if ( buffer == EOF ) {
bIsEof = 0;
};
buffer = 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 < '0' || buffer > '9' ) && buffer != '-' ) || (buffer == '-' && 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 );
};
if ( nNegativeNumbers - i > 0 ) {
fprintf ( stream, "%d ", pNegativeNumbers );
};
};
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) ? pArray = nItem , 1: 0;
};
// Декларация переменных
int* pNewArray = 0;
// Выделяем память для нового массива данных
if ( !(pNewArray = new int) ) {
// Ошибка выделения памяти. Все в сад смотреть на звезды lil'
delete pArray;
return 0;
};
// Переносимся
memcpy ( pNewArray, pArray, ( nSize + 1 ) * sizeof(int) );
delete pArray;
pArray = pNewArray;
// Чуть-чуть задекларируемся
int nInjectionPoint = nSize;
pArray = nItem;
// Наш элемент всплывает вверх
// с помощью простейшей пузырьковой сортировки
while ( nInjectionPoint ) {
if ( pArray < pArray ) {
int nYetAnotherVariable = pArray;
pArray = pArray;
pArray = nYetAnotherVariable;
};
nInjectionPoint--;
};
// Уходим, уходим, уходим....
return nSize+1;
}
};
int main(int argc, char* argv) {
// А аргументики где?
if ( argc < 2 ) {
printf ( "Параметр использования: JustTask имя_файла" );
return 0;
};
// Создаем объект
CMyObject* pObject = new CMyObject ( argv );
if ( pObject ) {
if ( pObject->Convert() ) {
// Все хорошо, все сконвертировалось
};
delete pObject;
};
return 0;
}
#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 ) {
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; // Хватит-с..
int i = 0; // На всякий случай...
// Откроем поток для чтения
if( !( stream = fopen( m_szFileName, "r" )) ) {
printf ( "Файл не найден." ); // ... Убей сибя ап стену!
return 0;
};
// Навсегда...
int bIsEof = 1;
while ( bIsEof ) {
// Начинаем-с читать...
buffer = fgetc( stream );
if ( buffer == ' ' || buffer == EOF ) {
if ( buffer == EOF ) {
bIsEof = 0;
};
buffer = 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 < '0' || buffer > '9' ) && buffer != '-' ) || (buffer == '-' && 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 );
};
if ( nNegativeNumbers - i > 0 ) {
fprintf ( stream, "%d ", pNegativeNumbers );
};
};
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) ? pArray = nItem , 1: 0;
};
// Декларация переменных
int* pNewArray = 0;
// Выделяем память для нового массива данных
if ( !(pNewArray = new int) ) {
// Ошибка выделения памяти. Все в сад смотреть на звезды lil'
delete pArray;
return 0;
};
// Переносимся
memcpy ( pNewArray, pArray, ( nSize + 1 ) * sizeof(int) );
delete pArray;
pArray = pNewArray;
// Чуть-чуть задекларируемся
int nInjectionPoint = nSize;
pArray = nItem;
// Наш элемент всплывает вверх
// с помощью простейшей пузырьковой сортировки
while ( nInjectionPoint ) {
if ( pArray < pArray ) {
int nYetAnotherVariable = pArray;
pArray = pArray;
pArray = nYetAnotherVariable;
};
nInjectionPoint--;
};
// Уходим, уходим, уходим....
return nSize+1;
}
};
int main(int argc, char* argv) {
// А аргументики где?
if ( argc < 2 ) {
printf ( "Параметр использования: JustTask имя_файла" );
return 0;
};
// Создаем объект
CMyObject* pObject = new CMyObject ( argv );
if ( pObject ) {
if ( pObject->Convert() ) {
// Все хорошо, все сконвертировалось
};
delete pObject;
};
return 0;
}
DELETED
Акула пера
5/19/2006, 5:59:11 PM
Будет ошибка при наличии в исходном файле пробела после последнего числа. Появится лишний ноль.
- для чтения можно было использовать fscanf, вышло бы короче
CODE
for(int nYetAnotherNumber; fscanf(stream, "%d", &nYetAnotherNumber) != EOF;)
{
// добавление числа
}
- для изменения размера выделенной под массив памяти есть функция realloc
- для чтения можно было использовать fscanf, вышло бы короче
CODE
for(int nYetAnotherNumber; fscanf(stream, "%d", &nYetAnotherNumber) != EOF;)
{
// добавление числа
}
- для изменения размера выделенной под массив памяти есть функция realloc
DELETED
Акула пера
5/19/2006, 6:58:21 PM
(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 == ' ' || buffer == EOF ) {" напишите "if ( ( buffer == ' ' && i ) || buffer == EOF ) {" и все... Тоже мне, проблема... :)
- для чтения можно было использовать fscanf, вышло бы короче
CODE
for(int nYetAnotherNumber; fscanf(stream, "%d", &nYetAnotherNumber) != EOF;)
{
// добавление числа
}
- для изменения размера выделенной под массив памяти есть функция realloc
Даааа... Вы действительно еще дымитесь... :))
Не было цели "укоротить" или "realloc" использовать. Вы тогда еще про qsort напомните мне, про isdigit и прочая-прочая-прочая... Вообще нужно было даже fprintf и atoi не использовать. Да, можно и укоротить.. Думаю строк до традцати, используя стандартные библиотеки (STL - это на то время совсем не стандарт)... Но зачем? Человек должен и хотя бы понять, как оно все работает. И научиться обрабатывать ошибки, а то получаются всякие неучи... Лишь бы "написать", а там хоть трава не расти...
Не нервничайте, никто не хочет никому ничего доказать. :) А про пробел - ну так вместо "if ( buffer == ' ' || buffer == EOF ) {" напишите "if ( ( buffer == ' ' && i ) || buffer == EOF ) {" и все... Тоже мне, проблема... :)
DELETED
Акула пера
5/20/2006, 12:05:06 AM
Ничего личного, просто заметил небольшую ошибку, вот и сообщил.
Даааа... Вы действительно еще дымитесь... :))
Не понял, что Вы хотели сказать?
Даааа... Вы действительно еще дымитесь... :))
Не понял, что Вы хотели сказать?
tetro
Специалист
5/22/2006, 9:26:25 PM
К слову, так я таки был х лет университеским ассистентом, и скажу, что я лично за Гришино решение вполне вкатал бы баранку с просьбой подойти на беседу. (При том что оно мне вполне нравится).
Есть некий ожидаемый уровень решения для человека. Чел который пишет такие вопросы программирует без-году неделю. Вопрос на уровне курса: "Вдение в программирование" или скажем следующий за ним. У нас это был второй скажем семестр (примерно в это время 2й-3й месяц учебы). А вы тут STL. Хоть и люблю я его.
Это явное решение на уровне человека с заметным х-летним опытом.
Помните была шутка кто как пишет "Hello world!". Так вот это именно типичный senior programmer
Есть некий ожидаемый уровень решения для человека. Чел который пишет такие вопросы программирует без-году неделю. Вопрос на уровне курса: "Вдение в программирование" или скажем следующий за ним. У нас это был второй скажем семестр (примерно в это время 2й-3й месяц учебы). А вы тут STL. Хоть и люблю я его.
Это явное решение на уровне человека с заметным х-летним опытом.
Помните была шутка кто как пишет "Hello world!". Так вот это именно типичный senior programmer
tetro
Специалист
5/22/2006, 9:37:41 PM
Да вдогонку JeyLo по поводу некорректоностей, но в качестве унивеситеского ассистента. Мой типичный ответ, который я давал при раздаче первой домашки: все неточности в формулировках имеете право трактовать как вам более удобно (но консистентно). Часто нет желания писать длинную простыню оговорок и спец. трактовок граничных случаев: получается длиннее, чем решение. Да и человек должен учиться видеть проблемы сам.
DELETED
Акула пера
5/23/2006, 4:29:07 AM
(tetro @ 22.05.2006 - время: 17:26) Это явное решение на уровне человека с заметным х-летним опытом.
Помните была шутка кто как пишет "Hello world!". Так вот это именно типичный senior programmer
Что Вы, я не усложнял совершенно. Все на уровне базовых знаний STL.
Вот если бы замутить итераторы в нужно порядке... Этот паттерн так и просится сюда для обхода элементов списка. Тогда да...
Помните была шутка кто как пишет "Hello world!". Так вот это именно типичный senior programmer
Что Вы, я не усложнял совершенно. Все на уровне базовых знаний STL.
Вот если бы замутить итераторы в нужно порядке... Этот паттерн так и просится сюда для обхода элементов списка. Тогда да...