Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/14: Рейтинг темы: голосов - 14, средняя оценка - 4.93
1 / 1 / 2
Регистрация: 28.11.2010
Сообщений: 30

Передача структуры в функцию

25.12.2011, 16:25. Показов 2765. Ответов 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
#include <stdio.h>
struct Student
{
    char    Name[255];    /* Фамилия студента */
    int     Group;        /* Номер группы */
    float   Ses;          /* Балл успеваемости */
};
int main(int argc, char* argv[])
{
  /* Объявление и инициализация переменных и констант */
    const    MAX_STUDENTS = 8;      /* Определяет количество студентов */
    Student  Stud1[MAX_STUDENTS];
    Student  stTemp;
    bool     is = false;
    /* Запрашиваем ввод данных с клавиатуры */
    for (int i = 0; i < MAX_STUDENTS; i++)
    {
        printf("VVedite zapis' nomer%d:\n\tIm9: ", i);
        gets(Stud1[i].Name); /*Функция gets читает строку из потока стандартного ввода stdin и запоминает ее в буфере buffer*/
        printf("\tGruppa: ");
        scanf("%d", &Stud1[i].Group);
        printf("\tBall: ");
        scanf("%f", &Stud1[i].Ses);
}
    /* Сортировка массива структур Student по среднему значению балла (по возрастанию) */
    for (i = 0; i < MAX_STUDENTS; i++)
    {
        for (int j = i + 1; j < MAX_STUDENTS; j++)
        {
            if (Stud1[i].Ses > Stud1[j].Ses)
            {
                stTemp = Stud1[i];
                Stud1[i] = Stud1[j];
                Stud1[j] = stTemp;
            }
        }
    }
    /* Вывод на экран фамилий студентов и номеров групп, у которых средний балл больше 4 */
    for (i = 0; i < MAX_STUDENTS; i++)
    {
        if (Stud1[i].Ses > 4)
        {
            printf("\n%s iz gruppi nomer%d", Stud1[i].Name, Stud1[i].Group);
            //При наличие хотя бы одного такого студента выставляем флаг 
            is = true;
        }
    }
    // Если не найдено ни одного студента, удовлетворяющего условиям отбора выводим соответствующее сообщение */
    if (!is) printf("\nSdudents s ballom yspevaemosti > 4 otsutstvut");
    return 0;
}
 
/*Описать структуру с именем STUDENT, содержащую следующие поля:
• Фамилия и инициалы;
• Номер группы;
• Успеваемость;
Написать программу, выполняющую следующие действия:
• Ввод с клавиатуры данных в массив, состоящий из 10 структур типа STUDENT;
записи должны быть упорядочены по возрастанию среднего балла;
• Вывод фамилий и номеров групп тех студентов, чей средний балл больше 4.0.
• Если таких студентов нет, вывести соответствующее сообщение. */

Уважаемые форумчане, нужно передать структуру в функцию. Заранее спасибо.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 //Шаблон передачи
struct Name{
....//opisanie str-ry
};
void function (Name (&)[N]);
int main()
{
Name spisok[N];
function(spisok);
return 0;
}
void function (Name(&)[N]){
...
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.12.2011, 16:25
Ответы с готовыми решениями:

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

Передача структуры в функцию
Привет, всем! Помогите чайнику как корректно передать структуру в качестве аргумента в функцию, описанной в отдельном файле. грубо...

Передача структуры в функцию
Написал код самой программы,все работает,а вот как сделать так,чтобы стуктуру передать в функцию не понимаю. #include...

2
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
25.12.2011, 18:11
Для неизвестного заранее количества элементов в массиве:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void function(Name names[], int N);
 
int main()
{
    Name st_names[8];
    function(st_names, 8);
}
 
void function(Name names[], int N)
{
// ...
for(int i=0; i<N; ++i)
    names[i].Ses = 0;
// ...
}
Для известного то же самое, но N передавать уже не требуется.
1
1 / 1 / 2
Регистрация: 28.11.2010
Сообщений: 30
26.12.2011, 20: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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <stdio.h>
#include <iostream.h>
#define N 8
struct Student
{
char Name[255]; 
int Group; 
float Ses; 
};
void vvod(Student (&)[N]);
void sort(Student (&)[N]);
void student(Student (&)[N]);
 
int main()
{
 
Student Stud1[N];
 
 vvod(Stud1);
 sort(Stud1);
 student(Stud1);
 return 0;
}
 
void vvod(Stud (&)[N]){
for (int i = 0; i < N; i++)
{
printf("VVedite zapis' nomer%d:\n\tIm9: ", i);
gets(Stud[i].Name);
printf("\tGruppa: ");
scanf("%d", &Stud[i].Group);
printf("\tBall: ");
scanf("%f", &Stud[i].Ses);
}
}
 
void sort(Stud2(&)[N]){
Student stTemp;
for (i1 = 0; i1 < N; i1++)
{
for (int j = i1+ 1; j < N; j++)
{
if (Stud2[i].Ses > Stud2[j].Ses)
{
stTemp = Stud2[i1];
Stud2[i1] = Stud2[j];
Stud2[j] = stTemp;
}}}}
 
void student(Stud3 (&)[N]){
bool is = false;
 
for (i = 0; i < N; i++)
{
if (Stud3[i].Ses > 4)
{
printf("\n%s iz gruppi nomer%d", Stud3[i].Name, Stud3[i].Group);
 
is = true;
}
}
if (!is) printf("\nSdudents s ballom yspevaemosti > 4 otsutstvut");
}
 
/*--------------------Configuration: 7 - Win32 Debug--------------------
Compiling...
7.cpp
D:\7\7.cpp(25) : error C2065: 'Stud' : undeclared identifier
D:\7\7.cpp(25) : error C2059: syntax error : ')'
D:\7\7.cpp(25) : error C2143: syntax error : missing ';' before '{'
D:\7\7.cpp(25) : error C2447: missing function header (old-style formal list?)
D:\7\7.cpp(37) : error C2065: 'Stud2' : undeclared identifier
D:\7\7.cpp(37) : error C2059: syntax error : ')'
D:\7\7.cpp(37) : error C2143: syntax error : missing ';' before '{'
D:\7\7.cpp(37) : error C2447: missing function header (old-style formal list?)
D:\7\7.cpp(50) : error C2065: 'Stud3' : undeclared identifier
D:\7\7.cpp(50) : error C2059: syntax error : ')'
D:\7\7.cpp(50) : error C2143: syntax error : missing ';' before '{'
D:\7\7.cpp(50) : error C2447: missing function header (old-style formal list?)
Error executing cl.exe.
 
7.obj - 12 error(s), 0 warning(s) */
 
 
Помогите исправить ошибки! Пожалуйста. Очень срочно надо..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.12.2011, 20:56
Помогаю со студенческими работами здесь

Передача структуры в функцию
Пытаюсь реализовать функцию для работы со структурой для комплексного числа. Сама структура: struct complex { float re; float im;...

Передача структуры в функцию
объясните, пожалуйста, что это за передача структуры в некоторые функции программы: void someFunction(NOTE * &amp;Note) ?? Почему...

Передача структуры в функцию
Добрый вечер. Необходимо обеспечить вывод значении элементов структуры в 10-ной и 16-ной системе счисления через функцию. Следовательно...

Передача структуры в функцию
Здравствуйте. Как передать структуру в функцию? void Ekzamen(struct array, int n, int size) { cout &lt;&lt; &quot;Студенты,...

Передача структуры в функцию
Всем добрый день. Есть программа разбитая на файлы. как объвить, определить и вызвать функцию в которую передать значения структуры ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru