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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2010, 19:15   #1
MaHTeP
 
Регистрация: 02.10.2010
Сообщений: 4
Вопрос ОДНОМЕРНЫЕ МАССИВЫ

Универ. Программирование. Лаба =(
Задание звучит так:
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) сумму положительных элементов массива;
2) произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
Упорядочить элементы массива по убыванию.
+ Массив надо вводить не в ручную, а из файла...

Ну общими усилиями написал я что-то похожее на код, помогите пожалуйста его доделать.
А если есть есть добрые энтузиасты, которые верят в людей, то буду благодарен ещё и за объяснения)


Вот сбстна сам код:

Код:
#include <stdio.h>
#include <math.h>
int main(int argc, char* argv[])
{

    const    MAX_ELEMENTS = 8;


    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;
}

Последний раз редактировалось Stilet; 02.10.2010 в 23:26.
MaHTeP вне форума Ответить с цитированием
Старый 02.10.2010, 19:50   #2
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Код:
#include <stdio.h>

int main( ){
    const int size = 5;
    float array[ size ] = { 6, 5, 9, 3, 0 };
    float maxi = 0, mini = 0;
    float max = array[ 0 ], min = array[ 0 ];
    float sum;
    printf( "Исходный массив :\n");
    for( int i = 0; i < size; ++i ){
	printf( "array[ %d ] = %f\n", i, array[ i ] );
	if( array[ i ] > max ){
	    max = array[ i ];
	    maxi = i;
	}
	if( array[ i ] < min ){
	    min = array[ i ];
	    mini = i;
	}
	if( array[ i ] > 0 )
	    sum += array[ i ];
    }
    printf( "Сумма положительныхых элементов = %f\n", sum );
    printf( "Максимальный элемент массива = %f\n", max );
    printf( "Минимальный элемент массива = %f\n", min );
    sum = 1;
    for( int from = ( maxi > mini ? mini : maxi ) + 1
	, to = ( maxi > mini ? maxi : mini ); from < to; ++from )
	sum *= array[ from ];
    printf( "Произведение элементов от максимального до минимального = %f\n", sum );
}
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 02.10.2010, 20:20   #3
MaHTeP
 
Регистрация: 02.10.2010
Сообщений: 4
По умолчанию

Спасибо что отозвался)
Но мне нужно вызывать массив из ранее созданного файла 1.txt .
А ещё сравнение элементов по модулю.
MaHTeP вне форума Ответить с цитированием
Старый 02.10.2010, 20:55   #4
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Код:
#include <stdio.h>
#include <math.h>

int main( ){
    const int size = 5;
    float array[ size ] = { 6, 5, 9, 3, 0 };
    float maxi = 0, mini = 0;
    float max = fabs( array[ 0 ] ), min = fabs( array[ 0 ] );
    float sum;
    printf( "Исходный массив :\n");
    for( int i = 0; i < size; ++i ){
	printf( "array[ %d ] = %f\n", i, array[ i ] );
	if( fabs( array[ i ] ) > max ){
	    max = fabs( array[ i ] );
	    maxi = i;
	}
	if( fabs( array[ i ] ) < min ){
	    min = fabs( array[ i ] );
	    mini = i;
	}
	if( array[ i ] > 0 )
	    sum += array[ i ];
    }
    printf( "Сумма положительныхых элементов = %f\n", sum );
    printf( "Максимальный элемент массива = %f\n", max );
    printf( "Минимальный элемент массива = %f\n", min );
    sum = 1;
    for( int from = ( maxi > mini ? mini : maxi ) + 1
	, to = ( maxi > mini ? maxi : mini ); from < to; ++from )
	sum *= array[ from ];
    printf( "Произведение элементов от максимального по модулю до минимального по модулю = %f\n", sum );
}
Ввод с файла организовать думаю посильная задача, мне лень :P
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 02.10.2010, 22:18   #5
MaHTeP
 
Регистрация: 02.10.2010
Сообщений: 4
По умолчанию

спасибо и на этом)
MaHTeP вне форума Ответить с цитированием
Старый 11.10.2010, 20:18   #6
MaHTeP
 
Регистрация: 02.10.2010
Сообщений: 4
По умолчанию

Запутался окончательно...
пытался доделать программу, и чувствую что только набуровил...

код:
Код:
#include <stdio.h>
#include <math.h>
int main(int argc, char* argv[])
{

    const    MAX_ELEMENTS = 8;


    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 (fabs(m[i] > m[iMax])) iMax = i;
	if (fabs(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;
}

Последний раз редактировалось MaTBeu; 11.10.2010 в 20:21.
MaHTeP вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
одномерные массивы в С++ Defa4ka Помощь студентам 1 08.06.2010 23:16
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
Одномерные массивы Repz1992 Помощь студентам 1 10.11.2009 18:05
Одномерные массивы в Си osichev Помощь студентам 20 02.06.2009 21:44
Одномерные массивы Дашуня Помощь студентам 1 06.12.2008 11:20