Как вывести структуру в виде таблицы на СИ?
возникла такая проблема- пытался вывести структуру в виде таблицы, но почему-то не получается.
Вот собственно говоря код этого чуда, не судите строго, я еще толком не разобрался, что тут да как. Не могу понять как сделать хотя бы приблизительно такой вид у таблицы 
Cпасибо всем кто пытался помочь в решении моей проблемы. Я его все-таки нашел:
Эта работа уже с дополнениями, но суть вывода таблицы заключается в следующем- мы должны спросить каждый элемент таблицы у пользователя в отдельности и занести это в массив структур, как это и было в старой версии, но при этом запоминать не строкой, а переменной массива структур, после чего поэлементно вывести вначале названия таблицы через цикл for, а затем вывести через этот цикл все данные, главное это указать сколько места они будут занимать(К примеру, Года, 4 буквы, то есть когда выводим таблицу вначале выводим заголовок, а после этого тоже в цикле for printf("%4d", d[i].year); но цикл этим не заканчивается, продолжаем так для всех данных, а затем в конце с новой строки, иначе все данные пойдут строчкой). Еще раз хочу всем сказать огромное спасибо, без вашей помощи я бы не справился)))
Making a table with printf in c++
Weekly Payroll:
Name. Title. Gross. Tax. Net
Ebenezer Scrooge Partner 250.00 ..62.25 .187.75
Bob Cratchit . Clerk . 15.00 . 2.00 ..13.00
This is what my code looks like for this part.
I have the first part of the table(the name part), but after that I dont know now to do the rest of the table. Can anyone help me?
4 Answers 4
You can use printf with left-justify flag (-).
Here is a sample program:
The most obvious question is: why use printf, when other tools are more adapt? Another question, often forgotten, is what is the (final) output medium? If the text is going to end up on a printer or in a text box in a windowing system, you may have your work cut out for you. The fonts on such systems are rarely fixed width, so you’ll have to take into account the width of the individual characters. For output to a printer, I would suggest outputting LaTeX and then postprocessing it. For outputting to a window, the library you’re using probably has some sort of table component which will do the formatting for you.
If you’re outputing to some fixed width font device—a teletyp, for example, then you can either use iostream manipulators or user defined types. (There’s no way to do this cleanly with printf —you need iostreams.) Abstractly speaking, defining types like Name , Title and MonitaryAmount is the cleanest solution. In which case, you just define an appropriate << operator for the type. Using a user defined type for name and title, instead of just std::string , may be overkill, however, and the manipulator approach may be preferred. (In a very large application, where the separate types would be justified, you’re likely to need output in different contexts, and want manipulators to specify them as well.)
In the simplest solution, you could get by with just two manipulators: TextField and MoneyField : each manipulator would take the field width as an argument to the constructor, and set the appropriate format fields in its << operator, e.g.:
(Practically speaking, it’s probably better to use a class for Money. You’ll want special rounding rules for multiplication, for example; if you’re calculating tax, in fact, you’ll probably need to use some sort of decimal type, rather than double , in order to meet legal requirements as to how it is calculated.)
Anyway, given the above manipulators, you can write something like:
(This assumes that you’ve cleaned up the rest to make it idiomatic and maintainable C++ as well.)
4.2. Вычисление и вывод данных в виде таблицы
Простейшими примерами применения операторов цикла на практике являются программы вычисления значений функций при изменяющихся значениях аргумента и вывода данных в виде таблиц с заголовками. В качестве аргумента обычно выступает
Ю. Е. Алексеев, А. В. Куров «Практикум по программированию на языке C в среде VS C++» Оглавление
переменная, изменяющаяся в цикле по требуемому закону. Она может быть как дополнительным, так и основным параметром в циклах for , while и do while .
При работе с вещественными данными необходимо иметь в виду, что их значения могут представляться с ошибкой, что эти ошибки могут зависеть от типа переменных, накапливаться при выполнении арифметических операций и приводить к непредусмотренному программистом выполнению программы. Рассмотрим два фрагмента программы вывода таблицы значений аргумента и функции, где аргумент — дополнительный параметр в цикле является вещественной переменной с именем Х:
Как стать программистом
Это моя личная ссылка-приглашение на Stepik для вас. Регистрируясь по этой ссылке, записываясь на курсы и решая задачи, Вы помогаете автору данного сайта принять участие в конкурсе платформы Stepik! Подробности конкурса здесь: https://vk.cc/75rKuS
понедельник, 17 октября 2011 г.
Занятие 3. Ввод и вывод данных.Справочники функций. Уроки программирования для чайников. Язык Си.
Добрый день уважаемые читатели.
В данном уроке мы подробно остановимся на вводе и выводе данных. Узнаем что такое стандартный поток ввода и вывода. Поговорим о том, зачем нужна стандартная библиотека функций. А так же научимся работать со справочниками по функциям. Это очень полезное умение. Рассмотрим на простом примере, который как раз будет в тему нашего урока.
Прочитайте улучшенную версию этого урока «Ввод/вывод в языке Си».
- Дополнительные материалы
- Задачи с автоматической проверкой решения
- Исследовательские задачи
Пусть нам требуется ввести с клавиатуры в программу какое-то число. Дело в том, что в языке нет никаких специальных конструкций, определяющих ввод-вывод. Если вы внимательно читали первый урок, то я уже вскользь упоминал об этом (помните для того чтобы вывести на экран строчку, нам надо было включить в программу заголовочный файл stdio.h) . Так вот, в самом языке нет даже такой операции как возведение в степень числа, или вычисление квадратного корня. Но обычно, сам по себе язык и не используется. Вместе с языком программирования поставляется и стандартная библиотека функций. Это набор файлов с расширением *.h, в которых описаны различные дополнительные функции, которые любая программа может использовать. Как вы уже догадались, функции ввода вывода описаны в файле stdio.h. Помимо стандартной библиотеки функции, программисты пишут и свои библиотеки функции, и еще существует много других библиотек функций, написанных для какого-то определенного круга задач. Таким образом, разных готовых функций для языка Си очень-очень много, и знать их все вряд ли возможно, а учитывая то, что знать надо не только название функции, но и какие данные она принимает, какие возвращает, что она делает, то это становится почти невозможно задачей. Но к счастью, этого и не требуется. Для стандартной библиотеки функции существуют куча различных справочников и там подробно описано всё это. И вот именно работать с этими справочниками мы сегодня научимся. Так, приступим же.
Стандартная библиотека включает несколько функций для чтения и записи одного символа. Простейшие из них мы сегодня и рассмотрим. Функции getchar и putchar.
Теперь пришло время научиться работать со справочником функции. В интернете можно найти много различных справочников, можно купить так же справочник в книжном магазине, часто в конце различных учебников по программированию есть небольшие справочники по функциям стандартной библиотеки. В общем, не суть важно, какой использовать, содержание везде примерно одинаковое. Для примера используем справочник сайта CodeNet. Никакого скрытого смысла тут нет, просто если в google набрать «справочник по функциям С» то он будет на первой позиции. Выберем там функцию getchar. Вот её описание: