Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
3 / 3 / 3
Регистрация: 04.04.2013
Сообщений: 247

Вычислить средний балл оценок каждого студента и напечатать их фамилии и средний балл (объединение (union))

12.06.2013, 11:21. Показов 4637. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан список студентов. Общие поля: Ф.И.О., дата рождения, группа, средний балл. Вычислить средний балл оценок каждого студента и напечатать их фамилии и средний балл.
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
#include <stdio.h>
#include <stdlib.h>
#include <clocale>
 
typedef struct stud 
{
    int *arr;
    int cnt;
    char name[BUFSIZ];
} stud_t;
 
int acc(stud_t st)
{
    int i, sum;
    
    for ( i = 0, sum = 0 ; i < st.cnt ; ++i )
        sum += st.arr[i];
    return sum;
}   
 
void mem_free(stud_t *f, stud_t *l)
{
    for ( ; f != l ; ++f )
        free(f->arr);
}       
 
int main(void)
{
    setlocale(0,"rus");
    stud_t *st;
    int cnt, i, j;
    
    printf ("Введите колличество = ");
    scanf ("%d", &cnt);
    
    if ( !(st = (stud_t *) malloc ( sizeof(stud_t) * cnt )) )
    {
        perror ("Ошибка памяти");
        exit(1);
    }
    
    for ( i = 0 ; i < cnt ; ++i )
    {
        printf ("Введите имя[%d]: ", i + 1 );
        scanf ("%s", st[i].name );
        printf ("Введите колличество[%d] баллов = ", i + 1 );
        scanf ("%d", &(st[i].cnt) );
        
        if ( !(st[i].arr = (int *) malloc (sizeof(int) * st[i].cnt )) )
        {
            perror ("Ошибка памяти");
            mem_free(st, &st[i]);
            exit(1);
        }
        for ( j = 0 ; j < st[i].cnt ; ++j )
            scanf ("%d", &(st[i].arr[j]));
    }   
        for ( i = 0 ; i < cnt ; ++i )
            printf ("Среднее %s \t\t = %.2lf\n", st[i].name, (double) acc(st[i]) / st[i].cnt); 
        mem_free(st, st + cnt);
        free(st);
        
        return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.06.2013, 11:21
Ответы с готовыми решениями:

Вычислить средний балл оценок каждого студента и напечатать их фамилии и средний балл
Вычислить средний балл оценок каждого студента и напечатать их фамилии и средний балл.

Вывести средний балл каждого студента и общий средний балл группы
Здравствуйте. Помогите понять, в чем ошибка. Программа не выводит нормально средний бал каждого студента по трем предметам и общий средний...

Вычислить средний балл в каждой группе студентов и определить, какая группа имеет наибольший средний балл
две группы студентов (1-ая -13 человек, 2-ая - 8 человек) сдают экзамен по информатике. Написать программу, вычисляющую, средний балл в...

6
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
12.06.2013, 11:50
структура(struct) и объединение(union) это две абсолютно разные сущности, которые не взаимозаменяемы.
поэтому тема - бред
ты хоть одну книжку по С++ почитай.
0
3 / 3 / 3
Регистрация: 04.04.2013
Сообщений: 247
12.06.2013, 11:53  [ТС]
0_о
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
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <clocale>
#define N 255
 
struct bus_station
{
    int bus_number;
    int place_number;
    float price;
    union tratata 
    {
        int l_m;
        char area[N];
    } tra;
};
 
void main()
{
    setlocale(LC_ALL,"RUS");
    int number,i,sum(0);
    bus_station *st;
    printf("\n Введите количество автобусов: ");
    scanf("%d",&number);
    st=(bus_station*)calloc(number,sizeof(bus_station));
     if(st==NULL)
    {   
        puts("\n Нехватка памяти!!!");
        _getch();
        exit(0);
    }
 
        for (i=0;i<number;i++)
    {
        printf("\n Введите номер автобуса: ");
        scanf("%d",&st[i].bus_number);
        printf(" Введите количество мест в автобусе: ");
        scanf("%d",&st[i].place_number);
        printf(" Введите стоимость проезда: ");
        scanf("%f",&st[i].price);
    
        if (st[i].place_number >=15)
       {
        st[i].tra.l_m=st[i].place_number*0.05;
        printf(" Количество льготных мест: %d\n",st[i].tra.l_m);
        sum+=st[i].tra.l_m;
       }
        else 
        {
            printf(" Укажите список районов по которым проезжает маршрутка\n");
            gets_s(st[i].tra.area,N-1);
            gets_s(st[i].tra.area,N-1);
        }
    }
        if (sum==0)
            printf("\n Льготных мест нет.");
        else
            printf("\n Общее количество льготных мест на всех рейсах=%d",sum);
        
    free(st);
    printf("\n Нажмите любую клавишу...");
    _getch();
}
Вот моя другая рабочая прога
Я лучше промолчу

Добавлено через 58 секунд
Мне кажется что вы не имели с этим дела, так что ...
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
12.06.2013, 11:57
Цитата Сообщение от DRUNY195 Посмотреть сообщение
Мне кажется что вы не имели с этим дела, так что лучше помолчите
мне кажется, это ты понятия не имеешь, что такое union.
Если я не прав, давай скажи, что за бред у тебя написан: какую роль выполняет "union tratata" и вообще в чём отличие структур от union.
Ну же! Ты ж, ё-моё, считаешь, что это одно и тоже! Я уверен!
1
3 / 3 / 3
Регистрация: 04.04.2013
Сообщений: 247
12.06.2013, 12:14  [ТС]
В структуре элементы располагаются в памяти последовательно друг за другом
В объединение позволяет хранить различные типы данных в одном и том пространстве памяти (но не одновременно)

Добавлено через 7 секунд
Объединения образуются во многом подобно структурам

Добавлено через 35 секунд
Объединение может хранить значение типа int, или double, или char. Структура с такими же полями способна хранить все типы одновременно
Объединения могут употребляться в структурах и массивах и наоборот. Способ обращения к члену объединения в структуре (или к члену структуры в объединении) полностью идентичен обращению к элементу вложенной структуры. Объединение можно инициализировать только данными того типа, который имеет его первый элемент.

Добавлено через 2 минуты
union tratata -объединения с дескриптором tratata

Добавлено через 5 минут
чем еще вы хотите поинтерисоваться?

Добавлено через 1 минуту
Надеюсь что кто нибудь ,всетаки даст мне нормальный ответ, который поможет мне переделать
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
12.06.2013, 12:42
это ты в своей тетрадке прочитал всё? А хоть один пример программы, где правильно употребляется union ты видел?
Нет, конечно, доля правды в твоей копипасте есть. Например про то, что объединение хранит данные в одном куске памяти. Но зачем это нужно в твоей программе? Ты же не ответил на вопрос, какую роль выполняет union в данном конкретном примере?
А я скажу какую.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    union tratata 
    {
        int l_m;
        char area[N];
    } tra;
///...
///...
 st[i].tra.l_m=st[i].place_number*0.05;
///...
       }
        else 
        {
            printf(" Укажите список районов по которым проезжает маршрутка\n");
            gets_s(st[i].tra.area,N-1);
}
в поле tra записывается либо строка, либо число. Причём обратно получить сохранённую строку будет почти невозможно, потому что в одних элементах массива эта строка затёрта числом, в других нет. В результате у тебя не массив, а полнейшая каша.
Короче говоря, то, что ты написал не может служить примером! Поищи нормальные примеры употребления union.

Вообще union употребляется относительно редко. По крайней мере реже, чем struct. Основное его применение сводится к выделению отдельных байтов из каких-нибудь переменных.
Например. Есть переменная int. Её размер 4 байта. Нужно вывести значения отдельных байтов этой переменной.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cstdio>
 
union test{
  unsigned char bytes[4];
  int x;
};
int main()
{
    union test item;
    item.x=-155;
    printf("%02x\n%02x\n%02x\n%02x\n", item.bytes[0],item.bytes[1],item.bytes[2],item.bytes[3]);
    return 0;
}
Здесь мы пользуемся тем, что все поля юниона наложены друг на друга. Мы записываем в одно из полей (х) значение целого четырёхбайтового числа, и в поле bytes[4] автоматом оказывается то же самое значение, только преобразованное к типу массива из 4х элементов.
0
3 / 3 / 3
Регистрация: 04.04.2013
Сообщений: 247
12.06.2013, 18:16  [ТС]
Под union мне сказал препод переделать, а я особо с этим не сталкивался

Добавлено через 8 минут
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
структура(struct) и объединение(union) это две абсолютно разные сущности, которые не взаимозаменяемы.
поэтому тема - бред
А с первой прогой как, такое ощущение чтовы считаете что невозможно переделать эту прогу, я не говорю про совместное использоание struct и union, я толком и не понял чему ВЫ возмущены
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.06.2013, 18:16
Помогаю со студенческими работами здесь

Известны результаты сдачи трех экзаменов десятью студентами. Найти средний балл каждого студента и общий средний балл
Известны результаты сдачи трех экзаменов десятью студентами. Найти средний балл каждого студента и общий средний балл. Точность...

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

Найти средний балл каждого студента и общий средний балл
Известны результаты сдачи трех экзаменов десятью студентами. Найти средний балл каждого студента и общий средний балл. Точность...

Найти средний балл каждого студента и общий средний балл
Известны результаты сдачи трех экзаменов десятью студентами. Найти средний балл каждого студента и общий средний балл. Точность среднего...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru