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

Задача про водопровод - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ с++ http://www.cyberforum.ru/cpp-beginners/thread417433.html
Задание:Найти простые числа, такие что сумма их цифр,а также сумма цифр следующего за ним простого числа делилась на 7. Вывести число таких чисел.(от 7 до 32байт минимальный диапазон)На с++
C++ Нужно написать программу, печатающую все буквы латинского алфавита от Z до A Помогите пожалуйста! Нужно написать программу, печатающую все буквы латинского алфавита от Z до A. http://www.cyberforum.ru/cpp-beginners/thread417432.html
C++ Тип char ошыбка в обьявлении исправте хто может
Всем здрасте! :) А почему когда я пишу так при обьявлении типа char: char name={f,r,a,n,c,a,null}; Компилятор выдает ошыбку!Помогите пожалуста укажыте пожалуста ошыбку.По идее прога должна отображать на экране слово «franca» .Не нужно писать всю программу просто укажыте ошыбки в этой строчке или напишыте правильно.Ошыбки только в этой строчке потому что когда я пишу так: char...
C++ Упорядочить слова заданного предложения в соответствии с ростом их длины.
Упорядочить слова заданного предложения в соответствии с ростом их длины. помогите пожалуйста решить, заранее спасибо
C++ Подсчет всех различных сумм http://www.cyberforum.ru/cpp-beginners/thread417408.html
Здравствуйте. Мне необходимо реализовать следующее. Есть n наборов чисел по li штук.i=1,n. необходимо посчитать все возможные суммы из всех этих чисел, по одному из каждого i набора. Пример: 1 набор: 10 20 30 40 2 набор: 50 60 3 набор: 70 80 90 s1=10+50+70 s2=10+50+80 s3=10+50+90 и т.д. Помогите, пожалуйста!
C++ fstream Дан текстовый файл. Осуществить посимвольную чередующуюся печать файла в прямом и обратном направлении в новый файл. Например, если в файле было слово ЛУНА, то в результирующем файле должно быть слов ЛАУННУАЛ. Очень нужно) подробнее

Показать сообщение отдельно
crewww
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
28.12.2011, 20:43  [ТС]     Задача про водопровод
Цитата Сообщение от valeriikozlov Посмотреть сообщение
ладно, все понятно, вот комментарии:
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
void rec(int sum, int fl, int pred, int col)// sum - сумма уже набранной длины (для первого или для второго отрезка), 
//fl==0 если набираем длину для первого отрезка, fl==1 если набираем длину для второго отрезка
// индекс труб, которые перебираем на данном вызове rec()
// col - количество труб, которые уже использовали для достижения текущего значения
{
        
        if(fl==1)// если набираем вторую длину
        {
                if(sum==y1)// если вторую длину набрали
                {
                        if(res==-1)// если результата еще не было
                                res=col;// то результат равен col
                        else// если результат уже был
                        {
                                if(res>col)// если полученное значение меньше записанного результата
                                        res=col;// то результат равен этому значению
                        }
                        return;// возврат из функции
                }
                if(pred==k)// если достигли конца массива струбами
                        return;// возврат из функции
                int i;
                for(i=0; i<=c[pred]; i++)// перебираем трубы с текущим индексом (pred)
                {
 
                        rec(sum+i*l[pred], fl, pred+1, col+i);// то прибавляем их длину
                                                if(i!=0)
                                                        rec(sum-i*l[pred], fl, pred+1, col+i);// то убавляем их длину
                }
        }
        else// если набираем первую длину
        {
                if(sum==x1)// если первую длину набрали
                {
                        rec(0, 1, 0, col);// начинаем набирать вторую длину
                }
                else
                {
                        if(pred==k)// если достигли конца массива струбами
                                return;// возврат из функции
                        int i, tmp=c[pred];
                        for(i=0; i<=tmp; i++)// перебираем трубы с текущим индексом (pred)
                        {
                                c[pred]=tmp-i;// убавляем значение задействованных труб
                                rec(sum+i*l[pred], fl, pred+1, col+i);// то прибавляем их длину
                                                                if(i!=0)
                                                                        rec(sum-i*l[pred], fl, pred+1, col+i);/ то убавляем их длину
                                c[pred]=tmp;// в конце восстанавливаем значение
                        }
                }
        }
 
}
спасибо
могли бы вы пояснить последний момент по поводу return; как пояснить смысл этого оператора? боюсь меня могут спросить об этом, ведь нам не показывали что можно в процедуре использовать данный оператор

Добавлено через 34 минуты
и еще вопрос pred - это индекс труб которые уже использовали для достижения текущего значения
тогда fl - переменная определяющая какую трубу мы набираем в данный момент
 
Текущее время: 18:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru