Как вывести данные в виде таблицы c
Регистрация: 12.12.2019
Сообщений: 3
Вывод массива структур на экран в виде таблицы
Хранение данных необходимо организовать в виде массива
структур. В программе должны быть реализованы следующие функции:
1) Создание новой записи;
2) Вывод массива структур на экран в виде таблицы;
3) Поиск записи по параметру;
4) Удаление записи из массива;
5) Сортировка массива структур с некоторым параметром некоторым параметром
мой код( не роботает, когда вожу уже «nationality» вылетает.
#include #include #include using namespace std; struct person < char* fio; char sex[13]; char nationality[25]; int height; int weight; struct person_date_of_birth < int year; int month; int number; >; person_date_of_birth pdob; int phone_number; struct person_home_adres < int zip_code; char country[20]; char region[20]; char district[20]; char city[20]; char street[20]; int house; int apartment; >; person_home_adres pha; >; void Input(person per[], int n) < for (int i = 0; i < n; i++) < printf("Людина : %d\n", i + 1); printf("Ведіть ФІО людини:"); per[i].fio = new char[55]; cin.get(); cin.getline(per[i].fio, 55); printf("Ведіть стать людини:"); scanf_s("%s\n", per[i].sex); printf("Ведіть національність людини:"); scanf_s("%s\n", per[i].nationality); printf("Ведіть ріст людини:"); scanf_s("%d\n", &per[i].height); printf("Ведіть вагу людини:"); scanf_s("%d\n", &per[i].weight); void Input(person::person_date_of_birth pdob[], int n); printf("Ведіть номер телефону людини:"); scanf_s("%d\n", &per[i].phone_number); void Input(person::person_home_adres pha[], int n); printf("\n"); >> void Input(person::person_date_of_birth pdob[], int n) < for (int i = 0; i < n; i++) < printf("Ведіть рік народження людини:"); scanf_s("%d\n", &pdob[i].year); printf("Ведіть місяць народження людини:"); scanf_s("%d\n", &pdob[i].month); printf("Ведіть число народження людини:"); scanf_s("%d\n", &pdob[i].number); >> void Input(person::person_home_adres pha[], int n) < for (int i = 0; i < n; i++) < printf("Ведіть zip code людини:"); scanf_s("%d\n", &pha[i].zip_code); printf("Ведіть країну людини:"); scanf_s("%s\n", pha[i].country); printf("Ведіть регіон людини:"); scanf_s("%s\n", pha[i].region); printf("Ведіть район людини:"); scanf_s("%s\n", pha[i].district); printf("Ведіть місто людини:"); scanf_s("%s\n", pha[i].city); printf("Ведіть вулицю людини:"); scanf_s("%s\n", pha[i].street); printf("Ведіть будинок людини:"); scanf_s("%d\n", &pha[i].house); printf("Ведіть квартиру людини:"); scanf_s("%d\n", &pha[i].apartment); >> void Output(person per[], int n) < printf("ПІП\tСтать\tНаціональність\tРіст\t\Вага\tДата народження\tНомер телефону\tДомашній адрес\t"); for (int i = 0; i < n; i++) < printf("%c\t%c\t%c\t%d\t%d\t%d\t%d:%d:%d\t%d\t%d%:c%:c%:c%:c%:c%:%d:%d\t", per[i].fio, per[i].sex, per[i].nationality, per[i].height, per[i].weight, per[i].pdob.year, per[i].pdob.month, per[i].pdob.number, per[i].pha.zip_code, per[i].pha.country, per[i].pha.region, per[i].pha.district, per[i].pha.city, per[i].pha.street, per[i].pha.house, per[i].pha.apartment); >> void Free(person per[], int n) < for (int i = 0; i < n; i++) < delete[] per[i].fio; >> int main() < SetConsoleCP(1251); SetConsoleOutputCP(1251); const int n = 10; person mas[n]; int selection; do < printf("\n"); printf("Виберіть потрібну функцію:\n"); printf("1 - Створення нового запису\n"); printf("2 - Виведення масиву структур на екран у вигляді таблиці\n"); printf("3 - Пошук запису за параметром\n"); printf("4 - Видалення запису із масиву\n"); printf("5 - Сортування масиву структур за деяким параметром\n"); printf("0 - Вихід\n"); scanf_s("%d", &selection); switch (selection) < case 1:Input(mas, n); break; case 2:Output(mas, n); break; case 3:(mas, n); break; case 4:(mas, n); break; case 5:(mas, n); break; case 0:Free(mas, n); break; default:printf("Такой функции нет\n"); >> while (selection != 0); system("pause"); >
Вывести данные в виде таблицы

Задание:Разработать программу, вводит фактические данные из таблицы, предоставленной в Вашем варианте индивидуального задания и выводит на экран таблицу, подобную той, что находится в индивидуальном задании (включая заголовок и примечания).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
#іnclude іnt maіn(voіd) \n", name1, tolsh1, ves1, rad1, cena1); prіntf("
Вот пытался делать,помогите исправить.
Преобразование текста в таблицу или таблицы в текст

Чтобы преобразовать текст в таблицу или таблицу в текст, начните с щелчка Показать и скрыть абзац на вкладке Главная . Это позволяет увидеть, как текст разделяется в документе.

Преобразование текста в таблицу
- Чтобы отметить границы столбцов, в которых вы хотите расположить текст, вставьте знаки разделения, например запятые или знаки табуляции.
Примечание: Если в тексте есть запятые, в качестве разделителей используйте знаки табуляции.


В разделе Размер таблицы убедитесь в том, что указанные числа соответствуют требуемому количеству столбцов и строк. В разделе Автоподбор ширины столбцов выберите вид таблицы. Word автоматически подбирает ширину столбцов таблицы. Если вам нужны столбцы другой ширины, выполните одно из перечисленных ниже действий.
| Действие | Параметр |
| Задать ширину всех столбцов | В поле Фиксированная ширина столбца введите или выберите необходимое значение. |
| Изменить размер столбцов в соответствии с шириной текста в каждом столбце | Автоподбор по содержимому |
| Автоматически менять размер таблицы при изменении ширины доступного пространства (например, режим веб-документа или альбомная ориентация) | Автоподбор по ширине окна |

В разделе Разделитель текста выберите использованный в тексте знак разделителя.
Преобразование таблицы в текст

- Выделите строки или таблицу для преобразования в текст.
- На вкладке Макет в разделе Данные выберите Преобразовать в текст.
- В окне Таблицу в текст в разделе Разделитель выберите знак разделения, который будет использоваться вместо границ столбцов. Строки будут разделены знаками абзаца.
- Нажмите кнопку ОК.
Как вывести структуру в виде таблицы на СИ?

возникла такая проблема- пытался вывести структуру в виде таблицы, но почему-то не получается.
#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 1 1 серебряный знак 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); но цикл этим не заканчивается, продолжаем так для всех данных, а затем в конце с новой строки, иначе все данные пойдут строчкой). Еще раз хочу всем сказать огромное спасибо, без вашей помощи я бы не справился)))