Как вывести таблицу в си
Хай to ALL. Что-то не могу сообразить, какая должна быть форматирующая строка. Вывод происходит в цикле.
printf(«ЧТО_ТО\n», i1, s1, s2, s3, s4, i2);
ID AUTHOR ALBUM TITLE STYLE YEAR
0 author1 album1 title1 style1 2001
1 author1 album1 title2 style1 2001
2 author2 album2 title1 style2 1999
Что-то вроде этого. Кто подскажет?=)
Сообщение отредактировано: _Denis_ — 08.12.09, 15:21
Сообщ. #2 , 08.12.09, 16:26
Рейтинг (т): 640
\t тебе в помощь
Сообщ. #3 , 08.12.09, 16:33
Рейтинг (т): 268
Читай описание printf, там все подробно описано
%-10s
вывод строки в поле шириной 10 символов, выравнивание по левому краю.
%4d
вывод целого в поле шириной 4 символа с выравниванием по правому краю.
Сообщ. #4 , 08.12.09, 18:57
Рейтинг (т): нет
Cпасибо, то что нужно! Невнимательно читал описание, «%-» как-то пропустил.
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- C/C++: Общие вопросы
- Следующая тема
Как вывести структуру в виде таблицы на СИ?
возникла такая проблема- пытался вывести структуру в виде таблицы, но почему-то не получается.
#include "stdafx.h" #include "stdio.h" #include"Windows.h" #include "locale.h" typedef struct < int year; int ussr; int usa; int eng; int fran; >row; row table[5]; #pragma warning (disable : 4996) int _tmain(int argc, _TCHAR* argv[]) < setlocale(LC_ALL, ""); char *nazva[] = < " Годы ", " СССР ", " США ", " Англия ", " Франция " >; printf("Введите данные: "); for (int i = 0; i for (int i = 0; i system("pause"); return 0; >
Вот собственно говоря код этого чуда, не судите строго, я еще толком не разобрался, что тут да как. Не могу понять как сделать хотя бы приблизительно такой вид у таблицы
Отслеживать
Drunk Withcher
задан 25 ноя 2020 в 17:38
Drunk Withcher Drunk Withcher
21 2 2 серебряных знака 5 5 бронзовых знаков
Задайте ширину для полей вывода. printf(«%10s «, nazva[i]); и так всем. 10 для примера. Можете указать другое значение.
– user361068
25 ноя 2020 в 17:45
Попробовал, стало лучше, но все равно не так как нужно
25 ноя 2020 в 17:53
Что, прям с рамкой?
– user361068
25 ноя 2020 в 17:57
Без рамки, главное чтобы она была такого вида
25 ноя 2020 в 17:59
Шапку (это у вас массив nazva[] ) и строки печатайте в разных циклах.
25 ноя 2020 в 18:00
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
// Здесь, кстати, нужен const const char *nazva[5] = < "Годы", "СССР", "США", "Англия", "Франция" >; // Здесь ввод данных // Выводим шапку таблицы // 5 потому что в nazva лежат 5 строк for (int i = 0; i < 5; i++) < printf("%10s ", nazva[i]); >// Переход на следующую строку printf("\n"); // Выводим данные из массива // ArrSize - количество выводимых структур for (int i = 0; i
Отслеживать
ответ дан 25 ноя 2020 в 18:17
user361068 user361068
помогла константа, но почему-то вывод строк не такой, то есть первый вводимый пользователем элемент(год) выводится в строчку, как и все остальное
25 ноя 2020 в 18:25
Вы вводите сначала года чтоли?
– user361068
25 ноя 2020 в 18:28
вначале вывожу константу, года и все остальное вывожу последовательно
25 ноя 2020 в 18:44
Вы вводите с клавиатуры числа по очереди так: 1928 120 137 94 105 или так: 1928 1940 1950 1955 120?
– user361068
25 ноя 2020 в 18:50
да, сканирую вначале все года, затем данные сср,сша, англии и франции
25 ноя 2020 в 19:06
Cпасибо всем кто пытался помочь в решении моей проблемы. Я его все-таки нашел:
#include "stdafx.h" #include "stdio.h" #include"Windows.h" #include "locale.h" typedef struct < int year, ssr, usa, ang, franz; >dannie; dannie d[5]; #pragma warning (disable : 4996) int _tmain(int argc, _TCHAR* argv) ; int i = 0; printf("Введите года: "); for (i = 0; i < 5; i++) < scanf("%d", &d[i].year); >printf("Введите данные СССР: "); for (i = 0; i < 5; i++) < scanf("%d", &d[i].ssr); >printf("Введите данные США: "); for (i = 0; i < 5; i++) < scanf("%d", &d[i].usa); >printf("Введите данные Англии: "); for (i = 0; i < 5; i++) < scanf("%d", &d[i].ang); >printf("Введите данные Франции: "); for (i = 0; i < 5; i++) < scanf("%d", &d[i].franz); >for (i=0;i <5;i++) < printf("%s\t", nazva[i]); >printf("\n"); for (i=0;i <5;i++) < printf("%4d\t", d[i].year); printf("%4d\t", d[i].ssr); printf("%3d\t", d[i].usa); printf("%6d\t", d[i].ang); printf("%7d\t", d[i].franz); printf("\n"); >printf("\n Производится расчет производительности труда. \n"); float tempra=0, temprf=0; float rascheta, raschetf; for (int i = 0; i < 5; i++) < printf("Год:%d, Англия:%d, Франция:%d\n", d[i].year, d[i].ang, d[i].franz); rascheta =(float) d[i+1].ang / d[i].year * 100; raschetf =(float) d[i].franz / d[i].year * 100; if (rascheta >tempra) < tempra = rascheta; printf("Прирост за %d год составляет(Англия): %f\n", d[i].year, tempra); >else < printf("Прироста за %d год не было(Англия)\n", d[i].year); >if (raschetf > temprf) < temprf = raschetf; printf("Прирост за %d год составляет(Франция): %f\n", d[i].year, temprf); >else < printf("Прироста за %d год не было(Франция)\n", d[i].year); >> float raznica; raznica = temprf - tempra; if (raznica < 0) < -raznica; >printf("Разница: %f\n", raznica); printf("Введите процент роста: "); float P; float tempu; int y[5]; scanf("%f", &P); if (P <=0) < printf("Отрицательного процента роста не бывает\n"); >else < for (i=0; i<5;i++) < tempu = d[i + 1].usa / d[i].usa * 100; if (tempu<=P) < printf("В %d году не превышало\n", d[i].year); >> > system("pause"); return 0; >
Эта работа уже с дополнениями, но суть вывода таблицы заключается в следующем- мы должны спросить каждый элемент таблицы у пользователя в отдельности и занести это в массив структур, как это и было в старой версии, но при этом запоминать не строкой, а переменной массива структур, после чего поэлементно вывести вначале названия таблицы через цикл for, а затем вывести через этот цикл все данные, главное это указать сколько места они будут занимать(К примеру, Года, 4 буквы, то есть когда выводим таблицу вначале выводим заголовок, а после этого тоже в цикле for printf(«%4d», d[i].year); но цикл этим не заканчивается, продолжаем так для всех данных, а затем в конце с новой строки, иначе все данные пойдут строчкой). Еще раз хочу всем сказать огромное спасибо, без вашей помощи я бы не справился)))
Вывод таблицы в консоль?
Можно ли как-то вывести так:
Сейчас довольствуемся этим:
Проблема в том, что хотелось бы сделать некую лесенку снизу и сверху как на первом скриншоте.
- Вопрос задан более трёх лет назад
- 7855 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 2
Копируем символы отсюда (раздел DOS) в строки в программе, главное — правильно расположить все границы и углы.
Ответ написан более трёх лет назад
Нравится 1 5 комментариев
doublench21 @doublench21 Автор вопроса
Немного наверное неправильно выразился. Я хочу сделать что бы следующие блоки чисел были по центру относительно предыдущего блока.
doublench21: на первом скриншоте delta y i и delta^3 y i располагаются как бы между строк. Боюсь, в консоли такое реализовать невозможно. Если презентация настолько важна, можно, например, рассмотреть вариант генерации отчёта в HTML.
doublench21 @doublench21 Автор вопроса
Антон Жилин: Учусь в Ташкентском филиале МГУ. Вот так преподаватель по численным методам хочет что бы я сделал. О том, что так сделать нельзя он не понимает 🙁
doublench21: проработайте сначала все-таки версию адекватности преподавателя. Чтобы вас ему точно не в чем было упрекнуть. Может быть, его устроит просто выравнивание вправо (чтобы десятичные точки были на одной вертикали, псевдографические полоски таблицы и попадание дельт на уровень нижней строчки. Тогда вы сможете с чистым сердцем утверждать, что больше ничего сделать невозможно.
Вряд ли сейчас в институтах учат DOS-овские графические режимы и рисование в них.
doublench21: Только учтите, что не во всех кодировках есть псевдографические символы. Вы делаете консольную программу, а кодировка в консоли может быть выставлена произвольная внешними средствами (chcp).
Например в cp866 (она по умолчанию используется в русской винде в консоли) есть псевдографика, а в cp1251 — нет, но ее то же можно легко использовать. У вас, видимо, добавятся свои кодировки. В общем смотрите сначала таблицу символов для соответствующей кодировки.
Как вывести таблицу в си
Сообщений: 13
Вычислить и вывести таблицу на C++
Вычислить и вывестина экран в виде таблицы значения функции F на интервале от Хнач. до Хкон. сшагом dX.
| 1/ax-b при х+50 и с!=0 |10x/c-4 в остальных случаях
где a,b,c — действительные числа.
Функция F должна принимать действительное значение, если выражение (Ац И Вц) ИЛИ (Вц И Сц) не равно нулю, и целое значение в противном случае. Через Ац,Вц и Сц обозначены целые части значений a,b,c операции И и ИЛИ — поразрядные. Значения a,b,c Xнач., Xкон., dX ввести с клавиатуры.
Последний раз редактировалось MrRifleman; 25.03.2012 в 11:48 .
MrRifleman |
Посмотреть профиль |
Найти ещё сообщения от MrRifleman |
Пользователь
Регистрация: 24.03.2012
Сообщений: 13
Есть такой вот код, не могу найти ошибку!
#include #include #include using namespace std; int main() < float Xn, Xk, dX, a, b, c, F; cout>Xn>> Xk>> dX>> a>> b>> F; printf("------------------------------------\n"); printf("| X | Y |\n"); printf("------------------------------------\n"); for ( float x = Xn; x 0 && c!=0) F=(x-a)/x; else F=(10*x)/(c-4); F=~((int)a | (int)b) & ((int)b | (int)c); if (F==0) printf("|%9.2f |%9.0d |\n" ,x,(int)F); else printf("|%9.2f |%9.2f |\n" ,x,F); > printf("-----------------------------------\n"); cout
MrRifleman |
Посмотреть профиль |
Найти ещё сообщения от MrRifleman |