1 | ||||||
Спецификации оператора FORMAT11.05.2018, 14:32. Показов 3732. Ответов 18
Метки нет (Все метки)
Делаю повторитель вывода на экран:
Можно ли это как-то сделать?
0
|
11.05.2018, 14:32 | |
Ответы с готовыми решениями:
18
#define PRINT(format,x) printf("x = %format\n",x) Избыточное копирование объекта при реализации оператора умножения и оператора присваивания Неправильная работа оператора присваивания после работы оператора суммирования Найти матрицу оператора сопряжённого для данного линейного оператора |
18 / 18 / 0
Регистрация: 27.02.2010
Сообщений: 58
|
|
12.05.2018, 09:05 | 2 |
Format (<n>I3)
0
|
12.05.2018, 10:30 [ТС] | 3 |
Не принимает, пишет (в переводе) : - "Ошибка: непредвиденный элемент " < " в строке формата at (1)".
Пробовал с пробелом и без, с запятой и без, со скобками для последующего спецификатора и без, никак не хочет.
0
|
Супер-модератор
|
|
12.05.2018, 11:11 | 6 |
Тогда см. здесь: https://gcc.gnu.org/onlinedocs... sions.html
1
|
12.05.2018, 11:46 [ТС] | 7 |
Спасибо. Но несмотря на то что в тексте написано, что это типа "курче", на самом деле там головоломка какая-то. Как просто задать <n> в "устаревшем" виде.
Я вот эти строки не понимаю WRITE(FMT,'("(I", I0, ")")') N+1 или WRITE(6,"(I" // ADJUSTL(FMT) // ")") INT1 число повторов как я понимаю это n, а где здесь скажем задать формат вещественного числа, например f8.3 ? если у кого-либо есть желание разобрать посимвольно, буду благодарен.
0
|
Супер-модератор
|
||||||
12.05.2018, 12:17 | 8 | |||||
0
|
13.05.2018, 07:48 [ТС] | 11 | |||||
Какой-то убийственный синтаксис, как произведения П. Джеймса. В принцип не могу врубиться, проще написать небольшую программу, чем один такой формат. Как я понял переменную, которую выносим за скобки, мы пишем между запятыми, без кавычек. Буквенные спецификации в кавычках (но почему-то с одной стороны скобка..), каша.
Я пытаюсь создать формат f12.3 с повтором S=5 раз и между выводимыми значениями вставить пробел. Вот что я делаю. Это компилируется, но при выполнении выпадает в осадок (runtime). Что здесь не так?
0
|
Супер-модератор
|
||||||
13.05.2018, 10:03 | 12 | |||||
Какую строку формата ты хочешь в результате получить в FMT? Я не понимаю, что ты хотел написать там. Можешь записать Cи-шным синтаксисом, через sprintf? Я покажу, как это сделать фортрановским.
Добавлено через 19 минут Может, вот это имелось в виду:
",I0," , потому что надо строку завершить, поставить запятую как разделитель параметров, сам параметр, запятую после параметра, и опять открыть форматную строку. В результате получаем: "(",I0,"(f",I0,".",I0,"), 1X)"Ну, и добавляем еще охватывающие все это скобки по синтаксису WRITE: '(тут_полученная_выше_строка)' = '("(",I0,"(f",I0,".",I0,"), 1X)")' Я там выше чуть ошибся: Это не так. Точно так же, как и в Си, задается только тип параметра, и ширина поля для записи, но не порядковый номер. Первый I0 соответствует S, второй I0 - для N, третий - для M.
1
|
18 / 18 / 0
Регистрация: 27.02.2010
Сообщений: 58
|
||||||
13.05.2018, 12:03 | 14 | |||||
У Вас в 10 и 18 строках ошибки.
10 - замените FMT на номер канала. 18 - FMT - уже на своем месте, но не содержит ничего. Добавлено через 13 минут В Интеле работает так
1
|
Супер-модератор
|
||||||
13.05.2018, 12:30 | 15 | |||||
Принимается. Если апострофы заменить на кавычки, а кавычки - на апострофы - то принимается, вот так прекрасно работает код:
разными , а как это будет: внешние - апострофами, внутренние - кавычками, или наоборот - не важно.
1
|
13.05.2018, 12:42 [ТС] | 16 | |||||
Вроде нормально все стало.
Код
1.00000000 2.00000000 3.00000000 4.00000000 5.00000000 (5(f12.3), 1X) 1.000 2.000 3.000 4.000 5.000 Код
1.00000000 2.00000000 3.00000000 4.00000000 5.00000000 (3(f8.2), 1X) 1.00 2.00 3.00 4.00 5.00 Попробовал формат g, работает, но знаки после запятой съедает, вместо 3-х дает 2 или вообще не дает, если число большое
0
|
18 / 18 / 0
Регистрация: 27.02.2010
Сообщений: 58
|
||||||
13.05.2018, 13:29 | 17 | |||||
1
|
13.05.2018, 14:43 [ТС] | 19 | |||||
Yes!
0
|
13.05.2018, 14:43 | |
13.05.2018, 14:43 | |
Помогаю со студенческими работами здесь
19
Придумайте простую программу с использованием условного оператора IF и оператора switch Вызов прегруженного оператора вывода в поток из аналогичного оператора Ошибка в вводе данных из HTML и переносе их в JavaScript, при выполнении оператора IF или оператора swithc Сравнить два целых числа, не используя условного оператора, оператора выбора и так же символов сравнения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |