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

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


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

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

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Специалист
Рейтинг: 3603
∙ повысить рейтинг »
lamed
Статус: Бакалавр
Рейтинг: 2561
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2291
∙ повысить рейтинг »

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

Номер выпуска:1530
Дата выхода:15.05.2010, 12:30
Администратор рассылки:Verena, Профессионал
Подписчиков / экспертов:440 / 164
Вопросов / ответов:2 / 3
IRC-канал по теме:#C

Вопрос № 178286: Здравствуйте, уважаемые эсперты! Не могли бы вы помочь с решением 2х задач: 1) Дана квадратная целочисленная матрица размера N×N. Удалить из матрицы строку, содержащую максимальную разницу между элементами главной и побочной диагона...


Вопрос № 178298: Учет успеваемости по группам. Составить базу данных учета успеваемости по группам, содержащую следующие данные: номер зачетной книжки, фамилия, имя, отчество студента, год рождения, шифр группы, наименование предмета, оценка, преподаватель, кафедра и...

Вопрос № 178286:

Здравствуйте, уважаемые эсперты! Не могли бы вы помочь с решением 2х задач:
1) Дана квадратная целочисленная матрица размера N×N. Удалить из матрицы строку,
содержащую максимальную разницу между элементами главной и побочной диагоналей.
Полученную матрицу вывести на экран.
Не знаю как огранизовать цикл для подсчета разности.
2) Бинарный файл содержит вещественные числа. Увеличить в два раза все значения
меньшие среднего арифметического значения всего файла.
Спасибо заранее.

Отправлен: 08.05.2010, 17:31
Вопрос задал: Беляев Валерий Сергеевич, Посетитель
Всего ответов: 2
Страница вопроса »


Отвечает lamed, Бакалавр :
Добрый день! Ответ на второй вопрос. Code::Blocks/G++
Код:
#include <fstream>
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
int i;
int numbers, count;
time_t t;
double d; // считываемое число
double sum; // сумма
double avg; // среднее
long begin, end;
int size;

srand(time(&t)); // инициализируем генератор случайных чисел

// создаем файл
ofstream fdata("data.dat", ios::binary|ios::out|ios::trunc);

if (!fdata)
{
cerr << "Unable to write to data.dat" << endl;
system("Pause");
exit(1);
}

// записали случайное количество случайных чисел
// в файл "data.dat"
numbers = (25+rand()%100)/5;

for (int i = 0; i < numbers; i++)
{
d = rand()%100-50+static_cast<double>(rand())/100;
fdata.write((char *)&d, sizeof(double));
}

fdata.close();

fstream bin_data("data.dat", ios::binary|ios::in|ios::out);
if (!bin_data)
{
cerr << "Unable to write to data.dat" << endl;
system("Pause");
exit(1);
}
// Вычисляем размер файла
bin_data.seekg(0, ios::end);
end=bin_data.tellg();

bin_data.seekg(0, ios::beg);
begin=bin_data.tellg();

size = (end-begin)/sizeof(double);

// Содержимое файла до изменения
bin_data.seekg(0);
cout << "Before ";
for (int i=0; i<size; i++)
{
bin_data.read((char *)&d, sizeof(double));
cout << d << ' ';
}
cout << endl;

// Вычисление суммы и среднего
sum = 0;
bin_data.seekg(0);
for (int i=0; i<size; i++)
{
bin_data.read((char *)&d, sizeof(double));
sum+=d;
}
avg = sum / size;

cout << endl;
cout << "sum = " << sum << endl;
cout << "numbers= " << numbers << endl;
cout << "avg = " << avg << endl;

// Внесение изменений
bin_data.seekg(0);
for (int i=0; i<size; i++)
{
long curr=bin_data.tellp();
bin_data.read((char *)&d, sizeof(double));
if (d<avg)
{
d*=2;
bin_data.seekp(curr, ios::beg);
bin_data.write((char *)&d, sizeof(double));
}
}

// Содержимое файла после изменений
bin_data.seekg(0);
cout << endl << "After ";
for (int i=0; i<size; i++)
{
bin_data.read((char *)&d, sizeof(double));
cout << d << ' ';
}
cout << endl;

bin_data.close();
system("pause");
return 0;
}


Пример работы
Код:
Before 327.84 314.4 106.42 257.3 6.97 255.51 -5.39 320.55 103.89 122.96 283.81 139.22 38.58 2.61 237.54 61.85 330.36 147.77 34.96 

sum = 3087.15
numbers= 19
avg = 162.482

After 327.84 314.4 212.84 257.3 13.94 255.51 -10.78 320.55 207.78 245.92 283.81 278.44 77.16 5.22 237.54 123.7 330.36 29 5.54 69.92
Для продолжения нажмите любую клавишу . . .


Ответ отправил: lamed, Бакалавр
Ответ отправлен: 13.05.2010, 11:44
Номер ответа: 261366

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

  • Отвечает amnick, Студент :
    Здравствуйте, Беляев Валерий Сергеевич.

    Предлагаю решение первой задачи (см. приложение).
    Чтобы не вводить матрицу вручную, создайте файл, содержащий матрицу в требуемом формате (см. комментарии в теле программы) и воспользуйтесь
    перенаправлением ввода:

    178286.exe < file_with_matrix

    Именно в предположении, что матрица будет вводиться подобным образом, программа не выводит на экран запросов о вводе размера матрицы или отдельных элементов.

    Программа протестирована в MSVC++ 6.0 и MS Visual Studio 2005.

    Успехов!

    Приложение:

    Ответ отправил: amnick, Студент
    Ответ отправлен: 14.05.2010, 17:00
    Номер ответа: 261382

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

  • Вопрос № 178298:

    Учет успеваемости по группам. Составить базу данных учета успеваемости по группам, содержащую следующие данные: номер зачетной книжки, фамилия, имя, отчество студента, год рождения, шифр группы, наименование предмета, оценка, преподаватель, кафедра и др.. Вычислить: среднюю оценку студента, группы, средний балл по предмету и количество студентов по группе, получивших оценку "отл.", "хор.", "удовл.", "неуд.".Создать файл таблицы на диске с помощью утилиты Database Desktop.Разработать Windows-приложение в среде Borland C++ Builder для работы с созданной таблицей.используется наиболее простой тип плоских таблиц dBase for Windows .компоненты Table, DataSource, DBGrid, DBNavigator Спасибо за помощь

    Отправлен: 09.05.2010, 13:07
    Вопрос задал: Питулин Александр Михайлович, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Dr_Andrew, Старший модератор :
    Здравствуйте, Питулин Александр Михайлович!
    Собственно, задача аналогична уже решённой.
    Код задачи см. в приложении, код комментирован, файл проекта Borland C++ Builder 6 можно скачать по ссылке: students.zip (895.0 кб)
    P.S. Для корректной работы программы папка students из архива должна быть расположена на диске C:

    Приложение:

    Ответ отправил: Dr_Andrew, Старший модератор
    Ответ отправлен: 10.05.2010, 16:58
    Номер ответа: 261311
    Казахстан, Алма-Ата
    Организация: Казахский научный центр карантинных и зоонозных инфекций
    Адрес сайта: Медицинские программы для Linux
    ICQ # 256452186

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

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

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

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

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

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

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

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


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

    В избранное