Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Гаряка Асмик
Статус: Профессор
Рейтинг: 5463
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2544
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2035
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / C/C++

Номер выпуска:1599
Дата выхода:24.11.2010, 22:00
Администратор рассылки:Verena (Профессионал)
Подписчиков / экспертов:333 / 176
Вопросов / ответов:3 / 4

Вопрос № 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
Страница вопроса »


Отвечает Micren (Профессионал) :
Здравствуйте, Olgaa!
Программа. Компилировал GCC.
Код:
/* 
* File: main.c
* Author: Micren
*
* Created on 18 Ноябрь 2010 г., 21:21
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <conio.h>
#include <locale.h>

// Размерность массива
#define DIM 10
// Диапазон элементов для генерации массива
#define MIN -10
#define MAX 10
// Диапазон [A..B] для упаковки массива согласно условия
#define A 0
#define B 5

// Выводит массив на stdout
void printArray(const char* const msg, const double* array, size_t size)
{
if (msg)
{
printf("%s\n", msg);
}
while (size--)
{
printf("%f ", *array++);
}
printf("\n");
}

// Заполняет массив случайными значениями из диапазона MIN..MAX
void genArray(double* array, size_t size)
{
srand(time(0));
while (size--)
{
*array++ = ((double) rand()) / RAND_MAX * (MAX - MIN) + MIN;
}
}

// Ищет минимальный по модулю элемент
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 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Ответ поддержали (отметили как правильный): 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 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Вопрос № 180855:

    Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:

    Установил себе Visual C 2010 Express. Думаю, эх, сейчас как напишу курсовой! Ан, не тут то было. Текст программы такой:

    Код:
    #include "stdafx.h"
    #include <iostream>


    int _tmain(int argc, _TCHAR* argv[])
    {
    cout << "Всем привет!" << endl;
    return 0;
    }

    Получаю ошибку:
    error C2065: cout: необъявленный идентификатор

    Что делать?

    Отправлен: 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 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Ответ поддержали (отметили как правильный): 3 чел.



    Отвечает Гаряка Асмик (Профессор) :
    Здравствуйте, sir Henry!

    Вам нужно объявлять пространство имен std также, если используете контейнеры vector, string и так далее. Если хотите, чтобы программа была переносимой, уберите _tmain _TCHAR* и include "stdafx.h"Чтобы компилировалось после этого, нужно отключить опцию using precompiled headers.
    -----
    Я ни от чего, ни от кого не завишу.

    Ответ отправил: Гаряка Асмик (Профессор)
    Ответ отправлен: 19.11.2010, 09:27
    Номер ответа: 264196

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 264196 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFPRO.RU, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.23 от 23.11.2010

    В избранное