Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2010, 18:35   #1
ValeraRU
 
Регистрация: 25.10.2010
Сообщений: 3
По умолчанию Решение задачи с массивом\двоийным в Turbo 3.0 C++

Здравствуйте,нужна помощь,в общем на лаб. по программированию сейчас идут задачи с массивом,в связи с нехваткой знаний обращаюсь к вам за помощью) помогите чем сможете
вот задача(пример)
Код:
/*
Подключние рабочих библиотек:
    <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;
}
помогите доработать =(
очень надо!
ValeraRU вне форума Ответить с цитированием
Старый 25.10.2010, 18:36   #2
ValeraRU
 
Регистрация: 25.10.2010
Сообщений: 3
По умолчанию


и вот вторая задача
пример:

Код:
ДВУМЕРНЫЕ МАССИВЫ

Пример задания:	Для заданной матрицы размером 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-й строки сдвигаются в последний столбец сверху вниз, из него - в последнюю строку справа налево,
из нее - в первый столбец снизу вверх, из него - в первую строку; для остальных элементов - аналогично.
ребята очень нужно,заранее благодарю!
нужно на завтра=(
ValeraRU вне форума Ответить с цитированием
Старый 25.10.2010, 20:56   #3
elja_1989
Пользователь
 
Регистрация: 16.03.2010
Сообщений: 58
По умолчанию

а что не понятно-то, ведь за бесценок за тебя никто писать не собирается..
elja_1989 вне форума Ответить с цитированием
Старый 25.10.2010, 22:56   #4
ValeraRU
 
Регистрация: 25.10.2010
Сообщений: 3
По умолчанию

Цитата:
Сообщение от elja_1989 Посмотреть сообщение
а что не понятно-то, ведь за бесценок за тебя никто писать не собирается..
всмысле бесценок?
здесь задача новичковая,которая не требует больших усилий,поэтому я обращаюсь к вам!
ValeraRU вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
turbo pascal решение задач sting Помощь студентам 6 16.11.2012 17:29
Решение задачна языке Turbo Pascal... Allen Iverson Фриланс 1 01.10.2009 08:42
Задачи по Turbo Pascal JennyTanaka Помощь студентам 6 08.04.2009 20:38
2 задачи с массивом на паскале Карабин Помощь студентам 9 02.04.2009 18:24
2 задачи по Турбо Паскалю. С массивом Tubus Помощь студентам 3 15.12.2008 18:49