Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2013, 13:23   #1
Akika
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 36
По умолчанию Двумерные массивы C++

Помогите, пожалуйста, решить задачку.

Три группы студентов, в каждой из которых 20 человек, в сессию сдавали по 3 экзамена. Сведения об оценках каждой группы хранятся в двумерных массивах. Определить лучшую по средней оценке группу.

Заполнение оценок сделать рандомное.

Заранее благодарю.
Akika вне форума Ответить с цитированием
Старый 15.12.2013, 13:36   #2
Akika
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 36
По умолчанию

Наша решение на С#. Как его перевести к виду C++?
Код:
Console.WriteLine("Заполните данные для ПЕРВОЙ группы:");
                    Console.Write("Студент {0}-ый, оценка за {1} экзамен: ", i + 1, j + 1);
                    students1[i, j] = int.Parse(Console.ReadLine());
                    Console.Clear();
                }
            for (int i = 0; i < n; i++)
                for (int j = 0; j < N; j++)
                {
                    Console.WriteLine("Заполните данные для ВТОРОЙ группы:");
                    Console.Write("Студент {0}-ый, оценка за {1} экзамен: ", i + 1, j + 1);
                    students2[i, j] = int.Parse(Console.ReadLine());
                    Console.Clear();
                }
            for (int i = 0; i < n; i++)
                for (int j = 0; j < N; j++)
                {
                    Console.WriteLine("Заполните данные для ТРЕТЬЕЙ группы:");
                    Console.Write("Студент {0}-ый, оценка за {1} экзамен: ", i + 1, j + 1);
                    students3[i, j] = int.Parse(Console.ReadLine());
                    Console.Clear();
                }
            double[] GroupSred = new double[n*N];
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    sred1 += students1[i, j];
                }
            }
            GroupSred[0] = sred1 / (n*N);
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    sred2 += students2[i, j];
                }
            }
            GroupSred[1] = sred2 / (n * N);
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    sred3 += students3[i, j];
                }
            }
            GroupSred[2] = sred3 / (n * N);
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine("Группа {0} - средняя оценка: {1:.####}", i + 1, GroupSred[i]);
            }
            for (int i = 0; i < 3; i++)
            {
                if (GroupSred.Max() == GroupSred[i])
                    Console.WriteLine("Лучшая группа {0} - средняя оценка: {1:.####}\n", i + 1, GroupSred[i]);
            }
            Console.ReadLine();
Akika вне форума Ответить с цитированием
Старый 15.12.2013, 14:42   #3
Akika
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 36
По умолчанию

Есть еще такое решение, но оно тоже выдает ошибку.

Код:
#include "stdafx.h"
#include <conio.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#define CLASSES 3
#define GRADES 30
int grade[CLASSES][GRADES];
void disp_grades(int g[][GRADES]), enter_grades(void);
int get_grade(int num);
int main(void) /* программа для хранения оценок */
{
	char ch;
	for (;;) {
		do {
			printf("(E)nter grades\n");
			printf("(R)eport grades\n");
			printf("(Q) uit\n");
			ch = toupper(getche());
		} while (ch != 'E' && ch != 'R' && ch != 'Q');
		switch (ch)
		{
		case 'E':
			enter_grades();
			break;
		case 'R':
			disp_grades(grade);
			break;
		case 'Q':
			return 0;
		}
	}
}

/* ввод каждой оценки студентов */
void enter_grades(void)
{
	int t, i;
	for (t = 0; t<CLASSES; t++) {
		printf("Class # %d:\n", t + 1);
		for (i = 0; i<GRADES; ++i)
			grade[t][i] = get_grade(i);
	}
}

/* реальный ввод оценки */
int get_grade(int num) {
	char s[80];
	printf("enter grade for student # %d:\n", num + 1);
	gets(s);
	return(atoi(s));
}

/* вывод оценок класса */
void disp_grades(int g[][GRADES])
{
	int t, i;
	for (t = 0; t<CLASSES; ++t)
	{
		printf("Class # %d:\n", t + 1);
		for (i = 0; i<GRADES; ++i)
			printf("grade for student #%d is %d\n", i + 1, g[t][i]);
	}
}
Akika вне форума Ответить с цитированием
Старый 15.12.2013, 16:24   #4
Akika
Пользователь
 
Регистрация: 02.12.2012
Сообщений: 36
По умолчанию

Есть решение)) Помогите найти ошибку,пожалуйста..
Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <stdlib.h>
void main(){
	randomize();
	int x[20][3], y[20][3], z[20][3], i, j, nmax;
	float c[2], max;
	c[0] = 0; c[1] = 0; c[2] = 0;
	for (i = 0; i<20; i++)
	for (j = 0; j<3; j++) {
		x[j] = random(8) + 4;
		c[0] = c[0] + x[j];
		y[j] = random(8) + 4;
		c[1] = c[1] + y[j];
		z[j] = random(8) + 4;
		c[2] = c[2] + z[j];
	}
	c[0] = c[0] / 60; c[1] = c[1] / 60; c[2] = c[2] / 60;
	max = c[0]; nmax = 0;
	for (i = 0; i<3; i++)
	if (c>max) { max = c; nmax = i; }
	cout << "\n Lychaya po sredney ocenke gryppa - " << nmax + 1;
	getch();
}
Akika вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
Двумерные массивы 1Dima Помощь студентам 2 29.05.2011 13:57
двумерные массивы Konfetkaa Помощь студентам 2 15.03.2010 13:55