Показать сообщение отдельно
Старый 15.08.2011, 13:00   #20
nexen
Новичок
 
Регистрация: 05.07.2010
Сообщений: 12
Сказал(а) спасибо: 13
Поблагодарили 0 раз(а) в 0 сообщениях
nexen На верном пути
По умолчанию

Цитата:
Сообщение от Йоха Посмотреть сообщение
...
Насчет динамического массива, я не то имел ввиду. Я не хотел копировать значения одного массива в другой. Я хотел сделать так, чтобы кол-во элементов динамического массива было задано инициализацией (да, там я её забыл), а затем менялось. То есть :
int elems=1,amount,mDel=0;
int*massiv=new int[elems]; // В книге так динам. массив задавался.
...code...
cin >> amount; // Кол-во, допустим, человек.
for (int i=0;i<amount; i++)
if (massiv[i]<max) mDel+=1;
// Вышли из цикла.
if (mDel==amount) {...code...}
// В коде идет проверка такого плана : если у всех элементов значение меньше переменной MAX, то в массиве остается лишь одна строчка, а все остальные удаляются при помощи либо обнуления через for, либо просто изменения значения elems на 1, чтобы массив имел один элемент, а все остальные (не знаю, удалятся ли они по условию...) удалились.

Проще, наверное, будет привести полный пример. Вот моя ломаная ( :< ) программа, где я хотел использовать то, о чем писал. Однако при первом вводе ученика, она выдает ошибку дебагера.
Задание : в первой строке вводится N-кол-во учеников. В каждой из последующих N-строк идет информация о каждом в виде First-name Second-name School Grade. Нужно вывести номер школы, в которой больше всего учеников, набравших наивысший балл на районе. Т.е, если входные данные такие :
DAWd dawd 3 87
jdiaw jkdw 3 87
dwaji hjw 2 87
выходные данные будут такие :
3
p.s Не вышло объявить двумерный динамический массив : (
Код:
#include <iostream>
using namespace std;
int main()
{
	int amount, str, school, grade,pol=1,max=-1,l;
	int*pupleS=new int[pol];
	int*puplePG=new int[pol];
	cout << "Enter number of students:" << endl;
	cin >> amount; cin.ignore();
	for (int i=0;i<amount;i++)
	{
		cout << "Enter information (F-name S-name School Grade) about student number #" << i+1 << " :\n";
		cin >> str >> str >> school >> grade; cin.ignore(); 
		l=0;
		if (grade>max)
		{
			pol=2; max=grade;
			pupleS[l]=school; puplePG[l]=1;
		}
		else if (grade==max)
		{
			while (pupleS[l]!=0 && pupleS[l]!=school)
				l++;
			if (pupleS[l]==school)
				puplePG[l]++;
			else
			{
				pol++;
				pupleS[l]=school;
				puplePG[l]=1;
			}
		}
	}
	max=puplePG[0]; int kpp;
	for (int i=1;i<pol;i++)
		if (max<puplePG[i]) {kpp=i; max=puplePG[i];}
		cout << "Best school is " << kpp << endl;
		delete [] pupleS;
		delete [] puplePG;
return 0;
}
nexen вне форума   Ответить с цитированием