Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
#1

Таблица на двумерном массиве или структуре - C++

21.02.2013, 21:30. Просмотров 421. Ответов 14
Метки нет (Все метки)

Задача: Написать программу со вводом имен 10 студентов, вводом 10 оценок каждому, вывод результата в виде таблицы с подсчетом ср. арифм. для каждого студента и ср. арифм. для всех студентов.

Через структуры проблема заключается в том, что в структуре не удается задать массив типа int для оценок.

А через Двумерный массив не ясно как оперировать с int(оценками) и char(именами студентов) в одном массиве.

Где собака зарыта?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2013, 21:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Таблица на двумерном массиве или структуре (C++):

Количество нулевых, или положительных, или отрицательных элементов в двумерном массиве - C++
Здравствуйте. Мне нужно составить программу, которая подсчитывает или количество нулевых, или количество положительных, или количество...

Мусорное значение в динамическом массиве в структуре. Что я делаю не так? - C++
Здравствуйте! Делаю вычисление факториала от 21 до 30. Использую длинную арифметику. Произведение длинного и короткого чисел -...

Звёздочки в двумерном массиве - C++
Дано нечетное число n, не превосходящее 15. Создайте двумерный массив из n×n элементов, заполнив его символами "." (каждый элемент массива...

Потерялся в двумерном массиве - C++
#include <iostream> using namespace std; int main() { setlocale (LC_ALL, "Russian"); const int m=6, n=4; int a; int x...

Динамика в двумерном массиве - C++
Всем привет. Подскажите, пожалуйста, реально ли реализовать такое. Есть заранее найденное n - не константа. Нужно, чтобы массив...

Указатели в двумерном массиве - C++
Помогите пожайлуста!!! Как занулить главную диогональ, скока не пробовал, ни как не получается.... не могу найти ошибку :wall: Вот...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
olya7
477 / 294 / 91
Регистрация: 18.02.2013
Сообщений: 684
21.02.2013, 21:56 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct student
{
char fio;
int otc[10];
} mas[10;]
...
for (i=0;i<n;i++)
{
cout << "" Fio"; cin mas[i].fio;
cout << "" 10 otcenok"; 
for (j=0;j<n;j++)
{
cin <<mas[i].otc[j];sr+=mas[i].otc[j];}
sr\=10;
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
21.02.2013, 22:24  [ТС] #3
Мой код был таким же, единственное напомнили обращение к i-тым и j-м эл. массива структур. Результат: все та же ошибка: no match for 'operator>>' in 'std::cin >> mas[i].student::otc'

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
#include <iostream>
 
using namespace std;
 
struct student
{
char fio[50];
int otc[10];
} mas[10];
 
int main()
{
int i,j,n=2, sr;
for (i=0;i<n;i++)
{
cout << "Fio";
cin>>mas[i].fio;
cout << "10 otcenok";
cin>>mas[i].otc;}
for (j=0;j<n;j++)
{
sr+=mas[i].otc[j];}
cout <<sr/10;
}
olya7
477 / 294 / 91
Регистрация: 18.02.2013
Сообщений: 684
21.02.2013, 22:32 #4
заполнение оценок должно быть в цикле
Цитата Сообщение от Satansoft Посмотреть сообщение
cout << "Fio";
cin>>mas[i].fio;
cout << "10 otcenok";
for (j=0;j<n;j++)
{
cin>>mas[i].otc;
sr+=mas[i].otc[j];}
cout <<sr/10;
}
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
21.02.2013, 22:43  [ТС] #5
Понял, но оно не из-за этого ошибку выбивает)
Подкорректировал, и ещё, я так понял присвоение += - это присвоение суммы всех чисел введенных в массив? а нужно ещё среднее по каждому студенту и это до sr+= использовать cout<<mas[i].otc[j]/10;, можно ведь при таком обращении оперировать с элементом, как с переменной?
olya7
477 / 294 / 91
Регистрация: 18.02.2013
Сообщений: 684
21.02.2013, 22:56 #6
+= это сокращенная запись число = число + что-то
по среднему баллу по студенту можно просто добавить еще одно поле в Вашу структуру, а потом просто проссумировать их и разделить на количество студентов - вот оно Ваше среднее по всем
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
21.02.2013, 23:06  [ТС] #7
С массивом типа int та же проблема: no match for 'operator>>' in 'std::cin >> mas[i].student::otc'.
И какова тогда ф-я:
C++
1
2
sr+=mas[i].otc[j];
cout <<sr/10;
olya7
477 / 294 / 91
Регистрация: 18.02.2013
Сообщений: 684
22.02.2013, 00:26 #8
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
#include <iostream.h>
#include <string.h>
 
int main()
{
    double SB=0;
    int i,n=2,j;
    struct student
{
char fio[20];
int o[2];
double sr;
} mas[10];
 
for (i=0;i<n;i++)
{
cout << " Fio";
cin >> mas[i].fio;
cout << "2 otcenok"; 
mas[i].sr=0;
for (j=0;j<n;j++)
{
cin>>mas[i].o[j];
mas[i].sr+=mas[i].o[j];
}
mas[i].sr=mas[i].sr/2;
SB+=mas[i].sr;
}
 
cout << SB;
    return 0;
}
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
22.02.2013, 01:10  [ТС] #9
А вот рабоче-крестьянская версия, ибо с обращением к массивам не дружу с детства:
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
#include <iostream>
 
using namespace std;
 
struct student
{
char fio[25];
int otc0, otc1, otc2, otc3, otc4, otc5, otc6, otc7, otc8, otc9;
} mas[10];
 
int main()
{
int i,n=2, sr;
for (i=0;i<n;i++)
{
cout << "Fio"<<endl;
cin>>mas[i+1].fio;
cout << "10 otcenok"<<endl;
cin>>mas[0].otc0;
cin>>mas[1].otc1;
cin>>mas[2].otc2;
cin>>mas[3].otc3;
cin>>mas[4].otc4;
cin>>mas[5].otc5;
cin>>mas[6].otc6;
cin>>mas[7].otc7;
cin>>mas[8].otc8;
cin>>mas[9].otc9;
sr=mas[0].otc0+mas[1].otc1+mas[2].otc2+mas[3].otc3+mas[4].otc4+mas[5].otc5+mas[6].otc6+mas[7].otc7+mas[8].otc8+mas[9].otc9;
cout<<"------------"<<endl;
cout<<sr/10<<endl;
cout<<"------------"<<endl;
}
}
Как вывести ср. арифм по всем студентам? надо какое-то бла-бла-бла, в которое нужно записать результаты всех итераций с sr и разделить это на n, КАК реализовать бла-бла-бла?
olya7
477 / 294 / 91
Регистрация: 18.02.2013
Сообщений: 684
22.02.2013, 01:17 #10
Я Вам сверху рабочую версию вложила)и средний бал по всем посчитала)
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
22.02.2013, 01:22  [ТС] #11
Собсно она как и моя считает среднее по студенту, а не общее, в 26 строке:
C++
1
mas[i].sr=mas[i].sr/4;
В вышеотписанной строке ошибка: 2 студента по 2 оценки - это 4. А как просуммировать итерации так и не понял ни у вас, ни у себя...
olya7
477 / 294 / 91
Регистрация: 18.02.2013
Сообщений: 684
22.02.2013, 01:27 #12
C++
1
2
mas[i].sr=mas[i].sr/2;
SB+=mas[i].sr;
я для облегчения ввода сделала 2 студента и 2 оценки: средний бал студента сидит в mas[i].sr, а средний бал по всем - SB
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
22.02.2013, 01:35  [ТС] #13
облегчение вижу, но проверьте результат, я вижу присвоение mas[i].sr предыдущий результат деленный на 2 и зачем-то повторное присвоение этого же значения переменной SB...ну не считает оно общую.
olya7
477 / 294 / 91
Регистрация: 18.02.2013
Сообщений: 684
22.02.2013, 01:43 #14
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
int main()
{
    double SB=0;
    int i,n=2,j;
    struct student
{
char fio[20];
int o[2];
double sr;
} mas[10];
 
for (i=0;i<n;i++)
{
cout << " Fio";
cin >> mas[i].fio;
cout << "3 otcenok"; 
mas[i].sr=0;
for (j=0;j<3;j++)
{
cin>>mas[i].o[j];
mas[i].sr+=mas[i].o[j];
}
mas[i].sr=mas[i].sr/2;
SB+=mas[i].sr/2;
}
cout << endl;
for (i=0;i<n;i++)
{
 cout << mas[i].fio << " " << mas[i].sr;
 cout << endl;}
 
cout << SB;
    return 0;
}
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
22.02.2013, 01:51  [ТС] #15
Благодарю, только все равно ошиблись, в строке 23 надо делить на колич. оценок, которых 3, а не 2. А в 24 строке лучше делить на n, универсальней так и за форм-фактор таблицы отдельная благодарнозззть. Спите спокойно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2013, 01:51
Привет! Вот еще темы с ответами:

Строки в двумерном массиве - C++
Здравствуйте! Хочу прояснить некоторые моменты по работе с двумерным массивом. Достичь хочу следующего: есть строки с фразами string...

Палиндром в двумерном массиве - C++
Задача звучит так :С клавиатуры вводится размерность целочисленной матрицы, затем сама матрица. Найти строку, порядок элементов которой...

Указатели в двумерном массиве - C++
Например есть массив int** mas=new int*; for(int i=0; i&lt;=str;i++) mas=new int; for (int i=0; i&lt;str; i++ ) for (...

В двумерном массиве подсчитать - C++
Для каждой строки в двумерном массиве подсчитать количество положительных элементов и записать данные в новый массив. Помогите плз, а то в...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.02.2013, 01:51
Ответ Создать тему
Опции темы

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