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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2017, 19:18   #1
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию Список.

Здравствуйте!
Такое вот задание:
Даны натуральное число N и действительные числа A1, …, AN. Заменить в последовательности A1, …, AN единицей числа, равные или превосходящие единицу, а нулем числа, меньшие единицы. Получить (1+R)/(1+S), где R – сумма всех членов последовательности, меньших единицы, S – сумма всех членов последовательности, равных или превосходящих единицу.
Вот так вот я его сделал:
Код:
#include<iostream>
#include<conio.h>
using namespace std;
struct link
{
	double data;//действительное число
	link* next;//указатель на следующий элемент спмска
};
///////////////////////////////////////////////
class linklist
{
private:
	link* first;
public:
	linklist()
	{
		first = NULL;
	}
	void additen();
	void display1();
	void display2();
};
/////////////////////////////////////////////////
void linklist::additen()//Наполнение списка
{
	int n;
	double d;
	cout << "Введите натуральное число, которому будет равно количество вводимых действительных чисел ";
	cin >> n;//натуральное число*/
	while (n<1)
	{
		if (n<1)
			cout << "Число не натуральное, введите корректное число";
		cin >> n;
	}
	for (int j = 0; j<n; j++)
	{
		cout << "Введите действительное число ";
		cin >> d;
		link* newlink = new link;
		newlink->data = d;
		newlink->next = first;
		first = newlink;
	}
}
////////////////////////////////////////
void linklist::display1()//Вывод содержимого списка
{
	cout << "Содержимое списка таково:\n";
	link* current = first;
	while (current)
	{
		cout << current->data << endl;
		current = current->next;
	}
}
//////////////////////////////////////////////
void linklist::display2()//Замена значений списка на 1 или 0 и суммация значений меньше единицы и больше или равных единицы
{
	link* current = first;
	double d=0, r=0, s=0;
	while (current)
	{
		if (current->data >= 1)
		{
			s += current->data;
			current->data = 1;

		}

		else
			r += current->data;
			current->data = 0;
		current = current->next;
	}
	d = (1 + r) / (1 + s);
	cout << "решением задачи является: " << d;
}
/////////////////////////////////////////////
int main()
{
	setlocale(LC_ALL, "rus");
	linklist li;
	li.additen();
	li.display1();
	li.display2();
	li.display1();
	_getch();
	return 0;
}
Однако, черт побери, при последнем срабатывании метода display1() список оказывается наполнен нулями...
Подскажите пожалуйста, кто-нибудь, в чем косяк?
KAMLS вне форума Ответить с цитированием
Старый 19.12.2017, 00:56   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от KAMLS Посмотреть сообщение
Код:
else 
    r += current->data; 
    current->data = 0;
Фигурные скобки не стоят
Black Fregat вне форума Ответить с цитированием
Старый 19.12.2017, 05:29   #3
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Блин! Точно!!!
Я же когда переделывал сказал себе надо фигурные скобки поставить!!!!!
(там раньше один оператор был, так же как и в if. Там сделал а тут нет)
Спасибо))
KAMLS вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Сформировать список студентов по группам факультета ИВТ. Список по группам формировать по возрастанию количества неуспевающих студентов. Список выдать UserNopro Помощь студентам 0 08.11.2017 14:31
лабораторная работа на тему Список спортсменов. задание отсортировать список Гуменчук_Дарья Помощь студентам 3 15.03.2016 12:05
создать список л3 из элементов входящих и в список л1 и в список л2 goosha_gio C++ Builder 1 27.06.2013 22:22
Создать односвязный список и вывести его на экран. Из этого списка создать новый список по указанному ниже правилу и новый список San111 Паскаль, Turbo Pascal, PascalABC.NET 1 15.05.2012 22:08
Список с заглавным звеном, из текстового файла получить список из записей и по нему уже сделать задание Zigfried Помощь студентам 2 04.10.2010 20:29