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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2011, 16:27   #1
starkover
 
Регистрация: 20.10.2011
Сообщений: 4
По умолчанию Одномерные массивы & Borland C

Добрый день форумчани!просьба помочь знающих людей в Borland C.
имеется условие задания:
В одномерном массиве,состоящем из N вещественных элементов,вычислить:
1.максимальный элемент массива.
2.сумму элементов массива,расположенных с самого первого до последнего положительного элемента.
Сжать массив,удалив из него все элементы,модуль которых находится в интервале[A,B]
Освободившиеся в конце массива элементы заполнить нулями.


!!!имеются небольшие наработки в борланд с.сделал максимальный элемент массива,и сумму всех элементов.

#include <stdio.h>
#include <conio.h>
#define N 15
int main(void)
{ float FMass[N] = {0.11,-12.22,33.3304,-5.401,555.5102,
89.2,0.2,-1.22,22.1,1.22,-4.14,559.36,8.8,9.9,7.25};
float Summa = 0.0; float Sredn = 0.0; int i=0;
int IndexOfMax = -1; float fMax = FMass[0];

clrscr();

for(i=0;i<N;i++) // print Fmass:
{
printf("\n FMass[%d] = %+12.4f",i,FMass[i]);
}

// Summa: ("symma elementov")
for(i=0;i<N;i++)
{
Summa = Summa + FMass[i];
}
// IndexOfMax,fMax: ("maksimalni element massiva")
for(i=0;i<N;i++)
{
if(fMax < FMass[i])
{
IndexOfMax = i; fMax = FMass[i];
}
}

printf("\n\n Summa = %+12.4f \t IndexOfMax = %d fMax = %+12.3f",Summa,IndexOfMax,fMax);

getch();
return 1;
}
starkover вне форума Ответить с цитированием
Старый 20.10.2011, 16:49   #2
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

А в чем проблема-то? Используйте уже написанный код.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 20.10.2011, 16:56   #3
starkover
 
Регистрация: 20.10.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Сыроежка Посмотреть сообщение
А в чем проблема-то? Используйте уже написанный код.
проблемма в том что не могу сделать пункт 2.

2)Вычислить сумму элементов массива,расположенных с самого первого до последнего положительного элемента.
Сжать массив,удалив из него все элементы,модуль которых находится в интервале[A,B]
Освободившиеся в конце массива элементы заполнить нулями.


смог тока посчитать сумму всех элементов.
starkover вне форума Ответить с цитированием
Старый 20.10.2011, 17:05   #4
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от starkover Посмотреть сообщение
проблемма в том что не могу сделать пункт 2.

2)Вычислить сумму элементов массива,расположенных с самого первого до последнего положительного элемента.
Сжать массив,удалив из него все элементы,модуль которых находится в интервале[A,B]
Освободившиеся в конце массива элементы заполнить нулями.


смог тока посчитать сумму всех элементов.
С самого первого положительного
до последнего положительного,или, вообще, с первого элемента (не важно како1он: положительный или нет) и до последнего положительного?

Вам надо найти последний положительный элемент.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 20.10.2011, 17:41   #5
starkover
 
Регистрация: 20.10.2011
Сообщений: 4
По умолчанию

как я понял надо найти первый положительный элемент массива и последний и посчитать их сумму.только незнаю как это реализовать

Последний раз редактировалось starkover; 20.10.2011 в 17:47.
starkover вне форума Ответить с цитированием
Старый 20.10.2011, 17:47   #6
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от starkover Посмотреть сообщение
как я понял надо найти первый положительный элемент массива и последний и посчитать их сумму
Напишите как адгоритм

Код:
double * first_positive( double *first, double *last )
{
   for ( ; first !=last ; ++first )
   {
      if ( 0 < *first ) return ( first );
   }

   return ( last );
}

Эта функция находит первый положительный элемент в диапазоне [first, last ). Если такой не найден,то возвращается last.

Если у вас,допустим,сть массив размерности N:

Код:
double a[N];
то вызов алгоритма производмтсчя следующим образом

Код:
double *positive = first_positive( a, a + N );
Со мной можно встретиться на www.clipper.borda.ru

Последний раз редактировалось Сыроежка; 20.10.2011 в 17:51.
Сыроежка вне форума Ответить с цитированием
Старый 25.10.2011, 13:39   #7
starkover
 
Регистрация: 20.10.2011
Сообщений: 4
По умолчанию

вот вроде сделал программу но почему то не откомпилировать в borland c выдает ошибку
строчка 53: declaration is not allowed here.
вот сама 53 строчка int A = 0, B = 10, count = 0, j;

а в онлайн компиляторе http://codepad.org/ все компилирует
помогите решить данную проблему



#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define N 10

// Печать массива
void PrintArray ( int *a )
{
int i;
for ( i = 0; i < N; i++ )
printf ( "%d ", a [ i ] );
printf ( "\n" );
}

void main ( void )
{
int Array [ N ], // массив
max, // максимальный элемент
index, // номер элемента
lastPositive, // номер последнего полоэительного элемента
sum = 0; // сумма элементов

// активация датчика случайных чисел
srand ( time ( NULL ) );

// Заполняем массив слуяайным образом
for ( index = 0; index < N; index++ )
Array [ index ] = rand() %25 - 4;

// Пусть максимальный элемент будет первый
max = Array [ 0 ];
for ( index = 1; index < N; index++ )
// Если текущий элемент больше максимального, то...
if ( Array [ index ] > max )
max = Array [ index ];

// Плиск номера последнего положительного
for ( index = 0; index < N; index++ )
if ( Array [ index ] > 0 )
lastPositive = index;

// Суммируем элементы от первого до послденего полоджительного
for ( index = 0; index <= lastPositive; index++ )
sum += Array [ index ];

// Печать массива
PrintArray ( Array );
// Печать данных
printf ( "Max element of array: %d\n", max );
printf ( "Sum: %d\n", sum );

// Инициализируем отрезок, который нужно просмотреть
int A = 0, B = 10, count = 0, j;

index = 0; // Начнем с начала
while ( index < N - count )
{
// Если элемент находится из интеревала, то...
if ( Array [ index ] >= A && Array [ index ] <= B )
{
count += 1; // Увеличиваем счетчик таких элементов
// Выполянем сдвиг элементов
for ( j = index; j < N - count; j++ )
Array [ j ] = Array [ j + 1 ];
// Обнуляем текущий передвинутый элемент
Array [ N - count ] = 0;
// возврящаем позицию просмотра
index--;
}
index++;
}
// Печать нового массива
PrintArray ( Array );
}
starkover вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерные массивы как строки; на ЯП Си, среда – Borland C++5.02 L.M. Помощь студентам 3 04.07.2011 20:20
Одномерные массивы; на ЯП Си, среда – Borland C++5.02 L.M. Помощь студентам 18 01.07.2011 17:07
Borland Pascal одномерные массивы maksim-2804 Паскаль, Turbo Pascal, PascalABC.NET 1 20.06.2011 16:15
Borland C++ & MSWord prouser Общие вопросы C/C++ 0 26.04.2010 22:10
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12