16-ная система
От: Grim  
Дата: 16.12.03 21:53
Оценка: -1 :))
Помгогите бедному студенту! Завтра по C++ зачёт и надо написат программу котороая будет делать переводит десятичное число в шеснадцатеричное. А я в си плохо рублю, и задание ну никак не получается сделать. Сжальтесь, напишите пожалуйста! Завтра зачёт!
Re: 16-ная система
От: folk Россия  
Дата: 16.12.03 22:40
Оценка: 1 (1) +1 :))) :))
Здравствуйте, Grim, Вы писали:

G> Помгогите бедному студенту! Завтра по C++ зачёт и надо написат программу котороая будет делать переводит десятичное число в шеснадцатеричное. А я в си плохо рублю, и задание ну никак не получается сделать. Сжальтесь, напишите пожалуйста! Завтра зачёт!



#include <iostream>

int main()
{
  int num;
  std::cin >> std::dec >> num;
  std::cout << std::hex << num << std::endl;
  return 0;
}
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
Re: 16-ная система
От: Аноним  
Дата: 16.12.03 22:41
Оценка: 6 (1) -1
Здравствуйте, Grim, Вы писали:

G> Помгогите бедному студенту! Завтра по C++ зачёт и надо написат программу котороая будет делать переводит десятичное число в шеснадцатеричное. А я в си плохо рублю, и задание ну никак не получается сделать. Сжальтесь, напишите пожалуйста! Завтра зачёт!



// для unsigned.

#define DEC_SIZEOF_INT 10
const char hexArr[16] = "0123456789ABCDEF";

char* Dec2Hex(unsigned num)
{
   char* str = (char*) malloc(DEC_SIZEOF_INT);
   int i;
   for (i = DEC_SIZEOF_INT - 1; i <= 0; --i)
   {
      str[i] = hexArr[num & 0xF];
      num >>= 4;
   }
   return str;
}

int main()
{
unsigned num;
scanf("%d",num);
printf(Dec2Hex(num));
return 1;
}
Re[2]: 16-ная система
От: ArtDenis Россия  
Дата: 17.12.03 03:43
Оценка:
Здравствуйте, folk, Вы писали:

G>> Помгогите бедному студенту! Завтра по C++ зачёт и надо написат программу котороая будет делать переводит десятичное число в шеснадцатеричное. А я в си плохо рублю, и задание ну никак не получается сделать. Сжальтесь, напишите пожалуйста! Завтра зачёт!

F>
F>#include <iostream>
F>int main()
F>{
F>  int num;
F>  std::cin >> std::dec >> num;
F>  std::cout << std::hex << num << std::endl;
F>  return 0;
F>}
F>


Если преподаватель ожидает увидеть программу размером в десяток листов распечатки, то за такую он точно двояк поставит.
... << RSDN@Home 1.1.0 stable >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[3]: 16-ная система
От: Шахтер Интернет  
Дата: 17.12.03 04:57
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Здравствуйте, folk, Вы писали:


G>>> Помгогите бедному студенту! Завтра по C++ зачёт и надо написат программу котороая будет делать переводит десятичное число в шеснадцатеричное. А я в си плохо рублю, и задание ну никак не получается сделать. Сжальтесь, напишите пожалуйста! Завтра зачёт!

F>>
F>>#include <iostream>
F>>int main()
F>>{
F>>  int num;
F>>  std::cin >> std::dec >> num;
F>>  std::cout << std::hex << num << std::endl;
F>>  return 0;
F>>}
F>>


AD>Если преподаватель ожидает увидеть программу размером в десяток листов распечатки, то за такую он точно двояк поставит.


Странно, мне всегда казалось, что чем короче программа, тем лучше. Меньше слов (ключевых), больше дела!
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[4]: 16-ная система
От: ArtDenis Россия  
Дата: 17.12.03 05:02
Оценка: :))) :)
Здравствуйте, Шахтер, Вы писали:
AD>>Если преподаватель ожидает увидеть программу размером в десяток листов распечатки, то за такую он точно двояк поставит.
Ш>Странно, мне всегда казалось, что чем короче программа, тем лучше. Меньше слов (ключевых), больше дела!

Это с точки зрения программиста. А сточки зрения преподавателя — чем больше программа, тем больше знаний у студента
... << RSDN@Home 1.1.0 stable >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[5]: 16-ная система
От: Шахтер Интернет  
Дата: 17.12.03 05:17
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Здравствуйте, Шахтер, Вы писали:

AD>>>Если преподаватель ожидает увидеть программу размером в десяток листов распечатки, то за такую он точно двояк поставит.
Ш>>Странно, мне всегда казалось, что чем короче программа, тем лучше. Меньше слов (ключевых), больше дела!

AD>Это с точки зрения программиста. А сточки зрения преподавателя — чем больше программа, тем больше знаний у студента


Разве больше? По-моему, это какой-то странный преподаватель!
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[6]: 16-ная система
От: ArtDenis Россия  
Дата: 17.12.03 05:49
Оценка:
Здравствуйте, Шахтер, Вы писали:

AD>>Это с точки зрения программиста. А сточки зрения преподавателя — чем больше программа, тем больше знаний у студента

Ш>Разве больше? По-моему, это какой-то странный преподаватель!

Преподаватели разные бывают. Иногда и такие попадаются.
... << RSDN@Home 1.1.0 stable >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[2]: 16-ная система
От: alexkro  
Дата: 17.12.03 06:04
Оценка:
Здравствуйте, Аноним, Вы писали:

Эх, подставил ты студента своей хакерской программкой! Он же ни на один вопрос по ней ответить не сможет.

PS:
return 1 — это сильно! Ну, и остальная экзотика сюда же.
Re[7]: 16-ная система
От: Denwer Россия  
Дата: 17.12.03 07:11
Оценка: :))
Здравствуйте, ArtDenis, Вы писали:

AD>Здравствуйте, Шахтер, Вы писали:


AD>>>Это с точки зрения программиста. А сточки зрения преподавателя — чем больше программа, тем больше знаний у студента

Ш>>Разве больше? По-моему, это какой-то странный преподаватель!

AD>Преподаватели разные бывают. Иногда и такие попадаются.


В таком случае данную задачу надо как минимум реализовать с использование DirectX, и не забыв про такие модные вещи как SOAP+XML, COM/DCOM, CORBA. Вот это вот тогда точно круто получится.
Re[2]: 16-ная система
От: Vamp Россия  
Дата: 17.12.03 08:34
Оценка: -2 :))
Это... Коде ревью сделаем

А>
А>// для unsigned.

А>//#define DEC_SIZEOF_INT 10
/* заменяем дефайны на константы
я уж не говорю о том, что такой константы нам вообще не надо
*/
const unsigned int dec_sizeof_int 10;

А>//const char hexArr[16] = "0123456789ABCDEF";
/*Зачем выполнять копирование? И тем более прописывать размер массива - пусть компилятор работает за нас!*/
const char* const = "0123456789ABCDEF";

А>char* Dec2Hex(unsigned num)
А>{
А>   char* str = (char*) malloc(DEC_SIZEOF_INT);
/*Не фонтан. Память удалять не там, где выделяли - дурной тон. Не говорю уже о том, 
что результат выделения надо проверять!*/
А>   int i;
А>   for (i = DEC_SIZEOF_INT - 1; i <= 0; --i)
А>   {
А>      str[i] = hexArr[num & 0xF];
А>      //num >>= 4; 
/*не на 4, а на sizeof(int)*/
num >>= sizeof(int); 

А>   }
/*строка не завершена 0. Функции работы со строками работать с ней корректно не будут.*/
А>   return str;
А>}

А>int main()
А>{
А>unsigned num;
А>//scanf("%d",num);
/*Просто ошибка. Нужно адрес передавать.*/
scanf("%d",&num);

А>//printf(Dec2Hex(num));
/*очень дурно. Нельзя печатать строку как есть. А если там управляющие символы?*/
printf("%s", Dec2Hex(num));

/*Так и есть. Память, выделенная под строку, не освобождается.*/
А>return 1;
А>}

Итого - 2 с минусом. Увы.
А>
Да здравствует мыло душистое и веревка пушистая.
Re: 16-ная система
От: Socrat Россия  
Дата: 17.12.03 09:26
Оценка:
Здравствуйте, Grim, Вы писали:

G> Помгогите бедному студенту! Завтра по C++ зачёт и надо написат программу котороая будет делать переводит десятичное число в шеснадцатеричное. А я в си плохо рублю, и задание ну никак не получается сделать. Сжальтесь, напишите пожалуйста! Завтра зачёт!


А как хранится десятичное число? В двоичном виде? Или в виде строки?
Re[3]: 16-ная система
От: Анатолий Широков СССР  
Дата: 17.12.03 09:46
Оценка:
Здравствуйте, Vamp, Вы писали:

А>      //num >>= 4; 
/*не на 4, а на sizeof(int)*/
num >>= sizeof(int);


Что-то вас занесло. Причем здесь sizeof(int)? Деление на 16 и есть сдвиг вправо на 4.
Re[4]: 16-ная система
От: Vamp Россия  
Дата: 17.12.03 09:51
Оценка:
АШ>Что-то вас занесло. Причем здесь sizeof(int)? Деление на 16 и есть сдвиг вправо на 4.
Конечно. Вошел в раж, это называется. Переклинило, я просто как раз на работе смотрел на размер int и с кодом разбирался, в котором используется фиксированное значение.
Да здравствует мыло душистое и веревка пушистая.
Re[3]: 16-ная система
От: LaptevVV Россия  
Дата: 17.12.03 17:40
Оценка:
Здравствуйте, ArtDenis, Вы писали:

G>>> Помгогите бедному студенту! Завтра по C++ зачёт и надо написат программу котороая будет делать переводит десятичное число в шеснадцатеричное. А я в си плохо рублю, и задание ну никак не получается сделать. Сжальтесь, напишите пожалуйста! Завтра зачёт!

F>>
F>>#include <iostream>
F>>int main()
F>>{
F>>  int num;
F>>  std::cin >> std::dec >> num;
F>>  std::cout << std::hex << num << std::endl;
F>>  return 0;
F>>}
F>>


AD>Если преподаватель ожидает увидеть программу размером в десяток листов распечатки, то за такую он точно двояк поставит.

Я б поставил трояк
Это решение проблемы наипростейшим способом. Значит — соображает хоть что-то!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: 16-ная система
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 17.12.03 17:56
Оценка:
Здравствуйте, Grim, Вы писали:

G> Помгогите бедному студенту! Завтра по C++ зачёт и надо написат программу котороая будет делать переводит десятичное число в шеснадцатеричное. А я в си плохо рублю, и задание ну никак не получается сделать. Сжальтесь, напишите пожалуйста! Завтра зачёт!


Под С++ Билдером это ну буквально одна строка


String str = IntToHex(num,8);
Re[2]: 16-ная система
От: Кодт Россия  
Дата: 18.12.03 09:01
Оценка: :))
Здравствуйте, Flamer, Вы писали:

F>Под С++ Билдером это ну буквально одна строка

F>
F>String str = IntToHex(num,8);
F>


На голом Це тоже в одну строку
// эти строки - за пределами собственно решения
char strdec[] = "3735928559";
char strhex[11]; // "0xDEADBEEF\0"

// а вот и оно
sprintf(strhex, "0x%08X", atoi(strdec));
Перекуём баги на фичи!
Re[3]: 16-ная система
От: Shroo  
Дата: 18.12.03 11:25
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Здравствуйте, folk, Вы писали:


G>>> Помгогите бедному студенту! Завтра по C++ зачёт и надо написат программу котороая будет делать переводит десятичное число в шеснадцатеричное. А я в си плохо рублю, и задание ну никак не получается сделать. Сжальтесь, напишите пожалуйста! Завтра зачёт!

F>>
F>>#include <iostream>
F>>int main()
F>>{
F>>  int num;
F>>  std::cin >> std::dec >> num;
F>>  std::cout << std::hex << num << std::endl;
F>>  return 0;
F>>}
F>>


AD>Если преподаватель ожидает увидеть программу размером в десяток листов распечатки, то за такую он точно двояк поставит.


Вот-вот... вот что можно сказать на такой случай:
неделю назад сдаю курсовой... задача стоит так: "написать клиента к орклу, чтобы данные из заданной базы выбирал"
Всем выдали делфёвый компанент из серии TConnectToDataBaseVeryEasyAndDontThinkAtAll и сказали — вот так можно... Ну, народ написал все это на делфяке за 30 минут и сдал.
Приношу я... написал клиента... интерфейс командной строки, коннектится, использую ODBC API и дальше можно туда любой sql писать... супер, мне понравилось.. И что вы думаете... отправили меня как миленького назад, не объяснив даже почему... Вот и стремись после этого к знаниям..

ЗЫ простите за офф-топ
Re[5]: 16-ная система
От: Shroo  
Дата: 18.12.03 11:27
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Здравствуйте, Шахтер, Вы писали:

AD>>>Если преподаватель ожидает увидеть программу размером в десяток листов распечатки, то за такую он точно двояк поставит.
Ш>>Странно, мне всегда казалось, что чем короче программа, тем лучше. Меньше слов (ключевых), больше дела!

AD>Это с точки зрения программиста. А сточки зрения преподавателя — чем больше программа, тем больше знаний у студента


100% даю, что зарубят stl ... как студент говорю... у меня такое сто раз было... вот еще помню потянуло меня на GDI+ в прошлом семестре, когда все обычном api писали... эх... зарубили... что это за фигня сказали..
Re[4]: 16-ная система
От: Алексей Одинцов Россия  
Дата: 18.12.03 11:37
Оценка: -4
Здравствуйте, LaptevVV, Вы писали:
LVV>Я б поставил трояк
LVV>Это решение проблемы наипростейшим способом. Значит — соображает хоть что-то!
стимулируете к неиспользованию включенных в современные средства стандартных возможностей?? %)))

я бы даже такое задание не дал... как впрочем не дал бы и заданий аля "написать бабль сорт" или что ужасней "написать qsort" — нафих??? надо стимулировать к использованию std::sort, а не заставлять людей понапрасну мучацца. если бы у меня работник написал сортировкую массива с использованием своей функции-сортировки бабль сортом, я бы его уволил нахрен тут же...

задания надо давать соответствующие... ну где щас понадобится опыт в написании dec2hex? времена ASM канули в прошлое.
я бы за подобное решение поставил 5. тока это должно было бы быть не с std::cin/std::cout работать а со строками string
... << RSDN@Home 1.1.0 stable >>
Re[4]: 16-ная система
От: Shroo  
Дата: 18.12.03 11:57
Оценка: 1 (1) +1 -1
Здравствуйте, LaptevVV, Вы писали:

LVV>Я б поставил трояк

LVV>Это решение проблемы наипростейшим способом. Значит — соображает хоть что-то!

Я бы пять поставил бы... Ну, коенчно, если бы это была бы одна работа на поток (а не у каждого вторго) ... Объясняю почему: прежде чем я (речь лично обо мне) знал о том, что это можно сделать средствами stl я перелопатил столько кода, что в состоянии написать это и на чистом с... Вывод: человек, докопавшийся до такого способа в состоянии решить эту задачу и другим способом.
Только не надо кидать в меня помидорами, я понимаю, что бывает море исключений из этого правила, но задача преподавателя и есть отсеивать эти исключения... вот ...my humble opinion
Re[5]: 16-ная система
От: LaptevVV Россия  
Дата: 18.12.03 12:04
Оценка: +1
Здравствуйте, Алексей Одинцов, Вы писали:

АО>Здравствуйте, LaptevVV, Вы писали:

LVV>>Я б поставил трояк
LVV>>Это решение проблемы наипростейшим способом. Значит — соображает хоть что-то!
АО>стимулируете к неиспользованию включенных в современные средства стандартных возможностей?? %)))

АО>я бы даже такое задание не дал... как впрочем не дал бы и заданий аля "написать бабль сорт" или что ужасней "написать qsort" — нафих??? надо стимулировать к использованию std::sort, а не заставлять людей понапрасну мучацца. если бы у меня работник написал сортировкую массива с использованием своей функции-сортировки бабль сортом, я бы его уволил нахрен тут же...

Работника и я б уволил. А тут студент, который и так ни хрена не знает, да еще и на халяву проехать за чужой счет хочет.
АО>задания надо давать соответствующие... ну где щас понадобится опыт в написании dec2hex? времена ASM канули в прошлое.
Это смотря где. Мой друг в питере уже 30 лет пишет бортовые системы.
АО>я бы за подобное решение поставил 5. тока это должно было бы быть не с std::cin/std::cout работать а со строками string
Да, и под таким углом можно посмотреть.
Дело явно не в алгоритме перевода. Такие задания даются начинающим студентам, чтоб он освоил целочисленные операции и циклы. Ну и с системами счисления на практике чуть-чуть познакомиться. Это просто развите мозгов. Судя по вопросу, товарищ не знает ничего, то есть АБСОЛЮТНО ничего.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[5]: 16-ная система
От: LaptevVV Россия  
Дата: 18.12.03 12:07
Оценка:
Здравствуйте, Shroo, Вы писали:

S>Здравствуйте, LaptevVV, Вы писали:


LVV>>Я б поставил трояк

LVV>>Это решение проблемы наипростейшим способом. Значит — соображает хоть что-то!

S> Я бы пять поставил бы... Ну, коенчно, если бы это была бы одна работа на поток (а не у каждого вторго) ... Объясняю почему: прежде чем я (речь лично обо мне) знал о том, что это можно сделать средствами stl я перелопатил столько кода, что в состоянии написать это и на чистом с... Вывод: человек, докопавшийся до такого способа в состоянии решить эту задачу и другим способом.

S> Только не надо кидать в меня помидорами, я понимаю, что бывает море исключений из этого правила, но задача преподавателя и есть отсеивать эти исключения... вот ...my humble opinion
Не больше 3-х не заслуживает. Обращаю Ваше внимание на ваши же слова:

прежде чем я (речь лично обо мне) знал о том, что это можно сделать средствами stl я перелопатил столько кода, что в состоянии написать это и на чистом с...

Судя по вопросу, товарищ себя не утруждал такой работой. И хочет быстренько на чужом горбу в рай попасть.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: 16-ная система
От: LaptevVV Россия  
Дата: 18.12.03 12:09
Оценка: :)
Здравствуйте, Shroo, Вы писали:

S> Вот-вот... вот что можно сказать на такой случай:

S> неделю назад сдаю курсовой... задача стоит так: "написать клиента к орклу, чтобы данные из заданной базы выбирал"
S> Всем выдали делфёвый компанент из серии TConnectToDataBaseVeryEasyAndDontThinkAtAll и сказали — вот так можно... Ну, народ написал все это на делфяке за 30 минут и сдал.
S> Приношу я... написал клиента... интерфейс командной строки, коннектится, использую ODBC API и дальше можно туда любой sql писать... супер, мне понравилось.. И что вы думаете... отправили меня как миленького назад, не объяснив даже почему... Вот и стремись после этого к знаниям..
Переходи ко мне на кафедру — переведу на индивидуальный план и дам реальную работу.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: 16-ная система
От: Shroo  
Дата: 18.12.03 12:17
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Не больше 3-х не заслуживает. Обращаю Ваше внимание на ваши же слова:

LVV>

LVV>прежде чем я (речь лично обо мне) знал о том, что это можно сделать средствами stl я перелопатил столько кода, что в состоянии написать это и на чистом с...

LVV>Судя по вопросу, товарищ себя не утруждал такой работой. И хочет быстренько на чужом горбу в рай попасть.

Согласен! Вот я ж и писал, что таких надо отсеить.. А того, кто stl долбил — надо пропускать... кажется, сразу к stl никто не подходит... сначала на c/c++ пишут... хотя... может сейчас все по-другому...
Re[7]: 16-ная система
От: LaptevVV Россия  
Дата: 18.12.03 12:24
Оценка:
Здравствуйте, Shroo, Вы писали:

S> Согласен! Вот я ж и писал, что таких надо отсеить.. А того, кто stl долбил — надо пропускать... кажется, сразу к stl никто не подходит... сначала на c/c++ пишут... хотя... может сейчас все по-другому...

Это как учить. Мы вот сейчас уже вплотную подошли к преподаванию додиеза, поэтому и С++ можем начинать почти с контейнеров вместо массивов. Надо только задания переработать. А то они уж больно упрощаются при использовании стандартной библиотеки. Переработка требует времени.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: 16-ная система
От: Алексей Одинцов Россия  
Дата: 18.12.03 12:33
Оценка:
Здравствуйте, LaptevVV, Вы писали:
LVV>Дело явно не в алгоритме перевода. Такие задания даются начинающим студентам, чтоб он освоил целочисленные операции и циклы. Ну и с системами счисления на практике чуть-чуть познакомиться. Это просто развите мозгов. Судя по вопросу, товарищ не знает ничего, то есть АБСОЛЮТНО ничего.
и всё-таки, я бы дал какое-нить другое задание... просто ко всем заданиям приложил бы простенькую иерархию классов, которую при выполнении надо было бы использовать as is.. например эта система — случайно генерируемый граф, и в нем надо посчитать длину пути от узла 1 до узла 10 — тоже, целочисленные операции и циклы...

или другое задание — сделать трансформацию массива vector<int> по заданной функции. по алгоритмической сложности — то же самое, зато поощряется использование стандартных средств...

а знает он или не знает — всё равно будет понятно при сдаче задания... только сделать при этом уже ничего нельзя (в смысле обучения). только уже оценку выставлять.
... << RSDN@Home 1.1.0 stable >>
Re[8]: 16-ная система
От: Алексей Одинцов Россия  
Дата: 18.12.03 12:33
Оценка:
Здравствуйте, LaptevVV, Вы писали:
LVV>Это как учить. Мы вот сейчас уже вплотную подошли к преподаванию додиеза, поэтому и С++ можем начинать почти с контейнеров вместо массивов. Надо только задания переработать. А то они уж больно упрощаются при использовании стандартной библиотеки. Переработка требует времени.
конечно требует... хорошо хоть перерабатываете
... << RSDN@Home 1.1.0 stable >>
Re[4]: 16-ная система
От: What Беларусь  
Дата: 18.12.03 12:36
Оценка: 1 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>Я б поставил трояк

LVV>Это решение проблемы наипростейшим способом. Значит — соображает хоть что-то!

В прошлом семестре был спецкурс по STL. Так там давали задачи типа:
Посчитать сумму чисел в файле. В теле функции main должна быть 1 строка.

Вот так.
... << RSDN@Home 1.1.0 stable >>
Re[5]: 16-ная система
От: Павел Кузнецов  
Дата: 18.12.03 12:45
Оценка:
Здравствуйте, What, Вы писали:

W> Посчитать сумму чисел в файле. В теле функции main должна быть 1 строка.


А длину строки ограничивали?
Posted via RSDN NNTP Server 1.7 "Bedlam"
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[6]: 16-ная система
От: What Беларусь  
Дата: 18.12.03 12:48
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

W>> Посчитать сумму чисел в файле. В теле функции main должна быть 1 строка.


Строка в его понимании — последовательность символов до ;
... << RSDN@Home 1.1.0 stable >>
Re[6]: 16-ная система
От: What Беларусь  
Дата: 18.12.03 12:50
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

W>> Посчитать сумму чисел в файле. В теле функции main должна быть 1 строка.


В догонку:

Я бы даже сказал 1 выражение, чтобы нельзя было сделать так:


#define X ;

и т.д.
... << RSDN@Home 1.1.0 stable >>
Re[7]: 16-ная система
От: Павел Кузнецов  
Дата: 18.12.03 12:56
Оценка: +1
Здравствуйте, What, Вы писали:

W>>> Посчитать сумму чисел в файле. В теле функции main должна быть 1 строка.

W> В догонку:
W> Я бы даже сказал 1 выражение, чтобы нельзя было сделать так:
W> <...>

Все равно можно будет сделать так:

void f()
{
  // . . .
}

int main()
{
  f();
}


Posted via RSDN NNTP Server 1.7 "Bedlam"
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[8]: 16-ная система
От: What Беларусь  
Дата: 18.12.03 13:00
Оценка: :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Все равно можно будет сделать так:


ПК>
ПК>void f()
ПК>{
ПК>  // . . .
ПК>}

ПК>int main()
ПК>{
ПК>  f();
ПК>}
ПК>


Можно, но так он всё равно не примет
... << RSDN@Home 1.1.0 stable >>
Re[7]: 16-ная система
От: Кодт Россия  
Дата: 18.12.03 13:20
Оценка: 1 (1)
Здравствуйте, What, Вы писали:

W>>> Посчитать сумму чисел в файле. В теле функции main должна быть 1 строка.

W>Строка в его понимании — последовательность символов до ;

Никто не мешает использовать оператор ,

main()
{
  for(int dummy, n=0; scanf("%i", &dummy)==1 || (printf("totally %d numbers\n", n), false); ++n) {}
}

здесь, правда, использован стейтмент for() который содержит внутри ;
Перекуём баги на фичи!
Re[7]: 16-ная система
От: LaptevVV Россия  
Дата: 18.12.03 13:25
Оценка:
Здравствуйте, Алексей Одинцов, Вы писали:

АО>Здравствуйте, LaptevVV, Вы писали:

LVV>>Дело явно не в алгоритме перевода. Такие задания даются начинающим студентам, чтоб он освоил целочисленные операции и циклы. Ну и с системами счисления на практике чуть-чуть познакомиться. Это просто развите мозгов. Судя по вопросу, товарищ не знает ничего, то есть АБСОЛЮТНО ничего.
АО>и всё-таки, я бы дал какое-нить другое задание... просто ко всем заданиям приложил бы простенькую иерархию классов, которую при выполнении надо было бы использовать as is.. например эта система — случайно генерируемый граф, и в нем надо посчитать длину пути от узла 1 до узла 10 — тоже, целочисленные операции и циклы...
Это — во втором семестре. И по другому предмету — дискретная математика. Там графы генерируются. А пока — рановато. Как он классы будет использовать, если циклы не умеет писать?
Математику тоже постепенно изучают — сначала алгебру и анализ, а потом функциональный анализ и дифференциальные уравнения.
АО>или другое задание — сделать трансформацию массива vector<int> по заданной функции. по алгоритмической сложности — то же самое, зато поощряется использование стандартных средств...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[8]: 16-ная система
От: Socrat Россия  
Дата: 18.12.03 13:25
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, What, Вы писали:


W>>>> Посчитать сумму чисел в файле. В теле функции main должна быть 1 строка.

W>>Строка в его понимании — последовательность символов до ;

К>Никто не мешает использовать оператор ,


К>
К>main()
К>{
К>  for(int dummy, n=0; scanf("%i", &dummy)==1 || (printf("totally %d numbers\n", n), false); ++n) {}
К>}
К>

К>здесь, правда, использован стейтмент for() который содержит внутри ;

А еще printf можно использовать в теле цикла
Re[8]: 16-ная система
От: What Беларусь  
Дата: 18.12.03 13:38
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, What, Вы писали:


W>>>> Посчитать сумму чисел в файле. В теле функции main должна быть 1 строка.

W>>Строка в его понимании — последовательность символов до ;

К>Никто не мешает использовать оператор ,


К>
К>main()
К>{
К>  for(int dummy, n=0; scanf("%i", &dummy)==1 || (printf("totally %d numbers\n", n), false); ++n) {}
К>}
К>

К>здесь, правда, использован стейтмент for() который содержит внутри ;

Всё в принципе нормально, но в теле for нужно ещё открыть файл и где-нибудь его закрыть. А с STL всё очень просто и красиво:

std::cout << std::accumulate(std::istream_iterator<int>(std::ifstream("F:\\Temp\\in.txt")), std::istream_iterator<int>(), 0);
... << RSDN@Home 1.1.0 stable >>
Re[8]: 16-ная система
От: Shroo  
Дата: 18.12.03 14:28
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, What, Вы писали:


W>>>> Посчитать сумму чисел в файле. В теле функции main должна быть 1 строка.

W>>Строка в его понимании — последовательность символов до ;

К>Никто не мешает использовать оператор ,


К>
К>main()
К>{
К>  for(int dummy, n=0; scanf("%i", &dummy)==1 || (printf("totally %d numbers\n", n), false); ++n) {}
К>}
К>

К>здесь, правда, использован стейтмент for() который содержит внутри ;

ну, вот так всегда.. (( Это же было задание для студентов!!!! Писал-писал, а тут уже все готово...
Re[9]: 16-ная система
От: Шахтер Интернет  
Дата: 19.12.03 02:21
Оценка: -1
Здравствуйте, What, Вы писали:

W>>>>> Посчитать сумму чисел в файле. В теле функции main должна быть 1 строка.

W>>>Строка в его понимании — последовательность символов до ;
W> <...>
W>с STL всё очень просто и красиво:
W>
W>std::cout << std::accumulate(std::istream_iterator<int>(std::ifstream("F:\\Temp\\in.txt")), std::istream_iterator<int>(), 0);
W>


По-моему, Маразм.
Мне вот интересно, а что будет, если в файле миллион чисел типа 1234567890987654321 ?
А если где-то случайно затесалась буквочка ?
В чем вообще смысл подобных задач? Научиться комбинировать итераторы с алгоритмами?
... << RSDN@Home 1.1.0 stable >>

Удалено избыточное цитирование. -- ПК.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re: 16-ная система
От: Sm0ke Россия ksi
Дата: 21.06.06 11:19
Оценка:
Здравствуйте, Grim, Вы писали:

G> Помгогите бедному студенту! Завтра по C++ зачёт и надо написат программу котороая будет делать переводит десятичное число в шеснадцатеричное. А я в си плохо рублю, и задание ну никак не получается сделать. Сжальтесь, напишите пожалуйста! Завтра зачёт!


#include <stdlib.h>
#include <iostream>
void main()
{
  int num;
  std::cin >> num;
  char buf[40];
  _itoa_s(num, buf, 40, 16);
  std::cout << std::endl << buf << std::endl;
}
Re[5]: 16-ная система
От: CreatorCray  
Дата: 21.06.06 11:38
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Здравствуйте, Шахтер, Вы писали:

AD>>>Если преподаватель ожидает увидеть программу размером в десяток листов распечатки, то за такую он точно двояк поставит.
Ш>>Странно, мне всегда казалось, что чем короче программа, тем лучше. Меньше слов (ключевых), больше дела!

AD>Это с точки зрения программиста. А сточки зрения преподавателя — чем больше программа, тем больше знаний у студента

По мне так препод хочет увидеть реализацию преобразования. И ему не покатит использование готовой реализации.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: 16-ная система
От: CreatorCray  
Дата: 21.06.06 11:38
Оценка: +2
Здравствуйте, Алексей Одинцов, Вы писали:

АО>Здравствуйте, LaptevVV, Вы писали:

LVV>>Я б поставил трояк
LVV>>Это решение проблемы наипростейшим способом. Значит — соображает хоть что-то!
АО>стимулируете к неиспользованию включенных в современные средства стандартных возможностей?? %)))

АО>я бы даже такое задание не дал... как впрочем не дал бы и заданий аля "написать бабль сорт" или что ужасней "написать qsort" — нафих???

Чтоб знали и понимали как это все работает.
АО> надо стимулировать к использованию std::sort, а не заставлять людей понапрасну мучацца. если бы у меня работник написал сортировкую массива с использованием своей функции-сортировки бабль сортом, я бы его уволил нахрен тут же...
даа, хреновый вы руководитель. В некоторых случаях бабл гораздо быстрее std::sort-а. И если использование баблсорта оправдано — то нет никакой причины бухтеть на исполнителя.

АО>задания надо давать соответствующие... ну где щас понадобится опыт в написании dec2hex? времена ASM канули в прошлое.

Вот и растет поколение, у которого шаг в сторону — и капут, приехали. Алгоритмы не знают, знают только как ими пользоваться.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[2]: 16-ная система
От: CreatorCray  
Дата: 21.06.06 11:52
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>
А>...
А>


Среди всех теоретиков нашелся таки один практик. Решпект. Unsafe (как это стало тут модно говорить), зато по теме.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: 16-ная система
От: Vamp Россия  
Дата: 21.06.06 12:24
Оценка:
CC>даа, хреновый вы руководитель. В некоторых случаях бабл гораздо быстрее std::sort-а. И если использование баблсорта оправдано — то нет никакой причины бухтеть на исполнителя.
А мне интересно, в каких случах бабл быстрее q-sort?
Да здравствует мыло душистое и веревка пушистая.
Re[7]: 16-ная система
От: CreatorCray  
Дата: 21.06.06 12:39
Оценка:
Здравствуйте, Vamp, Вы писали:

CC>>даа, хреновый вы руководитель. В некоторых случаях бабл гораздо быстрее std::sort-а. И если использование баблсорта оправдано — то нет никакой причины бухтеть на исполнителя.

V>А мне интересно, в каких случах бабл быстрее q-sort?
Когда надо досортировать почти отсортированные данные.
У нас применяется в проекте — по результатам тестов замена std::sort на рукописный бабл дала заметный прирост.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: правильный вариант
От: pullover  
Дата: 21.06.06 12:39
Оценка:
std::string Dec2Hex(int n)
{
    if (!n)
        return "0";

    const char* pszDict = "0123456789ABCDEF";

    std::string strRes;
    for (; n > 0; n >>= 4)
        strRes = pszDict[n & 0xF] + strRes;

    return strRes;
}
Re[3]: 16-ная система
От: MShura  
Дата: 21.06.06 12:42
Оценка:
А>>//const char hexArr[16] = "0123456789ABCDEF";
V>/*Зачем выполнять копирование? И тем более прописывать размер массива - пусть компилятор работает за нас!*/
V>const char* const = "0123456789ABCDEF";/ccode]


Строка [ccode]
const char hexArr[16] = "0123456789ABCDEF";


Объявляет именованную/инициализированную область памяти размером 16 байт и помещает её в секцию с аттрибутами read-only.

Строка
const char* const = "0123456789ABCDEF";


Объявляет неименованную область памяти размером 17 байт и помещает её в секцию с аттрибутами read-only
Кроме того заводится глобальная переменная 4 байта, которая инициализируется адресом безимянной области и помещается в секцию read-write. Вы можете изменить переменную const и тогда безимянная область памяти станет утерянной.

имхо первый вариант существенно лучше.
Re[8]: 16-ная система
От: Vamp Россия  
Дата: 21.06.06 12:48
Оценка:
CC>Когда надо досортировать почти отсортированные данные.
CC>У нас применяется в проекте — по результатам тестов замена std::sort на рукописный бабл дала заметный прирост.
На первый взгляд не очевидно — бабл как делал n сравнений на каждый проход, так и делает. От того, что массив уже отсортирован, вроде ничего изменяться не должно... если только операция собственно копирования значений не слишком долгая.
Да здравствует мыло душистое и веревка пушистая.
Re[2]: 16-ная система
От: saproj  
Дата: 21.06.06 12:49
Оценка:
Здравствуйте, Sm0ke, Вы писали:

У человека зачет прошел уже 2.5 года назад.
Re[4]: 16-ная система
От: Vamp Россия  
Дата: 21.06.06 12:49
Оценка:
MS>.... Вы можете изменить переменную const

Это как, интересно?
Да здравствует мыло душистое и веревка пушистая.
Re[5]: 16-ная система
От: MShura  
Дата: 21.06.06 13:14
Оценка:
MS>>.... Вы можете изменить переменную const

V>Это как, интересно?


Ту ошибку которую вы совершили в коде

А>//const char hexArr[16] = "0123456789ABCDEF";
/*Зачем выполнять копирование? И тем более прописывать размер массива - пусть компилятор работает за нас!*/
const char* const = "0123456789ABCDEF";


Можно трактовать как

const char* hexArr = "0123456789ABCDEF";


или как

const char* const hexArr = "0123456789ABCDEF";


Я трактовал Вашу ошибку как первый вариант.
Имя переменной конечно не может быть const, но поскольку в оригинальном сообщении вообще нет имени, в моем предложении которое вы цитировали под "переменной const" следует читать "переменную которая должна стоять на месте const"
Re[9]: 16-ная система
От: CreatorCray  
Дата: 21.06.06 13:32
Оценка:
Здравствуйте, Vamp, Вы писали:

CC>>Когда надо досортировать почти отсортированные данные.

CC>>У нас применяется в проекте — по результатам тестов замена std::sort на рукописный бабл дала заметный прирост.
V>На первый взгляд не очевидно — бабл как делал n сравнений на каждый проход, так и делает. От того, что массив уже отсортирован, вроде ничего изменяться не должно... если только операция собственно копирования значений не слишком долгая.
Прирост получается на достаточно специфическом наборе данных. Более точно не скажу — нету сення того чела который тот код писал. Юзается при отрисовке большого кол-ва прозрачных частиц.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: 16-ная система
От: Tumypka  
Дата: 22.06.06 14:26
Оценка: 1 (1)
Здравствуйте, Vamp, Вы писали:

CC>>Когда надо досортировать почти отсортированные данные.

CC>>У нас применяется в проекте — по результатам тестов замена std::sort на рукописный бабл дала заметный прирост.
V>На первый взгляд не очевидно — бабл как делал n сравнений на каждый проход, так и делает. От того, что массив уже отсортирован, вроде ничего изменяться не должно... если только операция собственно копирования значений не слишком долгая.

quick sort — далеко не всегда идеальный вариант. Другой пример его медленной работы — сортировка массива состоящего из больших отсортированных кусков. Смотрите внимательней на его алгоритм.
Хотя за использование bubble sort я бы всё-таки уволил (может и не уволил бы, но за нежелание помимо quicksort'a и бабла вспомнить какой-нибудь ещё алгоритм наказать следует).
Для маленьких массивов можно применять insertion sort (развитие бабла), для тех что покрупнее — либо сортировать quick sort'ом наоборот (то есть именить функцию сравнения на обратную), либо использовать какой-то другой алгоритм. Либо вообще всегда использовать алгоритмы с фиксированной сложностью, например — heapsort.

Когда я имел дело с данными в несколько миллионов елементов, простой quick sort проседал на полтора часа (а может полчаса, точно не помню, но очень на много); heapsort ~ 20 секунд. Переделанный quicksort ~15 секунд.

И именно поэтому алгоритмы всё-таки надо изучать.

Тимур
Re[10]: 16-ная система
От: Vamp Россия  
Дата: 22.06.06 14:38
Оценка:
С тем, что Вы написали, спорить не приходится. Я спрашивал именно о пузырьке и как он может быть быстрее q-сорта.
Да здравствует мыло душистое и веревка пушистая.
Re[3]: 16-ная система
От: __SPIRIT__ Россия  
Дата: 29.06.06 11:56
Оценка: :)
Здравствуйте, saproj, Вы писали:

S>Здравствуйте, Sm0ke, Вы писали:


S>У человека зачет прошел уже 2.5 года назад.


Похоже писалось на случай если допса у человека затянулась
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: 16-ная система
От: Evgeniy13 Россия  
Дата: 03.07.06 15:15
Оценка: +1
к нам бы тебя даже на работу не взяли бы... не то, чтобы увольнять...
Не все в этом мире можно выразить с помощью нулей и единиц...
Re[11]: 16-ная система
От: cures Россия cures.narod.ru
Дата: 04.07.06 16:43
Оценка: 2 (1) +1
V>С тем, что Вы написали, спорить не приходится. Я спрашивал именно о пузырьке и как он может быть быстрее q-сорта.

Стандартный вариант пузырька делает не жёстко заданные n-1 проходов, а выполняет проходы до тех пор, пока делается хотя бы одна перестановка. Если данные уже почти отсортированы, т.е. все элементы находятся от своих правильных мест не далее чем на k позиций, то он потребует порядка k*n операций, а не n*log(n), как квик в лучшем случае (и в среднем), а хип — в худшем. Соответственно, если n~=2^25, а k~=5, то получим выигрыш в 5 раз.
Re[4]: 16-ная система
От: Аноним  
Дата: 05.07.06 05:13
Оценка:
Здравствуйте, Shroo, Вы писали:


S> Приношу я... написал клиента... интерфейс командной строки, коннектится, использую ODBC API и дальше можно туда любой sql писать... супер, мне понравилось.. И что вы думаете... отправили меня как миленького назад, не объяснив даже почему... Вот и стремись после этого к знаниям..


Для Оракла лучше OCI пользовать, уж очень ODBC драйвера к нему кривы и убоги. А OCI всвязке с OTL (Oracle Template Library от нашего соотечественника) это просто самолёт!
Re[2]: 16-ная система
От: Stoune  
Дата: 20.10.06 14:49
Оценка:
Здравствуйте, folk, Вы писали:

F>Здравствуйте, Grim, Вы писали:


G>> ........ Сжальтесь, напишите пожалуйста! Завтра зачёт!


F>
F>#include <iostream>

F>int main()
F>{
..............
F>  std::cout << std::hex << num << std::endl;
..................
F>}
F>


Я обычно уточняю что функцию перевода студент должен сделать самостоятельно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: 16-ная система
От: remark Россия http://www.1024cores.net/
Дата: 20.10.06 17:30
Оценка:
Здравствуйте, Алексей Одинцов, Вы писали:

АО>если бы у меня работник написал сортировкую массива с использованием своей функции-сортировки бабль сортом, я бы его уволил нахрен тут же...



А что бы ты сделал с сотрудником, который не может написать функцию dec2hex()?



1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[9]: Раз уж подняли тему...
От: Roman Odaisky Украина  
Дата: 21.10.06 08:04
Оценка:
Здравствуйте, What, Вы писали:

W>Всё в принципе нормально, но в теле for нужно ещё открыть файл и где-нибудь его закрыть. А с STL всё очень просто и красиво:

...и неправильно:

W>
W>std::cout << std::accumulate(std::istream_iterator<int>(std::ifstream("F:\\Temp\\in.txt")), std::istream_iterator<int>(), 0);
W>


template <class T, class charT = char, class traits = char_traits<charT>, class Distance = ptrdiff_t>
class istream_iterator: public iterator<input_iterator_tag, T, Distance, const T*, const T&>
{
public:
    typedef charT char_type;
    typedef traits traits_type;
    typedef basic_istream<charT,traits> istream_type;
    istream_iterator();
    istream_iterator(istream_type& s);
    istream_iterator(const istream_iterator<T,charT,traits,Distance>& x);
    ~istream_iterator();
    . . .
};


Есть хитрый способ это обойти:
std::cout << std::accumulate(std::istream_iterator<int>(std::ifstream("F:/Temp/in.txt").ignore(0)), std::istream_iterator<int>(), 0);
(пойдет любой член, возвращающий istream&).
До последнего не верил в пирамиду Лебедева.
Re[4]: 16-ная система
От: Roman Odaisky Украина  
Дата: 21.10.06 08:17
Оценка:
Здравствуйте, MShura, Вы писали:

MS>Строка
MS>const char hexArr[16] = "0123456789ABCDEF";
MS>


MS>Объявляет именованную/инициализированную область памяти размером 16 байт и помещает её в секцию с аттрибутами read-only.


Какая секция?! Какие атрибуты?! Компилировать-то пробовал?

Change: In C++, when initializing an array of character with a string, the number of characters in the string (including the terminating ’\0’) must not exceed the number of elements in the array. In C, an array can be initialized with a string even if the array is not large enough to contain the string terminating ’\0’
Example:

char array[4] = "abcd"; // valid C, invalid C++

Rationale: When these non-terminated arrays are manipulated by standard string routines, there is potential for major catastrophe.
Effect on original feature: Deletion of semantically well-defined feature.
Difficulty of converting: Semantic transformation. The arrays must be declared one element bigger to contain the string terminating ’\0’.
How widely used: Seldom. This style of array initialization is seen as poor coding style.

До последнего не верил в пирамиду Лебедева.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.