close

Вход

Забыли?

вход по аккаунту

?

Описание МРЗ вариант 15

код для вставкиСкачать
Вариант 15.
Задача №1.
Дана целочисленная квадратная матрица порядка n. Найти наименьшее из значений элементов столбца, который обладает наибольшей суммой модулей элементов. Если таких столбцов несколько, то взять первый из них.
Описание метода решения задачи
1. Выявляем исходные данные, результаты, назначаем им имена.
Исходные данные: квадратная матрица int mass[10][10] размерность матрицы: int N; Результаты: min - минимальное значение в столбце, где s - сумма модулей элементов максимальная - max
2. Выбираем метод решения задачи, разбиваем на этапы (с учетом возможностей ЭВМ)
Первоначально составим укрупненную схему, а затем подробную для блоков IV, V
Укрупненная схема
I. Подключение всех необходимых заголовочных файлов
II. Глобальные описания переменных int m[10][10],N, min, max, s;
III. Определение размерности 2-го мерного массива IV. Элементы матрицы принимаются как случайные числа, вывод матрицы на экран в виде таблицы
V. Получение необходимого результата и вывод его на экран
IV. Вывод матрицы на экран в виде таблицы
for (int i=0; i<n; i++)
{ for (int j=0; j<n; j++)
{ m[i][j]=random(50)-10;
cout<<setw(5)<<m[i][j];
}
cout<<endl;
}
V. 1. Так как алгоритм циклический, то выводим три набора формул и условие окончания (повторения) цикла. - рабочие формулы - s= s+abs(m[i][j]);
- закон изменения аргументов (переменных): i=i+1, j=j+1
- формулы для вычисления начальных значения аргументов (переменных): i:=0; j=0; min =999; max=-999; s=0;
- условие повторения цикла i<n, j<n
2. МРЗ:
* цикл обработки массива: используем алгоритм расчета матрицы при работе со столбцами - цикл столбцов
операторные скобки
[блок присваивания переменным начальных значений]
цикл строк - вычисляем сумму модулей элементов каждого столбца по рабочей формуле и записываем эти суммы в одномерный массив - m1[j]=s, для того, чтобы затем найти максимальную их них
- для проверки правильности решения задачи выводим суммы на экран
* поиск максимального значения в одномерном массиве сумм:
- перед циклом начальные присваивания
- проверяем, элемент массива больше максимального значения? if (m1[j]>max), если Да, то в переменную max записываем элемент массива - max=m1[j], запоминаем номер столбца - p=j;
- для проверки правильности решения задачи выводим на экран результат
* поиск минимального значения в столбце р
- перед циклом начальные присваивания
- проверяем, элемент массива меньше минимального значения? if (m[i][p]<min), если Да, то в переменную min записываем элемент массива - min=m[i][p]
* вывод результата
Программа, реализующая данный алгоритм
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream.h>
#include<iomanip.h>
int main()
{
clrscr();
randomize();
int m[10][10],max,min,p=0,s=0,n,m1[10];
cout<<"Размерность массива n="; cin>>n;
printf("Исходная матрица:\n");
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
{
m[i][j]=random(15)-5;
cout<<setw(5)<<m[i][j];
}
cout<<endl;
}
for (int j=0; j<n; j++)
{
s=0;
for (int i=0; i<n; i++)
{s=s+abs(m[i][j]); m1[j]=s;}
cout<<setw(9)<<"s="<<s;
}
cout<<endl;
max=-999;
for (j=0; j<n; j++)
if (m1[j]>max) {max=m1[j]; p=j;}
cout<<"max="<<max<<" столбец..."<<p+1;
cout<<endl;
min=999;
for (i=0; i<n; i++)
if (m[i][p]<min) min=m[i][p];
cout<<"min="<<min<<endl;
getch();
}
Задача №2. Ввести предложение. Вывести на экран только цифры. Если условие не выполняется, то вывести на экран сообщение об этом.
Описание метода решения задачи
1. Выявляем исходные данные, результаты, назначаем им имена.
Исходные данные: исходная строка *str1- объявляется как указатель; переменная-указатель-*tmp, в неё будем записывать начальный адрес новой строки
k - счетчик количества цифр в строке
Результаты: новая строка str2, количество цифр в строке
или в строке нет цифр
2. Выбираем метод решения задачи, разбиваем на этапы (с учетом возможностей ЭВМ)
Первоначально составим укрупненную схему, а затем подробную для блока III.
Укрупненная схема
I. Подключение всех необходимых заголовочных файлов
II. Глобальные описания переменных char *str1,*str2=new char,*tmp; int k;
III. Получение необходимого результата и вывод его на экран
III. 1. МРЗ:
* вводим строку (gets(str1); функция считывает строку из stdin и записывает адрес str1, добавляя символ '\0')
* в переменной tmp сохраняем начальный адрес новой строки tmp= str2;
* в цикле "перебора элементов строки" - while(*str1 != '\0'): пока не конец строки
- проверяем, если символ является цифрой - if(*str1>= '0'&& *str1<='9'), то - в новую строку *str2 записываем этот символ - *str2=*str1;
- увеличиваем адрес переменной str2 на одну ячейку (str2++) для передвижения по новой строке
- считаем количество символов
- в теле цикла увеличиваем адрес переменной str1 на одну ячейку (str1++) ("передвигаемся по строке"), иначе из цикла не выйдем
* после окончания цикла "перебора элементов строки str1" в новую строку записываем символ конца строки (*str2='\0';)
* вывод результата: - предварительно нужно перейти на начало новой строки - str2=tmp;
- проверяем, если количество найденных цифр равно нулю, то выводим сообщение "в строке нет цифр", иначе выводим на экран преобразованную строку str2 и количество цифр в строке
Программа, реализующая данный алгоритм
#include <stdio.h>
#include <string.h>
#include <conio.h>
void main()
{
char *str1,*str2=new char,*tmp;
int k=0;
clrscr();
printf("Введи строку ....\n");
gets(str1);
tmp=str2;
while(*str1 != '\0')
{
if(*str1>= '0'&& *str1<='9') {*str2=*str1;str2++;k++;}
str1++;
}
*str2='\0';
str2=tmp;
if (k==0) printf("\nВ строке нет цифр \n");
else
{
printf("\nПолученная строка....%s\n",str2);
printf("количество цифр...%d",k);
}
getch();
}
Задача №3. Создать список, содержащий сведения об отправлении поездов дальнего следования с Казанского вокзала. Структура записи: номер поезда, станция назначения, время отправления, время в пути, наличие билетов. Количество записей запрашивается с клавиатуры. Написать программу, которая позволяет получить следующую информацию:
- время отправления поездов в город X во временном интервале от A до B часов
Документ
Категория
Рефераты
Просмотров
51
Размер файла
52 Кб
Теги
описание, вариант, мрз
1/--страниц
Пожаловаться на содержимое документа