Вопрос № 180850: Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: Написать нужно на Си.Среда разработки-Dev-C++.Каждую строку прокомментируйте пожалуйста. В одномерном массиве,состоящем из n вещественных элементов,вычислить: 1)номер ...
Вопрос № 180851: Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: Задача нужна на языке Си. Среда разработки-Dev-C++.Прокомментируйте пожалуйста каждую строку. Задача: Коэффициенты системы линейных уравнений заданы в виде прямоугольн...
Вопрос № 180855: Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: Установил себе Visual C 2010 Express. Думаю, эх, сейчас как напишу курсовой! Ан, не тут то было. Текст программы такой:
Вопрос № 180850:
Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: Написать нужно на Си.Среда разработки-Dev-C++.Каждую строку прокомментируйте пожалуйста. В одномерном массиве,состоящем из n вещественных элементов,вычислить: 1)номер минимального по модулю элемента массива; 2)cумму модулей элементов массива,расположенных после первого отрицательного элемента. Сжать массив,удалив из него все элементы,величина которых находится на интервале[a,b].Освободившиеся в конце массива элементы
заполнить нулями. Спасибо.
Отправлен: 18.11.2010, 21:56
Вопрос задал: Olgaa (Посетитель)
Всего ответов: 1 Страница вопроса »
// Размерность массива #define DIM 10 // Диапазон элементов для генерации массива #define MIN -10 #define MAX 10 // Диапазон [A..B] для упаковки массива согласно условия #define A 0 #define B 5
// Ищет минимальный по модулю элемент size_t findAbsMin(const double*
const array, size_t size) { size_t res = 0, i; for (i = 1; i < size; ++i) { if (fabs(array[i]) < fabs(array[res])) { res = i; } } return res; }
// Вычисляет сумму элементов после 1го отрицательного double calcSum(const double* array, size_t size) { double res = 0.0; const double* const end = array + size; // Пропускаем до 1го отрицательного
while (array != end && *array++ >= 0); // Суммируем оставшиеся while (array != end) { res += fabs(*array++); } return res; }
// Упаковка массива, согласно условия, удалением элементов из диапазона [A..B] void packArray(double* array, size_t* size) { double *from = array, *to = array; const double* const end = array + *size; while (from != end) { if (*from < A || *from > B) {
*to++ = *from; } ++from; } // Новая длина массива *size = to - array; // Остаток заполним нулями while (to != end) { *to++ = 0.0; } }
/* * */ int main(int argc, char** argv) { // Массив double array[DIM]; // Размер массива size_t size = DIM;
setlocale(LC_ALL,"russian");
// Заполним его случайными
числами genArray(array, size); printArray("Исходный массив:", array, size); printf("Минимальный по модулю элемент имеет индекс: %u\n", findAbsMin(array, size)); printf("Сумма элементов по модулю после 1го отрицательного: %f\n", calcSum(array, size)); packArray(array, &size); printArray("Сжатый массив:", array, size);
getch();
return EXIT_SUCCESS; }
Пример работы:
Код:
Исходный массив: -5.019155 9.512544 8.988736 4.083037 -1.332236 -8.373878 9.150914 -4.652075 -6.816634 -4.926991 Минимальный по модулю элемент имеет индекс: 4 Сумма элементов по моду
лю после 1го отрицательного: 57.837045 Сжатый массив: -5.019155 9.512544 8.988736 -1.332236 -8.373878 9.150914 -4.652075 -6.816634 -
4.926991
Ответ отправил: Micren (Профессионал)
Ответ отправлен: 18.11.2010, 23:17
Номер ответа: 264191
Оценка ответа: 5
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 264191
на номер 1151 (Россия) |
Еще номера »
Ответ поддержали (отметили как правильный):
1 чел.
Вопрос № 180851:
Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: Задача нужна на языке Си. Среда разработки-Dev-C++.Прокомментируйте пожалуйста каждую строку. Задача: Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых преобразований привести систему к треугольному виду. Найти количество строк, среднее арифметическое элементов которых меньше заданной величины. Спасибо!
Отправлен: 18.11.2010, 22:12
Вопрос задал: Olgaa (Посетитель)
Всего ответов: 1 Страница вопроса »
Отвечает Verena (Профессионал) :
Здравствуйте, Olgaa! Смотрите пример реализации в приложении. Основано на этой ссылке.
Преобразование матрицы к треугольному виду (для квадратной) или к трапециевидному (для прямоугольной) производится с помощью прямого хода метода Гаусса. Пусть применяется метод Гаусса без выбора ведущего элемента. Алгоритм такой. На i-том шаге непреобразованный столбец матрицы A - это часть столбца i, начиная с элемента a[i][i] (т.е. начиная с элемента главной диагонали для квадратной матрицы)
. Если a[i][i] равен нулю, то нужно перестановкой строк добиться того, чтобы первый элемент непреобразованного столбца не равнялся нулю. Если все элементы непреобразованного столбца равны нулю, то переходим к следующему столбцу, в противном случае обнуляем остальные элементы непреобразованного столбца (делим строку, которая содержит a[i][i] на a[i][i], умножаем на элемент, который хотим обнулить, и отнимаем эту строку от строки, которая содержит элемент, который хотим обнулить).
Добавила подсчёт
искомых строк, поверила в Вашем компиляторе. Будут вопросы, пишите. Удачи!
Приложение:
----- Эта история - не для истории, понимаешь?
Ответ отправил: Verena (Профессионал)
Ответ отправлен: 23.11.2010, 01:50
Номер ответа: 264271
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 264271
на номер 1151 (Россия) |
Еще номера »
Вопрос № 180855:
Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:
Установил себе Visual C 2010 Express. Думаю, эх, сейчас как напишу курсовой! Ан, не тут то было. Текст программы такой:
Отправлен: 19.11.2010, 12:51
Вопрос задал: sir Henry (Старший модератор)
Всего ответов: 2 Страница вопроса »
Отвечает Сандров Алекс (Студент) :
Здравствуйте, sir Henry!
cout объявлен в namespace std, поэтому два пути:
1. Объявить что тут будет использоваться пространство имён std:
... #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) ...
2. Объявить cout как элемент нэймспейса std:
std::cout << "Всем привет!" << endl;
Ответ отправил: Сандров Алекс (Студент)
Ответ отправлен: 19.11.2010, 09:00
Номер ответа: 264195
Оценка ответа: 5 Комментарий к оценке: Большое спасибо!
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 264195
на номер 1151 (Россия) |
Еще номера »
Ответ поддержали (отметили как правильный):
3 чел.
Отвечает Гаряка Асмик (Профессор) :
Здравствуйте, sir Henry!
Вам нужно объявлять пространство имен std также, если используете контейнеры vector, string и так далее. Если хотите, чтобы программа была переносимой, уберите _tmain _TCHAR* и include "stdafx.h"Чтобы компилировалось после этого, нужно отключить опцию using precompiled headers.
----- Я ни от чего, ни от кого не завишу.
Ответ отправил: Гаряка Асмик (Профессор)
Ответ отправлен: 19.11.2010, 09:27
Номер ответа: 264196
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 264196
на номер 1151 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.