Используя классы, найти количество противоположных элементов в массиве.
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Помогите, пожалуйста, написать программу. Вот задача: Дан целочисленный массив размера N. Найти количество противоположных элементов в данном массиве. Написать нужно с помощью классов. В Dev-C++
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Помогите написать или напишите? Первое готов делать, со всевозможными пояснениями и ликбезами любой уровни сложности. Второе делать не готов. Моё отношение к студенческим воплям о помощи: помоги, разъясни, но не навреди, сделав задачу сам.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Romeo писал(а):Помогите написать или напишите? Первое готов делать, со всевозможными пояснениями и ликбезами любой уровни сложности. Второе делать не готов. Моё отношение к студенческим воплям о помощи: помоги, разъясни, но не навреди, сделав задачу сам.
Помочь написать. Я написала эту программу без использования классов, вот:
Код: Выделить всё
#include <iostream>
using namespace std;
const int n = 5;
int main(int argc, char *argv[])
{
int a[n], count = 0;
bool ok[n] = {false};
for (int i = 0; i < n; ++i) cin >> a[i];
for (int i = n-1; i >= 0; --i)
{
if (ok[i] || a[i] == 0) continue;
for (int j = i-1; j >= 0; --j)
if (ok[j] || a[j] == 0) continue;
else if (a[i] == a[j]*-1)
{
ok[j] = ok[i] = true;
count++;
for (int k = 0; k < n; ++k)
if (a[i] == a[k] || -1*a[i] == a[k]) ok[k] = true;
}
}
cout << count << endl;
return 0;
}
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Я не представляю, как сюда можно всунуть классы, если задача вовсе не требует этого. Если использование классов - это самоцель задания, и без использования классов преподаватель просто не отвяжется, то предлагаю сделать класс, который в качестве поля будет хранить входной массив, а так же будет содержать метод для подсчёта противоположных чисел. В таком случае в main нужно будет создать экземпляр класса, считать данные со стандартного ввода, проставить их в экземпляр (можно через сеттер), затем вызвать метод, считающий число противоположных и вывести его результат в стандартный поток вывода.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.