|
|
|
| Помогите решить задачу: Дана матрица A: array [1..N,1..N] of integer. Сформировать век¬тор В из максимальных элементов каждой строки.Реализовать для произвольного порядка матрицы (задаётся пользователем) | |
|
|
|
|
|
|
|
для: Oazis
(09.12.2007 в 03:28)
| | Эээ...A: array[1..N, 1..N] of integer; - это не С++, вы просто для примера так пишете, или нужно решение на паскале/дельфи? | |
|
|
|
|
|
|
|
для: Фитч
(09.12.2007 в 09:40)
| | просто та надо решить C++ | |
|
|
|
|
|
|
|
для: Oazis
(09.12.2007 в 03:28)
| | Можно поступить следующим образом
#include <iostream>
#include <vector>
using namespace std;
int main()
{
// Вектор с целочисленными элементами
vector<int> coll, result;
int count = 0;
cout << "Введите размер матрицы N: ";
cin >> count;
try
{
// Заполняем коллекцию
int temp = 0;
for(int j = 0; j < count; j++)
{
for(int i = 0; i < count; i++)
{
cout << "Введите элемент (" << j << "," << i << "): ";
cin >> temp;
coll.push_back(temp);
}
}
// Выводим только что введённую матрицу
cout << "Вы ввели следующую матрицу:\n";
for(int j = 0; j < count; j++)
{
for(int i = 0; i < count; i++)
{
cout << coll[j*count + i];
}
cout << "\n";
}
// Ищем максимальные элементы в строках
for(int j = 0; j < count; j++)
{
int max = coll[j*count];
for(int i = 0; i < count; i++)
{
if(max < coll[j*count + i]) max = coll[j*count + i];
}
result.push_back(max);
}
// Выводим результат
cout << "\nМаксимальные элементы в строках матрицы:\n";
for(int i = 0; i < result.size(); i++)
{
cout << result[i] << "\n";
}
}
catch(bad_alloc)
{
cout << "Не удалось выделить память под коллекцию\n";
}
return 0;
}
|
| |
|
|
|
|
|
|
|
для: cheops
(10.12.2007 в 04:14)
| | Большое спаибо но такой вопрос нельзя ли ее подделать для С++ Expres там чуток отличается | |
|
|
|
|
|
|
|
для: Oazis
(10.12.2007 в 06:05)
| | Откомпилировал в C++ Visual Studio Express 2005 - всё работает. Вы как проект создаёте? File->New->Project->General->Empty Project? Или используете CLR-проекты? Если у вас классическая C++ программа используйте File->New->Project->General->Empty Project - добавляйте в него файл. В этом случае будет использоваться стандартное окружение программы, которое позволит вам создавать и отлаживать кросплатформенный код, который будет одинаково работать как под Windows, так и под Linux/UNIX/Mac. | |
|
|
|
|
|
|
|
для: cheops
(10.12.2007 в 08:18)
| | всё идет но почему программа не выдает на экран саму матрицу??? | |
|
|
|
|
|
|
|
для: Oazis
(10.12.2007 в 08:33)
| | Хм... странно у меня выдаёт - можете прекрепить результат выполнения программы? | |
|
|
|
|
 152 Кб |
|
|
для: cheops
(10.12.2007 в 11:37)
| | вот смотрите | |
|
|
|
|
|
|
|
для: Oazis
(11.12.2007 в 06:29)
| | Хм... ну вот же программа пишет - "Вы ввели следующую матрицу" | |
|
|
|
|
|
|
|
для: cheops
(11.12.2007 в 07:47)
| | sorry Всё работает спасибо | |
|
|
|
|
|
|
|
для: Oazis
(12.12.2007 в 04:43)
| | А что нужно сделать чтобы получился вывод "Не удалось выделить память под коллекцию" | |
|
|
|
|
|
|
|
для: Oazis
(12.12.2007 в 09:34)
| | Исчерпать память компьютер :))) Правда на пример этой программы не очень удобно - придётся вручную забивать миллиарды значений. Однако, если коллекция заполняется автоматически и происходит сбой (например, цикл зацикливается) - этого можно легко добиться. | |
|
|
|
|
|
|
|
для: cheops
(13.12.2007 в 06:52)
| | A можно эту программу перевести на printf :-) | |
|
|
|
|
|
|
|
для: Oazis
(13.12.2007 в 07:17)
| | Вообще printf() это чистый C, в C++ лучше ориентироваться на библиотеку <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <vector>
using namespace std;
int main()
{
// Строка для временных значений
char input[80];
// Вектор с целочисленными элементами
vector<int> coll, result;
int count = 0;
printf("%s", "Введите размер матрицы N: ");
// Читаем введённую строку
fgets(input, 80, stdin);
// Преобразуем её в целое число
count = atoi(input);
try
{
// Заполняем коллекцию
int temp = 0;
for(int j = 0; j < count; j++)
{
for(int i = 0; i < count; i++)
{
printf("Введите элемент (%d,%d): ",j, i);
// Читаем введённую строку
fgets(input, 80, stdin);
// Преобразуем её в целое число
temp = atoi(input);
// Помещаем число в коллекцию
coll.push_back(temp);
}
}
// Выводим только что введённую матрицу
printf("%s", "Вы ввели следующую матрицу:\n");
for(int j = 0; j < count; j++)
{
for(int i = 0; i < count; i++)
{
printf("%d ", coll[j*count + i]);
}
printf("%s", "\n");
}
// Ищем максимальные элементы в строках
for(int j = 0; j < count; j++)
{
int max = coll[j*count];
for(int i = 0; i < count; i++)
{
if(max < coll[j*count + i]) max = coll[j*count + i];
}
result.push_back(max);
}
// Выводим результат
printf("%s", "\nМаксимальные элементы в строках матрицы:\n");
for(int i = 0; i < result.size(); i++)
{
printf("%d\n", result[i]);
}
}
catch(bad_alloc)
{
printf("%s", "Не удалось выделить память под коллекцию\n");
}
return 0;
} |
| |
|
|
|