Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Разобраться бы ещё с тем, что такое P и R.
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Наверное это какая-то структура объявленная где-то ранее. DC видимо тоже переменная.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

меня раскритиковали :))) пришлось убрать всё сообщение
Последний раз редактировалось ARV Пт дек 23, 2016 12:54:04, всего редактировалось 2 раза.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

ARV писал(а):не ломайте голову :)))
1. 3DC может быть корректным и без запятой, например, #define DC 12
2. P - может быть функцией, возвращающей структуру
3. R так же может быть макросом, например, #define R value-
:)))
вот и живите теперь с этим :)))
Проверил на gcc:

Код: Выделить всё

#define DC 12
#define R value-

struct One
{
	int value;
} one;

int a = 3DC;		// error
int b = one.value-;	// eror
int c = one.R-;		// error
Да, у тебя там еще e- было, это тоже error :)
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Reflector писал(а):Да, у тебя там еще e- было, это тоже error
вот вам делать нефига :)))
исключительно ради вас - сменил подпись :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

как можна сократить данный код ?

Код: Выделить всё

	do{
		fprintf( p_file, "0x%02X,", sin_table[i] );                                                                            // вывод значения массива в файл
	   if( i == 31 || i == 63 || i == 95 || i == 127 || i == 159 || i == 191 || i == 223 || i == 255 ) fprintf(p_file, "\n"); // перевод строки

	} while( ++i != 0 );
Tell Me The Truth
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку

Сообщение Zhuk72 »

Код: Выделить всё

  unsigned char k = 0;  
  do
  {
    fprintf( p_file, "0x%02X,", sin_table[i] ); // вывод значения массива в файл
    if ((++k) == 31) {k = 0; fprintf(p_file, "\n");}   // перевод строки
  } while( ++i != 0 );
Так пойдет?
Последний раз редактировалось Zhuk72 Пт янв 13, 2017 11:01:02, всего редактировалось 1 раз.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4618
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

FreshMan писал(а):как можна сократить данный код ?
Что значит "сократить" ?
Можно его удалить, тогда он сократиться до нуля :)
Поподробнее описывайте задачи, тут всё-таки не экстрасенсы.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

FreshMan писал(а):как можна сократить данный код ?

Код: Выделить всё

do
{
   fprintf( p_file, "0x%02X,", sin_table[i] );
   if((i & 0x1F) == 0x1F) fprintf(p_file, "\n");
} while(++i);
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

FreshMan писал(а):как можна сократить данный код ?

Код: Выделить всё

#define NUM_COUNT   32

int i = 0;
while(i < sizeof(sin_table)){
   fprintf( p_file, "0x%02X, ", sin_table[i] );
   if(!(i % NUM_COUNT)) fprintf(p_file, "\n");
   i++;
}
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ

Сообщение просто КОТ »

Код: Выделить всё

for (int i = 0; i < sizeof(sin_table); i++) {
   fprintf(p_file, "0x%02X, ", sin_table[i]);
   if(!(i % 32)) fprintf(p_file, "\n");}
Осмелюсь предложить... :roll:
Изображение
И ты врёшь!!! © Vladisman
Изображение
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Ещё вариант:

Код: Выделить всё

do{
  fprintf( p_file, "0x%02X,", sin_table[i] ); 
  if(0x1F == i & 0x1F)
    fprintf(p_file, "\n");
} while(++i != 0);
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

принципиальным было предложение заменить длиннющий и не модифицируемый оператор ИЛИ на аналитическое выражение, которое определит длину формируемой строки, все прочие идеи уже носят характер оформительский.

но я хотел еще обратить внимание на то, что лучше всего уйти от "магических чисел", сделав код по-настоящему универсальным, что и попытался показать в своём примере.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ

Сообщение просто КОТ »

Код: Выделить всё

for(int i=0;i<sizeof(table);i++) int r=!(i%32) ? fprintf(p_file,"0x%02X, ",table[i],"\n"):fprintf(p_file,"0x%02X, ",table[i]);
Можно попробовать в одну строчку, кстати... :write:
Изображение
И ты врёшь!!! © Vladisman
Изображение
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

просто КОТ писал(а):Можно попробовать в одну строчку
тогда уж так

Код: Выделить всё

for(int i=-1; ++i<sizeof(table); fprintf(p_file,"0x%02X,%с",table[i], i%NUM_COUNT ? ' ' : '\n'));
:)))

еще чуть-чуть, и будет, как у меня в подписи :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

ARV писал(а):
FreshMan писал(а):как можна сократить данный код ?

Код: Выделить всё

#define NUM_COUNT   32

int i = 0;
while(i < sizeof(sin_table)){
   fprintf( p_file, "0x%02X, ", sin_table[i] );
   if(!(i % NUM_COUNT)) fprintf(p_file, "\n");
   i++;
}
при i=0 происходит перевод строки
Изображение
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ

Сообщение просто КОТ »

Ну... тут проще нулевую выборку скормить в файл вручную. А потом вписать наш шедевр, начиная с первого:

Код: Выделить всё

for(int i=0; ++i<sizeof(table); fprintf(p_file,"0x%02X,%c", table[i], i%NUM_COUNT ? ' ' : '\n'));
Изображение
И ты врёшь!!! © Vladisman
Изображение
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

я бы не сильно гнался за краткостью - всё хорошо в меру.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ

Сообщение просто КОТ »

У меня какой-то пунктик на этом. Перед защитой курсовой последние два дня только и делал, что сидел да код сокращал. В итоге на страничку А4 влез с запасом, хотя там была работа с графикой и клеточные автоматы. :beer:
Изображение
И ты врёшь!!! © Vladisman
Изображение
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

меня тут упрекают за нравоучения... но что делать, если моё мнение как-то идет вразрез с мнением других, а высказаться хочется? уж простите...

я тут прочитал, что есть "спортивное программирование", есть конкурсы на самый "красивый" код (там форматируют текст в виде всяких картинок), на самый короткий, на самый странный (см. мою подпись)... но какое отношение всё это имеет к нормальной жизни?

да, как особый вид искусства - согласен, имеет право на существование. но при постоянном применении это уже смахивает на какое-то отклонение... я стараюсь не злоупотреблять этим.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Ответить

Вернуться в «Разные вопросы по МК»