Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 19.02.2024
Сообщений: 1

Создать шаблон структуры "Студент"

19.02.2024, 21:22. Показов 1181. Ответов 11
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Создать шаблон структуры "Студент" со следующими полями:
фамилия, имя; группа; курс; дата рождения (структура - день, месяц, год).
Динамически создать массив структур размерностью n >2 и заполнить сведениями с клавиатуры. Вывести сведения обо всех элементах массива структур. Освободить выделенную память при завершении программы.

Примерный код:

C
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
// Структура даты
struct bd
{
    int day;
    char* month;
    int year;
};
// Структура "человек"
struct persone
{
    char* name;     // ФИО
    int height;     // рост
    struct bd date; // дата рождения
};
 
void copy(char* dst, char* src, int length)
{
    for (int i = 0; i<length; i++)
        dst[i] = src[i];
}
 
// Функция ввода строки (передается текст сообщения-подсказки)
char* inpstr(char* message) 
{
    char s[80], * p;            // s - вспомогательный массив для ввода строки 
    printf(message);
    gets_s(s, 80);              
    p = (char*)malloc(sizeof(s)); // выделение памяти под вводимую строку
    copy(p, s, strlen(s) + 1);
    return p;
}
 
// Функция ввода числа
int inpint(char* message) 
{
    int d;
    printf(message);
    scanf_s("%d", &d);
    getchar();
    return d;
}
 
// Главная функция
int main()
{
    struct persone* human;
    int i, n, m;
    char s[40];
    system("chcp 1251");
    system("cls");
    printf("Введите количество человек: ");
    scanf_s("%d", &n);
    getchar();
// выделение памяти под массив структур
    human = (struct persone*)malloc(n * sizeof(struct persone));
    for (i = 0; i < n; i++)
    {
        printf("Введите данные %d человека\n", i + 1);
        human[i].name = inpstr((char*)"Имя: ");
        human[i].height = inpint((char*)"Рост: ");
        human[i].date.day = inpint((char*)"День: ");
        human[i].date.month = inpstr((char*)"Месяц: ");
        human[i].date.year = inpint((char*)"Год: ");
    }   
    printf("Вы ввели следующую информацию:\n");
    for (i = 0; i < n; i++)
    {
        printf("%d. %s - %d см родился %d. %s %d года \n",
            i + 1, human[i].name, human[i].height,
            human[i].date.day, human[i].date.month, human[i].date.year);
    }
    // Освобождение памяти
    for (i = 0; i < n; i++)
    {
        free(human[i].date.month);
        free(human[i].name);
    }
    free(human);
    system("pause");
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.02.2024, 21:22
Ответы с готовыми решениями:

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

Создать файл студент. Из файла студент занесите в отдельный файл записи об отличниках
Помогите пожалуйста, задача в условии

Создать класс "Студент" и классы "Бюджетный студент" и "Коммерческий студент"
Доброго времени суток. Помогите с задачкой. Наследование. Создать класс студент и классы бюджетный студент и коммерческий студент.

11
14 / 12 / 2
Регистрация: 22.02.2024
Сообщений: 36
24.02.2024, 09:56
C
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdio.h>
#include <stdlib.h>
#define N 32
 
typedef struct {
    int day, month, year;
} date;
 
typedef struct {
    char surname[N];
    char name[N];
    char group[N];
    char course[N];
    date data;
} student;
 
void get_students (student *students, size_t size);
void student_info (size_t n, student s);
void put_students (student *students, size_t size);
 
int main (void) {
    int n;
    printf("n = ");
    if (scanf("%d", &n) != 1 || n < 1)
        return 1;
 
    student *students = (student *) malloc(sizeof(student) * n);
    if (students == NULL)
        return 2;
 
    get_students(students, n);      // заполняем данными о студентах
    put_students(students, n);      // выводим на экран
 
    free(students);
    return 0;
}
 
void get_students (student *students, size_t size) {
    static student sample = {
        "surname sample",
        "name sample",
        "group sample",
        "course sample",
        {12, 2, 2002}
    };
    for (size_t i = 0; i < size; i++)
        students[i] = sample;
}
 
void student_info (size_t n, student s) {
    printf("student %lu:\n", n);
    printf("%10s: %s\n", "surname", s.surname);
    printf("%10s: %s\n", "name", s.name);
    printf("%10s: %s\n", "group", s.group);
    printf("%10s: %s\n", "course", s.course);
    printf("%10s: %d/%d/%d\n", "data", s.data.day, s.data.month, s.data.year);
}
 
void put_students (student *students, size_t size) {
    for (size_t i = 0; i < size; i++) {
        size_t n = i + 1;
        student_info(n, students[i]);
        if (n < size)
            puts("");
    }
}
1
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,313
24.02.2024, 10:33
nominant, все хорошо, только n я бы тоже сделал size_t:
C
1
2
3
4
size_t n;
printf("n = ");
if (scanf("%lu", &n) != 1 || n < 1)
    return 1;
0
фрилансер
 Аватар для Алексей1153
6441 / 5635 / 1127
Регистрация: 11.10.2019
Сообщений: 14,982
24.02.2024, 11:16
stake-k26, только %zu для size_t
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
24.02.2024, 11:22
А почему не так?

C
1
int inpint(const char* message)
0
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,313
24.02.2024, 14:11
Алексей1153, это "только" поддерживается далеко не везде, lu - более универсальный модификатор.
0
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,313
24.02.2024, 14:44
Алексей1153, например, в том же dev-cpp мы получим ошибку компиляции, конечно, мы можем прописать пару макросов:

#define printf __mingw_printf
#define scanf __mingw_scanf

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

И вот теперь возникает вопрос. Я понятия не имею на какой платформе и чем читатель форума попытается скомпилировать код, и мне очень повезет, если у него окажется линукс и компилятор не забросает его ошибками. Так зачем мне использовать заведомо проблемный модификатор? Так что тут я согласен с nominant и считаю использование модификатора lu вполне оправданным решением.
Миниатюры
Создать шаблон структуры "Студент"  
1
фрилансер
 Аватар для Алексей1153
6441 / 5635 / 1127
Регистрация: 11.10.2019
Сообщений: 14,982
24.02.2024, 15:03
Цитата Сообщение от stake-k26 Посмотреть сообщение
поддерживается далеко не везде
везде, где не поддерживает, это - фтопку, ибо не по стандарту сделано

Цитата Сообщение от stake-k26 Посмотреть сообщение
lu - более универсальный модификатор.
это спецификатор для другого типа unsigned long
0
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,313
24.02.2024, 15:51
Алексей1153, свою точку зрения я озвучил выше, ваши аргументы нахожу не достаточно весомыми.

Претензии по поводу "не по стандарту сделано" можете смело направлять в мелкософт, на что они вам скорее всего скажут, что это ANSI C не по стандарту Microsoft разработан. В общем, бодайтесь с ними хоть до посинения. Со своей стороны могу пожелать вам лишь всяческих успехов на этом поприще.
0
фрилансер
 Аватар для Алексей1153
6441 / 5635 / 1127
Регистрация: 11.10.2019
Сообщений: 14,982
24.02.2024, 16:19
Цитата Сообщение от stake-k26 Посмотреть сообщение
нахожу не достаточно весомыми
а я то тут при чём ? Я показал, как в стандарте, дальше каждый сам себе решает

к слову, MS-компиляторы нынче - самые соответствующие стандартам

Добавлено через 15 секунд
но, казалось бы, при чём тут MS вообще
0
2487 / 1151 / 709
Регистрация: 25.04.2016
Сообщений: 3,313
24.02.2024, 22:00
Цитата Сообщение от Алексей1153 Посмотреть сообщение
но, казалось бы, при чём тут MS вообще
ну, например, при том, что для size_t они разработали свой модификатор %Iu (первая буква - это заглавная i), вместо того, чтобы поддерживать стандартный %zu.
0
фрилансер
 Аватар для Алексей1153
6441 / 5635 / 1127
Регистрация: 11.10.2019
Сообщений: 14,982
24.02.2024, 22:18
stake-k26, Главное, что стандартный %zu поддерживается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.02.2024, 22:18
Помогаю со студенческими работами здесь

Опишите структуры «Преподаватель» и «Студент»
Убедительно прошу помочь с решением задач: 1.Опишите структуру «Преподаватель». Поля: ФИО, стаж, разряд, количество часов. Функция:...

Создать класс Студент и класс наследник Студент-контрактник
Задание: 1 Разработать программу (С++) решения следующей задачи. Проверить результат на контрольном примере: создать структуру ...

Создать абстрактный класс Stud. Создать производные классы: Абитуриент, Студент, Преподаватель
Доброго времени суток! Помогите с решением задания для кр! Спасибо. Продемонстрируйте работу программы. Каждый разрабатываемый класс...

Создать файл "Студент" занести в отдельный файл записи из файла "Студент",исключив сведения об отчисленных студентах
Создать файл &quot;Студент&quot; занести в отдельный файл записи из файла &quot;Студент&quot;,исключив сведения об отчисленных студентах _______________ ...

Шаблон структуры
Создать шаблон структуры &quot;владелец автомобиля&quot; со следующими полями : фамилия, имя, номер автомобиля, дата постановки на учет(структура -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru