Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
naska
0 / 0 / 0
Регистрация: 05.11.2011
Сообщений: 5
#1

Удалить из списка элементы, для которых сумма соседних значений меньше значения самого элемента - C++

05.11.2011, 14:18. Просмотров 305. Ответов 0
Метки нет (Все метки)

пожалуйста очень прошу..помогите..не получается вообще никак..нужно исправить данную программу под builder 6...оч нужно...
Построить линейный список из нескольких динамических переменных, содер-жащих вводимые целые числа. Удалить из него те элементы, для которых не выполняется условие: сумма значений соседних элементов (двух или одного, если это первый или последний элемент списка) больше значения этого элемента. Вывести полученный список.
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
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
 
struct doulist { //Структур содержщя лиейое число, тк же ссылки предыдыдущий 
//и следующий элеметы
int d;
doulist *next,*pred;
};
 
int Input (int *x,const char *xc); //Фукция ввод целого числ, возврщет код ошибки
int Input (double *x,const char *xc); //Фукция ввод ецелого числ, возврщет код ошибки
int Input (int *x,const char *xc, int min); //Фукция ввод целого числ c условием миимум, возврщет код ошибки
int Input (double *x,const char *xc, double min); //Фукция ввод ецелого числ с условием миимум, возврщет код ошибки
int InputListElem (doulist *a, int n); //Фукция ввод лиейого списк рзмером N, возврщет код ошибки
 
void check (int *test, int *noterror); //Фукция проверки корректости ввод, с выводом иформции для пользовтеля
doulist NewList (doulist *a); //Нходит мксимльое отклоеие элеметов от средего рифметического
void freememlist (doulist *a); //Фукция освобождеия пмяти из под лиейого списк
void OutList (doulist *a);
 
int clearbuf(FILE *f){ //Фукция очистки того, что отслось во входом потоке, после еккоректого ввод
int full=0; //Перемея содержит зчеие ходилось ли что-то в буфере или ет (1-д, 0-ет) 
while (!feof(f)&&(getc(f)!='\n')) full=1; //Поочерёдо изымем символы, если оперция прошл хоть рз, то присвем зчеие 1 для full
return full;
}
 
int main() {
double max;
doulist a;
int n,error;
const char *er[3]={ //Создём мссив с иформцией об ошибкх
"\nПрогрмм был зверше без ошибок.", //Отсутствие ошибок
"\nПользовтель досрочо прервл выполеие прогрммы.", //Прогрмм звершилсь по выбору пользовтеля
"\nОшибк выделеия пмяти!" //Пмять был выделе епрвильо
};
a.pred=a.next=NULL; 
printf ("\nДя прогрм удляет элеметы е соответсвующие условию - сумм зчеий соседих элеметов больше смого элемет из лиейого списк рзмером N");
error=Input(&n,"n",1); //Вводим количество элеметов списк 
if (!error) 
error=InputListElem(&a,n);
if (!error) //Проверяем отсутствие ошибок
a=NewList(&a); //Ищем мксимльое отклоеие
if (!error) //Проверяем отсутствие ошибок
OutList(&a);
freememlist(&a);
printf ("%s",er[error]); //Выводим иформцию о произошедших ошибкх
printf ("\nДля звершеия прогрммы жмите ENTER");
getchar();
}
 
//Перегружея фукция Input
int Input(int *x,const char *xc){ //Ввод целого числ, первый ргумет - укзтель вводимое число, второй - его идетификтор
int test,er,error=0;
do {
printf ("\nВведите зчеие %s (зчеие должо быть целым) ",xc); //Выводим экр иформцию о вводе
er=scanf("%i",x)==0; //Проверяем корректость ввод
er=clearbuf(stdin)||er!=0; //Чистим входой поток и проверяем, ет ли тм лиших символов 
test=1;
if (er) check(&error,&test); //Обрбтывем случй с еккоретым вводом
}
while (test==0); //В случе еккоректого ввод и желия пользовтелем продолжить - повторяем
return error;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2011, 14:18     Удалить из списка элементы, для которых сумма соседних значений меньше значения самого элемента
Посмотрите здесь:

Ограничить снизу значения тех элементов массива, значения которых меньше среднего для последовательности C++
Функция: Переписать в одномерный массив элементы четных столбцов, значения которых меньше 1 C++
(CИ)Из массива целых чисел X(N) удалить элементы, сумма цифр которых меньше 4. C++
C++ Вывести наибольшее из целых чисел К,для которых сумма 1+2+...+К будет меньше или равна N, и саму эту сумму.
Вывести наибольшее из целых N, для которых сумма 1+1\2+...+1\N будет меньше А, и саму эту сумму. C++
Найти два соседних элемента массива, сумма которых максимальна C++
Переписать из одного массива в другой все элементы, значения которых больше -1.8 и меньше 2.7 C++
C++ Найти такие элементы, у которых оба соседних элемента, как и сам он, делятся нацело на одно и то же число
Определить для данной последовательности среднее геометрическое компонентов, значения которых меньше 0.5 C++
C++ Из массива структур "Авто" удалить все элементы, у которых год выпуска меньше заданного
Найти два соседних элемента массива, сумма которых минимальна C++
Определить номера столбцов матрицы, в которых сумма элементов больше значения первого элемента C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru