Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 4
1

Сжать массив, удалив из него все элементы, модуль которых находится в заданном интервале

20.10.2011, 13:50. Показов 1231. Ответов 6
Метки нет (Все метки)

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


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

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#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;
}
 Комментарий модератора 
Используйте теги форматирования кода!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2011, 13:50
Ответы с готовыми решениями:

Сжать массив, удалив из него все элементы, модуль которых находится в интервале
Привет всем, помогите поймать ошибку в коде, пожалуйста. Задача: Сжать массив, удалив из него все...

Сжать массив, удалив из него элементы, величина которых находится в заданном интервале
В одномерном массиве, состоящем из n вещественных элементов, вычислить: Сжать массив, удалив из...

Сжать массив, удалив из него элементы, модуль которых находится в интервале [a, b], задаваемого пользователем
:( Ребята нужен h e l p :( Составить программу, формирующую одномерный массив, состоящий из N...

Сжать массив, удалив из него все элементы, величина которых находится в интервале
Сжать массив, удалив из него все элементы, величина которых находится в интервале . Место, которое...

6
387 / 294 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
20.10.2011, 19:33 2
"N вещественных элементов" - массив должен быть динамичным....?
0
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 4
20.10.2011, 19:47  [ТС] 3
Цитата Сообщение от KeyGen Посмотреть сообщение
"N вещественных элементов" - массив должен быть динамичным....?
в задании этого не указанно ,но я думаю что динамичным
0
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
20.10.2011, 19:55 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

2. примерно так:

C
1
2
3
4
5
6
7
8
9
10
11
// Границы интервала
float A=3.3, B=6.6;
int j=0;
 
for (int i=0; i<N; i++) {
if (fabs(FMass[i]) >= A && fabs(FMass[i]) <= B)
FMass[j++]=FMass[i];
}
 
for ( j ; j<N; j++)
FMass[j]=0.0;
0
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 4
25.10.2011, 13:36  [ТС] 5
вот вроде сделал программу но почему то не откомпилировать в borland c выдает ошибку
строчка 53: declaration is not allowed here. а в онлайн компиляторе http://codepad.org/ все компилирует
помогите решить данную проблему

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#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 );
}
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
25.10.2011, 13:38 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от starkover Посмотреть сообщение
строчка 53: declaration is not allowed here
Перенести 53 строчку на место 22
1
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 4
25.10.2011, 13:53  [ТС] 7
Цитата Сообщение от mimicria Посмотреть сообщение
Перенести 53 строчку на место 22
Спасибо!все заработало +
0
25.10.2011, 13:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2011, 13:53
Помогаю со студенческими работами здесь

Сжать массив, удалив из него все элементы, модуль которых находится в заданном интервале
Всем привет!) Прошу помочь в моей горе-задаче: Написать программу, работающую с одномерным...

Сжать массив, удалив из него все элементы, модуль которых находится в заданном интервале
Здравствуйте, есть такая задачка. С одномерным массивом, состоящим из n вещественных элементов,...

Сжать массив, удалив из него все элементы, модуль которых находится в заданном интервале
Ссылка удалена Неужели так трудно приложить имеющийся под рукой код в нормальном виде? вот...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru