0 / 0 / 0 Регистрация: 03.06.2011 Сообщений: 8 |
|
1 |
|
Найти максимальный отрицательный элемент каждой строки матрицы03.06.2011, 14:43. Показов 2995. Ответов 14
Здравствуйте, помогите, пожалуйста, написать программу на С.
0 |
0 / 0 / 0 Регистрация: 03.06.2011 Сообщений: 8 |
|
04.06.2011, 19:35 [ТС] |
2 |
Народ, помогите, хотя бы с первым пунктом — чтением матрицы из файла и записи этих данных в двумерный массив! Остальное я надеюсь написать, но с этим никаких идей… Что ни пробовала ничего не получается. Надеюсь на понимание.
0 |
no0ker 101 / 88 / 7 Регистрация: 17.12.2010 Сообщений: 416 |
||||
04.06.2011, 19:54 |
3 |
|||
чтение из файла 1.txt матрицы 5*5 (size) и помещение данных в двумерный массив in[][].
0 |
6 / 6 / 2 Регистрация: 04.06.2011 Сообщений: 10 |
|
04.06.2011, 19:57 |
4 |
AleksaDemon, M и N откуда брать?
0 |
0 / 0 / 0 Регистрация: 03.06.2011 Сообщений: 8 |
|
04.06.2011, 20:06 [ТС] |
5 |
Их нужно высчитывать…. Матрица дается в файле и может быть любой. Но не больше чем 10*10.
0 |
101 / 88 / 7 Регистрация: 17.12.2010 Сообщений: 416 |
|
04.06.2011, 20:14 |
6 |
AleksaDemon, а сразу сказать нельзя было? =) и как их высчитывать? допустим элементов в файле 24 — матрица 6 на 4, или 8 на 3?
0 |
0 / 0 / 0 Регистрация: 03.06.2011 Сообщений: 8 |
|
04.06.2011, 20:24 [ТС] |
7 |
Ну в полном задании это написано. А так из того, что я поняла количество строк мы высчитываем считая количество строк, которые считываем, а количество столбцов, когда преобразовываем строку в числа. Сколько чисел в строке, столько и столбцов. То есть, как я понимаю мы в начале заносим в массив, а потом получаем количество столбцов. Но если с подсчетом строк проблемы не возникает, то количество столбцов у меня не считается никак. Я никак не могу перевести строку в числа и их сосчитать, попутно занося в массив.((((
0 |
Fghjkl 6 / 6 / 2 Регистрация: 04.06.2011 Сообщений: 10 |
||||
04.06.2011, 20:36 |
8 |
|||
РешениеAleksaDemon,
Как такое решение?
0 |
0 / 0 / 0 Регистрация: 03.06.2011 Сообщений: 8 |
|
04.06.2011, 20:59 [ТС] |
9 |
Эм… Маленькая проблема… Это на С++, а у меня программа на Си…. А так сижу разбираюсь!=)
0 |
6 / 6 / 2 Регистрация: 04.06.2011 Сообщений: 10 |
|
04.06.2011, 21:05 |
10 |
Ну, в общем, идея в том, чтобы переписать все числа из файла в массив, потом разделить количество чисел в массиве на число от 10 до 2, чтобы делилось без остатка (это и будет число строк/столбцов), а частное будет соответственно столбцами/строками. Так что главное мы нашли m и n, а дальше уже подсказали выше.
1 |
AleksaDemon 0 / 0 / 0 Регистрация: 03.06.2011 Сообщений: 8 |
||||
04.06.2011, 21:07 [ТС] |
11 |
|||
Вот то, что я пыталась сделать… Количество строк он даже считает…. Но, возможно, это все чушь(((
0 |
Fghjkl 6 / 6 / 2 Регистрация: 04.06.2011 Сообщений: 10 |
||||
04.06.2011, 21:56 |
12 |
|||
Здесь не имеет смысла выделять память под массив, так как до инициализации М значение ее непредсказуемо, а потом не будет работать цикл, потому что М уже рано нулю.
0 |
0 / 0 / 0 Регистрация: 03.06.2011 Сообщений: 8 |
|
04.06.2011, 22:11 [ТС] |
13 |
Спасибо. И что сделать с этой строчкой? Удалить или переставить?
0 |
6 / 6 / 2 Регистрация: 04.06.2011 Сообщений: 10 |
|
04.06.2011, 22:18 |
14 |
Думаю, нужно объявлять массив, когда уже найдешь М и N, тогда все должно быть в порядке.
0 |
0 / 0 / 0 Регистрация: 03.06.2011 Сообщений: 8 |
|
04.06.2011, 22:43 [ТС] |
15 |
Спасибо! Так выглядит лучше. Правда у меня весь массив — нули, но теперь он хоть появляется!=)
0 |
Максимальный отрицательный элемент массива
Просмотров 7.5к. Обновлено 15 октября 2021
В массиве найти максимальный отрицательный элемент. Вывести на экран его значение и позицию в массиве.
Задача поиска максимального отрицательного элемента массива не такая простая, как может показаться на первый взгляд.
Введем переменную (условно назовем ее A) для хранения индекса максимального отрицательного элемента и присвоим ей значение, выходящее за пределы возможных индексов. Например, если индексация элементов начинается с нуля, то данной переменной можно присвоить значение -1 (можно присвоить 0, если индексация начинается с 1). Если в массиве вообще не будет найдено отрицательных элементов, то ее такое значение будет «сигнализировать» об этом.
Перебираем массив в цикле. Если очередной элемент меньше нуля и значение переменной A равно -1, то значит, это первый встретившийся отрицательный элемент. Запоминаем его индекс в переменной A. Если же очередной элемент отрицательный, но A уже не содержит -1, то сравниваем значение текущего элемента с тем, которое содержится по индексу, хранимому в A. Если текущий элемент больше, то записываем его индекс в A.
После завершения цикла проверяем, не равно ли значение A -1. Если не равно, то выводим индекс максимального отрицательного элемента массива и его значение.
Pascal
максимальное отрицательное число паскаль
const N = 15;
var
arr: array[1..N] of integer;
i: byte;
index: byte;
begin
randomize;
for i:=1 to N do begin
arr[i] := random(100) - 50;
write(arr[i],' ');
end;
writeln;index := 0;
for i:=1 to N do begin
if (arr[i] < 0) and (index = 0) then
index := i
else
if (arr[i] < 0) and (arr[i] > arr[index]) then
index := i;
end;
if index <> 0 then
writeln(index,': ',arr[index]);
end.
-36 0 -35 -15 2 -43 -18 -4 -6 -24 -30 -28 47 18 41
8: -4
Язык Си
#include < stdio.h>
#define N 15main() {
int arr[N],index, i;
srand(time(NULL));
for (i=0; i< N; i++) {
arr[i] = rand() % 100 - 50;
printf("%d ", arr[i]);
}
printf("n");index = -1;
for (i=0; i< N; i++) {
if (arr[i] < 0 && index == -1)
index = i;
else
if (arr[i] < 0 && arr[i] > arr[index])
index = i;
}
printf("%d-й = %dn",index+1,arr[index]);
}
33 -21 24 -36 42 -11 -6 42 32 36 -1 43 -8 24 40
11-й = -1
Python
максимальное отрицательное число python (питон)
from random import random
N = 15
arr = []
for i in range(N):
arr.append(int(random() * 100) - 50)
print(arr)i = 0
index = -1
while i < N:
if arr[i] < 0 and index == -1:
index = i
elif arr[i] < 0 and arr[i] > arr[index]:
index = i
i += 1print(index+1,':', arr[index])
[-30, 42, -5, 31, -37, 25, -50, -44, 17, -34, -33, -21, 48, 45, 15]
3 : -5
КуМир
алг чет_нечет
нач
цел N = 15
целтаб arr[1:N]
цел i, indexнц для i от 1 до N
arr[i] := irnd(100) - 50
вывод arr[i], " "
кц
вывод нсindex := 0
нц для i от 1 до N
если arr[i] < 0 и index = 0 то
index := i
иначе
если arr[i] < 0 и arr[i] > arr[index] то
index := i
все
все
кц
вывод index, ": ", arr[index], нс
кон
19 32 36 -15 -22 3 48 -42 3 -2 -6 -48 33 27 6
10: -2
Basic-256
N = 15
dim arr(N)
for i=0 to N-1
arr[i] = int(rand() * 100) - 50
print arr[i] + " ";
next iindex = -1
for i=0 to N-1
if arr[i] < 0 then
if index = -1 then
index = i
else
if arr[i] > arr[index] then
index = i
endif
endif
endif
next iprint index+1;
print ": ";
print arr[index]
17 31 -21 24 -8 29 7 42 13 -15 -30 30 33 32 -7
15: -7
Проверка отрицательности элемента вынесена в отдельную ветку if. Иначе возникает ошибка, когда первый элемент неотрицательный, т.к. в Basic-256 при логическом операторе and происходит проверка второго условия даже если первое ложное. И получается, что переменная index отрицательна, что вызывает ошибку выхода за границы массива.
Не получается вывести максимальный отрицательный элемент с четными индексами.
#include <iostream>
#include <ctime>
using namespace std;
void main()
{
setlocale(0, "rus");
int i, j, n, m;
int mas[30][30];
double s1, s2;
cout << "Размер матрицы n n";
cin >> n;
cout << "Размер матрицы m n";
cin >> m;
cout << "nn";
srand(time(0));
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
mas[i][j] = rand() % 101 - 50;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
cout << mas[i][j] << "t";
cout << "n";
}
int count = 0;
int ch[30];
for (i = 0; i < n; i++)
{
ch[i] = 0;
for (j = 0; j < m; j++) {
if (mas[i][j] < 0) {
count++;
cout << "Координаты :" << " i = " << i + 1 << " " << " j = " << j + 1 << endl;
}
if ((i + 1) % 2 == 0 && (j + 1) % 2 == 0 && mas[i][j] < 0) { ch[i] = mas[i][j]; }
}
}
int max = ch[0];
for (i = 1; i < n; i++) {
if (max < ch[i]) {
max = ch[i];
cout << " Max = " << max << endl;
}
}
cout << " Кол-во отрицательных чисел : " << count << endl;
system("pause");
}
задан 14 дек 2017 в 17:37
3
Я немного подработал, посмотрите. Массив ch
совсем не нужен, ищу среди отрицательных элементов наибольший — не по модулю, а именно наибольший, так ведь вас понимать надо?
#include <iostream>
#include <ctime>
using namespace std;
void main() {
setlocale(0, "rus");
int i, j, n, m;
int mas[30][30];
double s1, s2;
cout << "Размер матрицы n n";
cin >> n;
cout << "Размер матрицы m n";
cin >> m;
cout << "nn";
srand(time(0));
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
mas[i][j] = rand() % 101 - 50;
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++)
cout << mas[i][j] << "t";
cout << "n";
}
cout << "n";
cout << "n";
int count = 0;
int max = INT_MIN;
for (i = 1; i < n; i += 2) {
for (j = 1; j < m; j += 2) {
if (mas[i][j] < 0) {
count++;
cout << "Координаты :" << " i = " << i << " " << " j = " << j <<
endl;
if (max < mas[i][j]) max = mas[i][j];
}
}
}
cout << " Max = " << max << endl;
cout << " Кол-во отрицательных чисел : " << count << endl;
system("pause");
}
ответ дан 14 дек 2017 в 17:44
MikhailoMikhailo
12.3k2 золотых знака17 серебряных знаков41 бронзовый знак
1
uses crt; const n=10; var a:array [1..n,1..n] of integer; i,j,max:integer; begin Writeln('Массив: '); For i:=1 to n do begin For j:=1 to n do begin randomize; a[i,j]:=random(101)-50; write(a[i,j]:4); end; writeln; end; Writeln('Максимальные отрицательные эл-ты:'); For i:=1 to n do begin max:=-1; For j:=1 to n do if (a[i,j]<0)and(a[i,j]<max) then max:=a[i,j]; Writeln('В ',i,'-й строке - ',max); end; end.
Курс «Информатика»
— 2013
Лабораторная
работа №7
Тема: Алгоритмы
обработки матриц
Задание к
лабораторной работе
Основная часть
(max
7 баллов)
-
Выбрать данные для задачи в соответствии
со своим вариантом (номер варианта
равен номеру ПК), см. ниже. -
Запустить MS Visio: Пуск
Программы
MS Office
MS Visio -
Из категорий шаблонов выбрать «Блок-схема»
(слева) «Простая
блок-схема» (по центу) нажать
кнопку «Создать» (справа)
Если нет возможности использовать
шаблоны, то выберите пункт меню «Файл»
«Фигуры»
«Блок-схема»
«Простая блок-схема»
-
На 1-й странице MS Visio
(Страница-1) отразить первые три этапа
решения задачи с помощью ЭВМ:
1 этап: постановка задачи (словесная
формулировка задачи, определение формы
выдачи результатов, описание входных,
промежуточных и выходных данных) —
использовать кнопку «Надпись» для
текстового сообщения и MS
Equation для создания формул;
2 этап: анализ и исследование задачи,
модели (выбор метода решения задачи,
математическая интерпретация метода
решения задачи);
3 этап: разработка алгоритма
(блок-схема) – для организации цикла
использовать блок «Модификация», все
пункты задания реализовать последовательно
на одной странице
в
одной схеме, без организации меню
(при необходимости изменить размеры
листа).
-
Сохранить документ в папке H:Lab7
Предъявить
результаты преподавателю.
Варианты задач
к Лабораторной работе № 7
Вариант |
Задача |
Заштрихованная |
|
Ввести матрицу F(7,7) с
Вывести |
|
|
Ввести матрицу N(14,14) с
Вывести |
|
|
Ввести матрицу C(10,10) с
Вывести |
|
|
Ввести матрицу H(9,9) с
Вывести |
|
|
Ввести матрицу V(18,18) с
Вывести |
|
|
Ввести матрицу W(19,19) с
Вывести |
|
|
Ввести матрицу C(16,16) с
Вывести |
|
|
Ввести матрицу K(16,16) с
Вывести |
|
|
Ввести матрицу Q(15,15) с
Вывести |
|
|
Ввести матрицу H(17,17) с
Вывести |
|
|
Ввести матрицу K(10,10) с
Вывести |
|
|
Ввести матрицу P(10,10) с
Вывести |
|
|
Ввести матрицу B(12,12) с
Вывести |
|
|
Ввести матрицу W(8,8) с
Вывести |
|
|
Ввести матрицу D(7,7) с
Вывести |
|
|
Ввести матрицу Z(15,15) с
Вывести |
|
|
Ввести матрицу C(16,16) с
Вывести |
|
|
Ввести матрицу B(14,14) с
Вывести |
|
|
Ввести матрицу F(9,9) с
Вывести |
|
|
Ввести матрицу V(19,19) с
Вывести |
|
|
Ввести матрицу H(14,14) с
Вывести |
|
|
Ввести матрицу P(17,17) с
Вывести |
|
|
Ввести матрицу Q(7,7) с
Вывести |
|
|
Ввести матрицу B(8,8) с
Вывести |
|
|
Ввести матрицу N(10,10) с
Вывести |
|
|
Ввести матрицу P(8,8) с
Вывести |
|
|
Ввести матрицу C(12,12) с
Вывести |
|
|
Ввести матрицу N(13,13) с клавиатуры.
Вывести |
|
Дополнительная
часть
(max
3 балла,
принимается преподавателем только при
сданной основной части)
Составьте схему алгоритма решения
задачи согласно своему варианту (по
номеру группы).
Группа |
Задача Ввести Сформировать Вывести результаты |
МП-10 |
Порядок |
МП-11 |
Порядок |
МП-12 |
Порядок |
МП-13 |
Порядок |
МП-14 |
Порядок |
МП-15 |
Порядок |
МП-16 |
Порядок |
МП-17 |
Порядок |
МП-18 |
Порядок |
МП-19 |
Порядок |
Домашнее задание
Подготовиться к лабораторной работе
по теме «Прикладные задачи с использованием
алгоритмов обработки массивов»
(см. конспект лекций).
1 семестр 2013-2014г.г. Румянцева Е.Л., каф.
ИПОВС
Соседние файлы в папке Задания
- #
- #
- #
- #
- #
- #
- #