Цитата:
Сообщение от Йоха
...
|
Насчет динамического массива, я не то имел ввиду. Я не хотел копировать значения одного массива в другой. Я хотел сделать так, чтобы кол-во элементов динамического массива было задано инициализацией (да, там я её забыл), а затем менялось. То есть :
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;
}