Форум программистов, компьютерный форум, киберфорум C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C (СИ) обработчик исключений в ассемблере Доброго дня. Есть задача реализовать обработчик исключений на ассемблере, при этом исключение происходит и перехватывается в Си. Исключение любое, например деление на 0. Сам обработчик сделал, но не пойму как передать ему управление в Си. Поковырял signal.h, в моей реализации довольно мало комманд: SIG_ERR, SIG_DFL, SIG_IGN, SIG_HOLD, SIGINT. Нету SIG_FPE, который вроде бы как раз про... https://www.cyberforum.ru/ c-beginners/ thread3141270.html C (СИ) Не выполняется код после while
Здравствуйте! Дана задача: Дана последовательность символов, состоящая из слов. Вывести на экран те слова, которые состоят из того же множества букв, что и первое слово, или сообщение «Нет», если требуемых слов нет. Я решил задачу, но код после while не выполняется. Проверял на двух разных пк и ноутбуке, всё то же самое. В чём может быть причина? Код: #include <stdio.h> #include...
C (СИ) Перемножить дроби и вывести результат в виде обыкновенной дроби в сокращенном виде. Пользователь вводит числитель и знаменатель трех обыкновенных дробей. Перемножить дроби и вывести результат в виде обыкновенной дроби в сокращенном виде. https://www.cyberforum.ru/ c-beginners/ thread3141206.html C (СИ) Вывести разряды данного числа в двоичной системе счисления в обратном порядке https://www.cyberforum.ru/ c-beginners/ thread3141205.html
Пользователь вводит число в десятичной системе счисления. Вывести разряды данного числа в двоичной системе счисления в обратном порядке с номером разряда в формате <номер разряда> <разряд>.
C (СИ) Суммарное количество разрядов данного числа в двоичной и шестнадцатеричной системе счисления.
Пользователь вводит число в десятичной системе счисления. Напишите программу которая посчитает и выведет на экран суммарное количество разрядов данного числа в двоичной и шестнадцатеричной системе счисления. алгоритм евклида
C (СИ) Заполнить массив с клавиатуры произвольной последовательностью чисел без отметок конца ввода https://www.cyberforum.ru/ c-beginners/ thread3141197.html
Есть набор задач, вроде "с клавиатуры вводится произвольная числовая последовательность, определите сколько в последовательности есть чисел, которые больше двух своих соседей". Я не понимаю, как мне заполнить массив этой последовательностью. С клавиатуры строго идёт последовательность чисел через пробелы и ничего более, никакие отметки конца ввода не предусмотрены. Длина последовательности...
C (СИ) Найти в тексте слова, которые начинаются и заканчиваются одной и той же буквой проблема, что последнее слово не выводит, если подходит под условие, как можно решить эту проблему? #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <locale.h> #define array 100 // Функция для проверки, начинается ли слово и заканчивается ли оно одной и той же буквой int checkWord(char word) { https://www.cyberforum.ru/ c-beginners/ thread3141162.html C (СИ) Программа на си
Помогите убрать ошибку. Суть программы, что строчку закидывают в 1 функцию, а там она разбивается по словам в двумерный массив. После каждое слова проверяется 2 функцией на повторяющие буквы в слове. Если эти буквы есть, то слово не выводится. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> char parts; int str_convert(char* s, char parts) { int r = 0; while (*s) { ...
C (СИ) Нужна помощь с задачей! В массиве из n элементов циклически сдвинуть все четные элементы на k влево https://www.cyberforum.ru/ c-beginners/ thread3141103.html
Форумчане, привет! Столкнулся с проблемой: в массиве нужно сдвинуть четные элементы массива на k вправо (полное условие ниже), но оно сдвигается через ж:cry: И даже когда сдвигается через это место, иногда вылазит за массив и выдает примерно - ∞. Условие: В массиве из n элементов циклически сдвинуть все четные элементы на k влево. Нечетные оставить на своих местах (например, k=2:...
C (СИ) Заменить исходные разделители Входные данные: - строка . Разделителями считаются: точка, восклицательный знак, вопросительный знак, двоеточие, пробел. Заменить исходные разделители символом ‘_’. Обязательно использовать функцию strtok. Вот код: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> https://www.cyberforum.ru/ c-beginners/ thread3141070.html
C (СИ) Ошибка. Функция разбирает строку на слова и записывает результат в двумерный массив.
функция разбирает строку на слова (отделены пробелами) и записывает результат в двумерный массив. не понимаю как дописать программу, чтобы строка шла в функцию без ошибок. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> char parts; int str_convert(char* s, char parts) { int r = 0; while (*s) { if (*s != ' ')
C (СИ) Организовать циклическое выполнение вычисления переменной, с возможностью выхода из программы по нажатию Esc https://www.cyberforum.ru/ c-beginners/ thread3141029.html
Тест по СИ, нужно ! Организовать циклическое выполнен
1 / 1 / 0
Регистрация: 03.05.2023
Сообщений: 12
0

Структура с именем ZNAK - C (СИ) - Ответ 17122900

22.11.2023, 21:42. Показов 496. Ответов 10
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Готовлюсь к сессии и задание стоит следующее.

Описать структуру с именем ZNAK, содержащую следующие поля:
- порядковый номер;
- фамилия, имя;
- знак Зодиака;
- дата рождения (массив из трех чисел).

Написать программу, выполняющую следующие действия с помощью
функций:
- ввод с клавиатуры данных в файл, состоящий из элементов типа ZNAK;
записи должны быть упорядочены по датам рождения;
- чтение данных из этого файла и вывод их на экран;
- корректировку данных в файле по номеру записи;
- вывод на экран информации о людях, родившихся под знаком, название
которого введено с клавиатуры, а если таких нет, выдать на дисплей соответствующее сообщение.

Мой код с ошибками выглядит вот так, но не работает. Я буду очень признательна, если Вы подскажете в каком направлении думать и что исправить !

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <locale.h>
 
//--------константы и структуры-------
struct ZNAK {
int number; // порядковый номер
char name[50]; // фамилия, имя
char zodiac[20]; // знак Зодиака
int birthDate[11]; // дата рождения (массив из трех чисел)
};
const int size_ZNAK = sizeof(struct ZNAK);
 
//----------прототип функции-----
void create_file (FILE *f); // запись в файл
void print_file (FILE *f); // вывод файла
void adjust_file (FILE *f); // корректировка данных по номеру записи
void print_zodiac (FILE *f); //вывод на экран информации о людях, родившихся под определенных знаком 
 
//----------основная функция------
int main () {
    setlocale(LC_ALL, "");
    char c;
    // открытие существующего файла для чтения и записи в конец
    FILE *f=fopen("data.txt", "rb+");
    if (!f) {
        // Создание нового файлда для обновления
        f=fopen("data.txt", "wb+");
        if(!f) {
            puts ("Не могу открыть ( создать ) файл\n");
            return 1;
        }
    }
    // Вывод меню и запуск соответствующих функций
    while (1) {
        puts("1 - Запись в файл");
        puts("2- Вывод файла");
        puts("3- Корректировка данных");
        puts("4- Поиск по знаку");
        puts("5- Выход");
        puts("________________");
        puts("Выведите номер пункта меню\n");
        
        c=getchar(); // считывание символа с клавиатуры
        
        switch (c) {
            case '1':
                create_file(f);
                break;
            case '2':
                print_file(f);
                break;
            case '3':
                adjust_file(f);
                break;
            case '4':
                print_zodiac(f);
                break;
            case '5':
                fclose(f);
                return 0;
                
        }
        
    }
}
//----------запись в файл-----
void create_file (FILE *f) {
    struct ZNAK person;
    fseek(f, 0, SEEK_END); // Указатель в конец файла
    while (1) {
        puts ("Введите порядковый номер");
        scanf ("%d", &person.number);
        if (person.number == 0)
        return ;
        puts ("Введите фамилию и имя");
        scanf ("%s", person.name);
        puts ("Введите знак зодиака");
        scanf ("%s", person.zodiac);
        puts ("Введите дату рождения (дд мм гггг):");
        scanf ("%d %d %d", &person.birthDate [0], &person.birthDate[1], &person.birthDate[2]);
        fwrite(&person, sizeof( struct ZNAK), 1,f);
 
    }
}
 
 //----------вывод файла--------
 void print_file (FILE *f) {
    struct ZNAK person;
    int n;
    rewind(f); // Указатель в начало файла
    puts ("________________________________________________________________");
    puts("| Порядковый номер | Фамилия и имя | Знак зодиака | Дата рождения |");
    do {
        n = fread (&person, sizeof( struct ZNAK), 1, f); // чтение структуры из файла
        if (n < 1) 
         break; // если n < 1, то конец файла
        printf ("| %-17d | %-22s | %-13s | %02d.%02d.%04d |\n", person.number, person.name, person.zodiac, person.birthDate[0], person.birthDate[1], person.birthDate[2]);
     }
     while (1);
     puts("_____________________________________");
     puts("Нажмите любую клавишу");
     getchar();
     return ;
     
     
 }
 //------------корректировка файла---------
void adjust_file(FILE *f) {
int targetNumber;
struct ZNAK person;
 
puts("Введите порядковый номер для корректировки:");
scanf("%d", &targetNumber);
 
fseek(f, 0, SEEK_SET); // устанавливаем указатель в начало файла
 
while (fread(&person, sizeof( struct ZNAK), 1, f)) {
if (person.number == targetNumber) {
printf("Введите новые данные для записи с порядковым номером %d:\n", targetNumber);
 
puts("Введите фамилию и имя:");
scanf("%s", person.name);
 
puts("Введите знак Зодиака:");
scanf("%s", person.zodiac);
 
puts("Введите дату рождения (дд мм гггг):");
scanf("%d %d %d", &person.birthDate[0], &person.birthDate[1], &person.birthDate[2]);
 
fseek(f, -sizeof( struct ZNAK), SEEK_CUR); // возвращаемся на начало записи
fwrite(&person, sizeof( struct ZNAK), 1, f); // перезаписываем измененную запись
puts("Данные успешно откорректированы.");
return;
}
}
 
puts("Запись с указанным порядковым номером не найдена.");
}
 
//-------поиск по знаку зодиака----
void print_zodiac(FILE *f) {
char targetZodiac[20];
struct ZNAK person;
int found = 0;
 
puts("Введите знак Зодиака для поиска:");
scanf("%s", targetZodiac);
 
rewind(f); // устанавливаем указатель в начало файла
 
puts("________________________________________________________________");
puts("| Порядковый номер | Фамилия и имя | Знак Зодиака | Дата рождения |");
 
while (fread(&person, sizeof( struct ZNAK), 1, f)) {
if (strcmp(person.zodiac, targetZodiac) == 0) {
found = 1;
printf("| %-17d | %-22s | %-13s | %02d.%02d.%04d |\n", person.number, person.name, person.zodiac,
person.birthDate[0], person.birthDate[1], person.birthDate[2]);
}
}
 
if (!found) {
puts("Записей с указанным знаком Зодиака не найдено.");
}
 
puts("________________________________________________________________");
puts("Нажмите любую клавишу");
getchar();
return;
 
}
 
//---------------------сортировка файла--------------------------
void sort_file(FILE *f) {
fseek(f, 0, SEEK_END); // указатель в конец
long len = ftell(f) / size_ZNAK; // определяем количество записей
 
rewind(f); // указатель в начало
 
// сортировка пузырьком
for (long i = len - 1; i >= 1; i--) {
for (long j = 0; j <= i - 1; j++) {
struct ZNAK person1, person2;
 
fseek(f, j * size_ZNAK, SEEK_SET); // указатель на j-ую запись
fread(&person1, size_ZNAK, 1, f); // читаем запись j в person1
 
fread(&person2, size_ZNAK, 1, f); // читаем след. запись в person2
 
if (person1.birthDate[2] > person2.birthDate[2] ||
(person1.birthDate[2] == person2.birthDate[2] && person1.birthDate[1] > person2.birthDate[1]) ||
(person1.birthDate[2] == person2.birthDate[2] && person1.birthDate[1] == person2.birthDate[1] &&
person1.birthDate[0] > person2.birthDate[0])) {
fseek(f, -2 * size_ZNAK, SEEK_CUR); // указатель на 2 позиции назад
fwrite(&person2, size_ZNAK, 1, f); // сначала записываем person2
fwrite(&person1, size_ZNAK, 1, f); // затем записываем person1
}
}
}
 
puts("Сортировка успешно завершена.");
getchar(); // ожидание ввода
}


Вернуться к обсуждению:
Структура с именем ZNAK C (СИ)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2023, 21:42
Готовые ответы и решения:

Описать структуру с именем ZNAK
Описать структуру с именем ZNAK, содержащую поля: Name - фамилия и имя, ZOD – знак зодиака, DATE –...

Описать структуру с именем ZNAK
Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; •...

Описать структуру с именем ZNAK
1. Описать структуру с именем ZNAK, содержащую следующие поля: -фамилия, имя; -знак Зодиака;...

Описать структуру с именем ZNAK
Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак зодиака;...

Описать структуру с именем ZNAK
Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак зодиака;...

10
22.11.2023, 21:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2023, 21:42
Помогаю со студенческими работами здесь

Описать структуру с именем ZNAK
struct znak { string name; string zodiac; int bday;

Описать структуру с именем ZNAK
Здравствуйте уважаемые программисты. Есть условия задачи: Написать программу,выполняющую...

Описать структуру с именем Znak
Помогите пожалуйста написать программу, никак не могу разобраться со структурами Описать...

Описать структуру с именем znak, содержащую следующие поля:
Описать структуру с именем znak, содержащую следующие поля: - фамилия, имя; - знак Зодиака; -...

Структура с именем Znak
Ребят,выручите пожалуйста,надо написать программу,можно не всю,но главное чтобы было меню с...

Структура с именем ZNAK
Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; •...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru