Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Садовод - C++

27.11.2013, 17:47. Просмотров 228. Ответов 5
Метки нет (Все метки)

Помогите сделать задачу за циклом do while.
Садоводу нужно 18 кг минеральных удобрений. Получить все возможные варианты покупки удобрения, если в магазине продаются расфасовки по 5, 4 и 2 кг.
Вот я написал, но он не все варианты показывает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream.h>
using namespace std;
int main() {
int kil=0, x=0, y=0, z=0;
do {
    do {
        do { 
    if(x*5+y*4+z*2==18){
    cout<<x<<' '<<y<<' '<<z<<' '<<endl;
    kil++;
    }
            z++;
            }while(z<=9);
         y++;
        }while(y<=4);
    x++;
    }while(x<=3);
    cout<<"Kilkist="<<kil;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IntelCoreDuo
11 / 11 / 0
Регистрация: 09.11.2013
Сообщений: 52
27.11.2013, 18:15 #2
Цитата Сообщение от Kolbusdkiy Посмотреть сообщение
Помогите сделать задачу за циклом do while.
Садоводу нужно 18 кг минеральных удобрений. Получить все возможные варианты покупки удобрения, если в магазине продаются расфасовки по 5, 4 и 2 кг.
Вот я написал, но он не все варианты показывает.
Программа должна считать количество этих вариантов? Если да, то сколько ты насчитал вручную?
1
SatanaXIII
27.11.2013, 18:37
  #3

Не по теме:

Цитата Сообщение от Kolbusdkiy Посмотреть сообщение
kil
Kill с двумя l пишется.

0
17 / 17 / 1
Регистрация: 09.03.2013
Сообщений: 65
27.11.2013, 18:52 #4
На for'ax + говнокод. Попробую подправить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
int main() {
    for(int i=0; i<10; i++)
        for(int j=0; j<10; j++)
            for(int c=0; c<10; c++)
                if(i*2+j*4+c*5==18)
                {
                    for(int q = 0; q<i; q++) cout << "2 ";
                    for(int w = 0; w<j; w++) cout << "4 ";
                    for(int e = 0; e<c; e++) cout << "5 ";
                    std::cout << "\n";
                }
    system("pause");
    return 0;
}
0
Kolbusdkiy
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 112
27.11.2013, 19:16  [ТС] #5
Цитата Сообщение от IntelCoreDuo Посмотреть сообщение
Программа должна считать количество этих вариантов? Если да, то сколько ты насчитал вручную?
0 0 9
0 1 7
0 2 5
0 3 3
0 4 1
2 0 4
2 1 2
2 2 0
Всего: 8

Цитата Сообщение от SatanaXIII Посмотреть сообщение

Не по теме:


Kill с двумя l пишется.

Мне все равно с сколькими "l" оно пишется это моя переменная, как хочу так и называю.

Цитата Сообщение от Посмотреть сообщение
На for'ax + говнокод. Попробую подправить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
int main() {
    for(int i=0; i<10; i++)
        for(int j=0; j<10; j++)
            for(int c=0; c<10; c++)
                if(i*2+j*4+c*5==18)
                {
                    for(int q = 0; q<i; q++) cout << "2 ";
                    for(int w = 0; w<j; w++) cout << "4 ";
                    for(int e = 0; e<c; e++) cout << "5 ";
                    std::cout << "\n";
                }
    system("pause");
    return 0;
}
Мне на for'е не нужно... Нужен do while.
Если интересно, то вот эта задачка только за фором.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
using namespace std;
int main() {
int kil=0;
   for(int x=0; x<=3; x++)
        for(int y=0; y<=4; y++)
            for(int z=0; z<=9; z++)
               if(x*5+y*4+z*2==18){
                   cout<<x<<' '<<y<<' '<<z<<' '<<endl;
                   kil++;
               }
               cout<<"Kilkist="<<kil;
               return 0;
}
0
SatanaXIII
Супер-модератор
Эксперт С++
5619 / 2654 / 247
Регистрация: 01.11.2011
Сообщений: 6,552
Завершенные тесты: 1
28.11.2013, 08:36 #6
Цитата Сообщение от Kolbusdkiy Посмотреть сообщение
это моя переменная, как хочу так и называю
Справедливо.

Цитата Сообщение от Kolbusdkiy Посмотреть сообщение
Нужен do while.
Если интересно, то вот эта задачка только за фором.
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
#include <iostream.h>
 
int kil=0;
int x = 0, y = 0, z  = 0;
 
   do
     {
     y = 0;
     do
       {
       z = 0;
       do
         {
         if( x*5 + y*4 + z*2 == 18 )
           {
           cout<<x<<' '<<y<<' '<<z<<' '<<endl;
           kil++;
           }
         z++;
         }
         while( z<=9 );
       y++;
       }
       while( y<=4 );
     x++;
     }
   while( x<=3 );
 
cout<<"Kilkist="<<kil;
 
cin.ignore();
return 0;
}
0
28.11.2013, 08:36
Ответ Создать тему
Опции темы

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