Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
staccy
0 / 0 / 1
Регистрация: 26.12.2016
Сообщений: 45
1

Расставить указатели

03.05.2017, 07:25. Просмотров 830. Ответов 1

Разработайте программу, которая будет вычислять и печатать оценки за тему для трех студентов.
В программе должны быть реализованы, как минимум, следующие функции
- inputData для организации ввода исходных данных;
- average для вычисления среднего арифметического;
- calculateTestMark для вычисления оценки за тест по проценту правильных ответов в каждой попытке;
- calculateLabMark для вычисления оценки за лабораторную работу по оценкам за задачи;
- printTable для печати отчетной таблицы.
Программа работает, но нужна помощь в правильной расстановке указателей
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
#include <stdio.h> 
#include <windows.h> 
#include <math.h> 
#include <locale.h> 
 
void inputData(int &l1, int &l2, int &P1, int &P2) //ввод данных 
{ 
setlocale(LC_ALL, "Russian"); 
printf("Оценка за первую задачу:\n"); 
scanf("%d", &l1); 
printf("Оценка за вторую задачу:\n"); 
scanf("%d", &l2); 
printf("Процент правильных ответов в тесте(первая попытка):\n"); 
scanf("%d", &P1); 
printf("Процент правильных ответов в тесте(вторая попытка):\n"); 
scanf("%d", &P2); 
} 
int calculateTestMark(int P1, int P2, int &tmark) //тест 
{ 
if (P1 > P2) 
P2 = P1; 
else 
P1 = P2; 
 
if (P1 >= 90) 
tmark = 5; 
if (P1 >= 70 && P1 < 90) 
tmark = 4; 
if (P1 >= 50 && P1 < 70) 
tmark = 3; 
if (P1 < 50) 
tmark = 2; 
 
return tmark; 
 
} 
float calculateLabMark(int l1, int l2, float &lmark) //лабораторная 
{ 
lmark = (l1*1.0 + l2) / 2; 
return lmark; 
} 
float average(float &av, float lmark, int tmark) //тема 
{ 
av = (tmark*1.0 + lmark) / 2; 
return av; 
} 
void printTable(int st1_l1, int st1_l2, int st1_P1, int st1_P2, int st1_tmark, 
float st1_lmark, float st1_av, 
int st2_l1, int st2_l2, int st2_P1, int st2_P2, int st2_tmark, float 
st2_lmark, float st2_av, 
int st3_l1, int st3_l2, int st3_P1, int st3_P2, int st3_tmark, float 
st3_lmark, float st3_av) //таблица 
{ 
setlocale(LC_ALL, "Russian"); 
printf("№\tЗад.1\tЗад.2\tТест 1\tТест 2\tЛаб.раб. Тест\tТема\n"); 
printf("1\t%d\t%d\t%d\t%d\t%.0f\t%d\t%.0f\n", st1_l1, st1_l2, st1_P1, st1_P2, ceil(st1_lmark), st1_tmark, ceil(st1_av)); 
printf("2\t%d\t%d\t%d\t%d\t%.0f\t%d\t%.0f\n", st2_l1, st2_l2, st2_P1, st2_P2, ceil(st2_lmark), st2_tmark, ceil(st2_av)); 
printf("3\t%d\t%d\t%d\t%d\t%.0f\t%d\t%.0f\n", st3_l1, st3_l2, st3_P1, st3_P2, ceil(st3_lmark), st3_tmark, ceil(st3_av)); 
printf("Среднее\t%.1f\t%.1f\t%.0f\t%.0f\t%.1f\t%.1f\t%.0f\n", (st1_l1 + st2_l1 + st3_l1)*1.0 / 3, (st1_l2 + st2_l2 + st3_l2)*1.0 / 3, (st1_P1 + st2_P1 + st3_P1)*1.0 / 3, (st1_P2 + st2_P2 + st3_P2)*1.0 / 3,(st1_lmark + st2_lmark + st3_lmark)*1.0 / 3, (st1_tmark + st2_tmark + st3_tmark)*1.0 / 3, ceil((st1_av + st2_av + st3_av) / 3)); 
} 
void main() 
{ 
int P1, P2, l1, l2;//входные данные(тест и задачи) 
int tmark; //результат теста 
float av, lmark; //средняя, оценка за лабораторную 
 
int st1_l1, st1_l2, st1_P1, st1_P2, st1_tmark; //переменные для 1 студента 
int st2_l1, st2_l2, st2_P1, st2_P2, st2_tmark; //переменные для 2 студента 
int st3_l1, st3_l2, st3_P1, st3_P2, st3_tmark; //переменные для 3 студента 
float st1_lmark, st1_av; //переменные для 1 студента 
float st2_lmark, st2_av; //переменные для 2 студента 
float st3_lmark, st3_av; //переменные для 3 студента 
 
/*действия для 1 студента*/ 
inputData(l1, l2, P1, P2);//ввод данных 
st1_tmark = calculateTestMark(P1, P2, tmark);//тест 
st1_lmark = calculateLabMark(l1, l2, lmark);//лабораторная 
st1_av = average(av, lmark, tmark);//среднее 
st1_l1 = l1; 
st1_l2 = l2; 
st1_P1 = P1; 
st1_P2 = P2; 
 
/*действия для 2 студента*/ 
inputData(l1, l2, P1, P2);//ввод данных 
st2_tmark = calculateTestMark(P1, P2, tmark);//тест 
st2_lmark = calculateLabMark(l1, l2, lmark);//лабораторная 
st2_av = average(av, lmark, tmark);//среднее 
st2_l1 = l1; 
st2_l2 = l2; 
st2_P1 = P1; 
st2_P2 = P2; 
 
/*действия для 3 студента*/ 
inputData(l1, l2, P1, P2);//ввод данных 
st3_tmark = calculateTestMark(P1, P2, tmark);//тест 
st3_lmark = calculateLabMark(l1, l2, lmark);//лабораторная 
st3_av = average(av, lmark, tmark);//среднее 
st3_l1 = l1; 
st3_l2 = l2; 
st3_P1 = P1; 
st3_P2 = P2; 
 
 
/*вывод таблицы*/ 
printTable(st1_l1, st1_l2, st1_P1, st1_P2, st1_lmark, st1_tmark, st1_av, 
st2_l1, st2_l2, st2_P1, st2_P2, st2_tmark, st2_lmark, 
st2_av, 
st3_l1, st3_l2, st3_P1, st3_P2, st3_tmark, st3_lmark, 
st3_av); 
system("pause"); 
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2017, 07:25
Ответы с готовыми решениями:

Динамические матрицы (указатели на указатели)
Никак не могу осознать указатели на указатели. Вот есть объявление double **A; Потом следует ...

Массивы указателей и указатели на указатели
В чем разница между массивами указателей и указателями на указатели? Может, между ними такая же...

Расставить слова в предложении в алфавитном порядке
хотя бы алгоритм

Расставить элементы массива Х(50) в порядке убывания
Расставить элементы массива Х(50) в порядке убывания. Помогите пожалуйста, буду очень благодарен!

Расставить пробелы после каждой точки
Задание: расставить пробелы после каждой встречающейся точки. Пробелы расставить получилось, но...

1
sk007
Life Builder
482 / 463 / 359
Регистрация: 12.01.2011
Сообщений: 1,643
Завершенные тесты: 7
03.05.2017, 11:43 2
Лучший ответ Сообщение было отмечено staccy как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
void inputData(int *l1, int *l2, int *P1, int *P2) //ввод данных 
{ 
setlocale(LC_ALL, "Russian"); 
printf("Оценка за первую задачу:\n"); 
scanf("%d", *l1); 
printf("Оценка за вторую задачу:\n"); 
scanf("%d", *l2); 
printf("Процент правильных ответов в тесте(первая попытка):\n"); 
scanf("%d", *P1); 
printf("Процент правильных ответов в тесте(вторая попытка):\n"); 
scanf("%d", *P2); 
}
На остальное лень вникать, ну думаю там аналогично
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2017, 11:43

Правильно расставить арифметические знаки в выражении
Дана конечная последовательность, состоящая из левых и правых скобок pазличных заданных типов( «(»...

Массивы. Расставить элементы массива Х(40) в порядке убывания
Доброго времени суток, Уважаемые программисты)))) Помогите, пожалуйста, решить данную задачу... не...

Расставить максимальные элементы в порядке убывания на главной диагонали матрицы
Условие программы которую нужно написать на с: путем перестановки квадратной вещественной матрицы...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru