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

Интересное задание (Определить стоимость проезда на трамвае) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задание на функции - сумма квадратов чисел http://www.cyberforum.ru/cpp-beginners/thread711584.html
Дан интервал натуральных чисел . Напечатать на экране все те числа, которые принадлежат этому интервалу и которые можно выразить как сумму квадратов двух натуральных чисел (используя функцию, которая знает квадраты целых чисел)
C++ Динамический массив Здравствуйте, друзья! Застрял на освобождении памяти. Вот код: #include <iostream> #include <conio.h> using namespace std; struct test{ int a; }; http://www.cyberforum.ru/cpp-beginners/thread711582.html
Перевести из паскаля в С C++
Условие: Постройте массив p=2,p,...,p, где p=2, p=3, ..., p - n-е простое число uses crt; const maxn = 100; var a: array of word; n,i,j: integer; {---------------------------------------------------------------} function prostoe(a: integer): boolean;
C++ error C2679
// 2_lab.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv) { return 0; }
C++ аутентификация http://www.cyberforum.ru/cpp-beginners/thread711579.html
задание такое: у нас есть карточка банкомата мы вводим пин код, если ввели правильно сообщение "autentification success", если нет, то "please enter pin-code for"<<j<<"попытка" j - количество попытко равное 3. если вы использовали попытки выводит сообщение карточка заблокирована. помогите плз я не могу вьехать просто делал и массивом чисел и массивом строк короче голова кипит под вечер, гляньте...
C++ Почему без "статик" не работает? Дело в том что без него (без static) программка не работает корректно. по задумке (а оно так и выходит) в открывающемся окошке фоновый цвет задаваемый с помощью функции библиотеки OpenGL glClear(GL_COLOR_BUFFER_BIT); должен плавно меняться с черного на красный-оранжевый-желтый-белый... так и происходит, но если убрать "static" и объявить переменную unsigned long color = 0; а не static... подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
28.11.2012, 11:25     Интересное задание (Определить стоимость проезда на трамвае)
Цитата Сообщение от boberjajtsegolo Посмотреть сообщение
метод для определения кратчайшего пути
нет необходимости писать. При внимательном рассмотрении мы увидим, что каким бы длинным не был путь, стоимость проезда не изменится. Завтра накропаю, а щас всем спать.

Добавлено через 9 часов 29 минут
Хотя нет, я может быть поторопился с предыдущим выводом, ибо 00->01 можно добраться несколькими путями и стоимость будет разная. Но не суть. Всё равно кратчайший маршрут это лишнее. Эту задачу надо решать так:

Имеем (условно):

<две_рядом><две_не_рядом><пересечение_зон><конечная>

Каждую из этих сущностей это назовём "услуга"
Сколько таких услуг мы будем иметь в дороге? Одну или две или три ну и так далее.
Подсчитаем все варианты этих услуг, которые МЫ МОЖЕМ ИМЕТЬ В ДОРОГЕ. Вот они
(Начинаем с одной услуги, потом увеличиваем до двух и так далее)

1 услуга
++++++++++++
<две_рядом>
<две_не_рядом>

2 услуги
++++++++++++
<две_рядом><пересечение_зон>
<две_рядом><конечная>
<две_не_рядом><пересечение_зон>
<две_не_рядом><конечная>

3 услуги
++++++++++++
<две_не_рядом><пересечение_зон><конечная>
<две_не_рядом><пересечение_зон><пересечение_зон>

4 услуги
++++++++++++
<две_не_рядом><пересечение_зон><пересечение_зон><конечная>

5 услуг
++++++++++++
<две_не_рядом><пересечение_зон><пересечение_зон><конечная><конечная>

ВНИМАНИЕ! ДАЛЬШЕ БУДЕТ БАЗИРОВАНИЕ НА ВЫВОДАХ ВЫШЕ! ВРОДЕ ВСЕ ВАРИАНТЫ ПЕРЕБРАЛ, ИСПРАВЛЯЙТЕ, ЕСЛИ ЧТО!

Ну теперь попроще будет. Видим, что там где присутствует услуга <две_рядом>, там нет услуги <две_не_рядом>; Псевдокод:

C++
1
2
if (<две_рядом>)
else
Разберёмся с услугой <две рядом>, видим, что если рядом с <две_рядом> может быть только либо <пересечение_зон>, либо <конечная>; только одно из двух. Псевдокод:

C++
1
2
3
4
5
6
if (<две_рядом>)
 if (<пересечение_зон>)
 //Тут не else! Если тут будем писать else, то тогда получится, что варианта
 //<две_рядом> (с одной услугой то бишь) просто-напросто не существует!
 if<конечная>
else

Пусть одна станция X, другая Y. На практике если они <две_рядом> это будет означать
C++
1
((abs (X%10-Y%10))==1)
Так, а пересечение зон будет означать, что:
C++
1
(((X%10)>=3&&(Y%10)<=3)||((X%10)<=3&&(Y%10)>=3))
А использование конечной будет означать
C++
1
((X%10==5)||(Y%10==5))
ВНИМАНИЕ! ЕСЛИ КТО-ТО МОЖЕТ ПРОЩЕ ОПРЕДЕЛИТЬ, НАХОДЯТСЯ ДВЕ СТАНЦИИ РЯДОМ И ЕСТЬ ПЕРЕСЕЧЕНИЕ ЗОН ИЛИ НЕТ И НА СЧЁТ КОНЕЧНОЙ, ПУСТЬ НАПИШУТ ДРУГИЕ УЛОВИЯ!

Имеем псевдокод то есть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int st_0= X;
int st_1= Y;
int tsena= 0
 
if ((abs (X%10-Y%10))==1) {
 tsena+=2;
 if (((X%10)>=3&&(Y%10)<=3)||((X%10)<=3&&(Y%10)>=3))
  tsena+=1;
 if ((X%10==5)||(Y%10==5))
  tsena+=1;
}
else
Вот так примерно всё это и делается. Два ньюанса: условие, означающее <две_рядом> надо поправить, учитывая, что существуют закрытые перегоны:
C++
1
((abs (X%10-Y%10))==1)&&!((X==21&&Y==00)||(X==00&&Y==21))&&!((X==42&&Y==52)||(X==52&&Y==42))
И помним, что стоимость за использование конечной и за пересечение зон одинаковое; конечный псеводокод:

C++
1
2
3
4
5
6
7
8
9
10
int st_0= X;
int st_1= Y;
int tsena= 0
 
if ((abs (X%10-Y%10))==1)&&!((X==21&&Y==00)||(X==00&&Y==21))&&!((X==42&&Y==52)||(X==52&&Y==42)) {
 tsena+=2;
 if (((X%10)>=3&&(Y%10)<=3)||((X%10)<=3&&(Y%10)>=3))||((X%10==5)||(Y%10==5))
  tsena+=1;
}
else
Ну вот как-то так; в "else" надо вставить всё что касается <две_не_рядом> ; щас попробую рабочий код написать.

Добавлено через 7 минут
В псевдокодах надо писать так:
C++
1
2
int = X;
int = Y;
а не так;
C++
1
2
int st_0= X;
int st_1= Y;
 
Текущее время: 03:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru