C++ Turbo 3.0 Задача с массивом!
Здравствуйте,нужна помощь,в общем на лаб. по программированию сейчас идут задачи с массивом,в связи с нехваткой знаний обращаюсь к вам за помощью) помогите чем сможете
вот задача(пример)
Код:
/*
Подключние рабочих библиотек:
<stdio.h> - библиотека ввода/вывода
*/
#include <stdio.h>
int main(int argc, char* argv[])
{
/* Именованная константа, определяющая количество элементов массива */
const MAX_ELEMENTS = 8;
/* Объявление и инициализация переменных */
float m[MAX_ELEMENTS];
float sum = 0;
float result = 1;
int iMax, iMin;
/* Запрашиваем ввод данных с клавиатуры */
for (int i = 0; i < MAX_ELEMENTS; i++)
{
printf("m[%d] = ", i);
scanf("%f", &m[i]);
}
/* Принимаем индексы максимального и минимального массива равными 0 */
iMin = iMax = 0;
for (i = 0; i < MAX_ELEMENTS; i++)
{
/* Вычисляем сумму отрицательных элементов массива */
if (m[i] < 0) sum += m[i];
/* Находим индексы максимального и минимального элементов массива */
if (m[i] > m[iMax]) iMax = i;
if (m[i] < m[iMin]) iMin = i;
}
/* Находим произведение элементов массива, находящихся между минимальным и максимальными элементами */
for (i = ((iMax < iMin) ? iMax : iMin);
i <= ((iMax > iMin) ? iMax : iMin);
result *= m[i++]);
/* Выводим на экран результат вычислений */
printf("\nСумма отрицательных элементов = %.2f\n", sum);
printf("Результат = %.2f\n\n", result);
/* Сортировка элементов массива по возрастанию */
for (i = 0; i < MAX_ELEMENTS; i++)
{
for (int j = i + 1; j < MAX_ELEMENTS; j++)
{
if (m[i] > m[j])
{
result = m[i];
m[i] = m[j];
m[j] = result;
}
}
}
/* Вывод на экран отсортированного по возрастанию массива */
printf("Отсортированный массив:\n");
for (i = 0; i < MAX_ELEMENTS; printf("%.2f ", m[i++]));
return 0;
}
Результат выполнения программы:
m[0] = 3
m[1] = 7
m[2] = -4
m[3] = 8
m[4] = -1
m[5] = 9
m[6] = 0
m[7] = 7
Сумма отрицательных элементов = -5.00
Результат = 288.00
Отсортированный массив:
-4.00 -1.00 0.00 3.00 7.00 7.00 8.00 9.00
вот условие(моей задачи)
Код:
В одномерном массиве, состоящем из п вещественных элементов, вычислить:
1) сумму положительных элементов массива;
2) произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
Упорядочить элементы массива по убыванию.
и вот что я написал
Код:
#include <stdio.h>
#include <math.h>
int main(int argc, char* argv[])
{
const MAX_ELEMENTS = 80;
float m[MAX_ELEMENTS];
float sum = 0;
float result = 1;
int iMax, iMin,n;
FILE *in=fopen("1.txt","r");
fscanf(in,"%d", &n);
for (int i = 0; i < n; i++)
{
// printf("m[%d] = ", i);
fscanf(in,"%f", &m[i]);
}
iMin = iMax = 0;
for (i = 0; i < MAX_ELEMENTS; i++)
{
if (m[i] > 0) sum += m[i];
if (m[i] > m[iMax]) iMax = i;
if (m[i] < m[iMin]) iMin = i;
}
for ( i = ((iMax < iMin) ? iMax : iMin);
i <= ((iMax > iMin) ? iMax : iMin);
result *= m[i++]);
printf("\n summa polojitelinih 4isel = %.2f\n", sum);
printf("rezultat = %.2f\n\n", result);
for (i = 0; i > MAX_ELEMENTS; i--)
{
for (int j = i - 1; j < MAX_ELEMENTS; j--)
{
if (m[i] < m[j])
{
result = m[i];
m[i] = m[j];
m[j] = result;
}
}
}
printf("otsortirovanii massiv:\n");
for (i = 0; i < MAX_ELEMENTS; printf("%.2f ", m[i++]));
return 0;
}
помогите доработать =(
очень надо!
и вот вторая задача
пример:
Код:
ДВУМЕРНЫЕ МАССИВЫ
Пример задания: Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом. Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
Пример решения задачи:
#include <stdio.h>
int main(int argc, char* argv[])
{
/* Объявляем и инициализируем матрицу 8х8 */
int matrix[8][8] = {
{ 2, 7, 2, 7, 1, 4, 0, 3 },
{ 1, 0, 7, 6, 0, -8, 3, 5 },
{ 2, 7, 1, 8, 1, 4, 9, 3 },
{ 9, 2, 8, 5, 2, 0, 0, 6 },
{ 7, 1, 1, 3, 9, 3, 9, 1 },
{ 8, 2, 4, 9, 1, -6, 4, 9 },
{ 0, 3, 9, 0, 9, 4, 8, 8 },
{ 1, 8, 3, 2, 8, 2, 8, 0 }
};
int i, j, iSumm; /* Счетчик и переменная для хранения суммы */
bool bFlag; /* Флаг */
/*----------------------------------------------*/
/* П Е Р В А Я Ч А С Т Ь З А Д А Н И Я */
/*----------------------------------------------*/
printf("k = ");
for (i = 0; i < 8; i++)
{
/* Присваиваем Флагу исходное значение */
bFlag = true;
for (j = 0; j < 8; j++)
{
/* Сравниваем элемент i-й строки j-го столбца с элементом j-й строки i-го столбца. В случае их несоответствия присваиваем Флагу значение Ложь и прерываем цикл по j конструкцией break */
if (matrix[i][j] != matrix[j][i])
{
bFlag = false;
break;
}
}
/* В случае сохранения флагом исходного значения выводим на экран номер соответствующей строки */
if (bFlag) printf("%d ", i);
}
/*----------------------------------------------*/
/* В Т О Р А Я Ч А С Т Ь З А Д А Н И Я */
/*----------------------------------------------*/
printf("\n\n");
for (i = 0; i < 8; i++)
{
/* Присваиваем переменным исходные значения */
bFlag = false;
iSumm = 0;
for (j = 0; j < 8; j++)
{
/* При нахождение хотя бы одного отрицательного элемента присваиваем Флагу значение Истина, обозначающее необходимость вывода Суммы на экран */
if (matrix[i][j] < 0) bFlag = true;
/* Суммируем значения элементов i-й строки */
iSumm += matrix[i][j];
}
/* В случае нахождения в строке хотя бы одного отрицательного элемента выводим на экран сумму элементов i-й строки */
if (bFlag) printf("Сумма элементов строки #%d = %d\n", i, iSumm);
}
return 0;
}
Результат выполнения программы:
k = 2 6
Сумма элементов строки #1 = 14
Сумма элементов строки #5 = 31
что надо сделать мне :
Цитата:
Осуществить циклический сдвиг элементов квадратной матрицы размерности МхN вправо на k элементов таким образом: элементы 1-й строки сдвигаются в последний столбец сверху вниз, из него - в последнюю строку справа налево, из нее - в первый столбец снизу вверх, из него - в первую строку; для остальных элементов - аналогично.
|
ребята очень нужно,заранее благодарю
|