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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
#1

Организация цикла С++ - C++

22.08.2012, 19:01. Просмотров 1341. Ответов 25
Метки нет (Все метки)

Добрый день. Нужно организовать ниже приведенный код таким образом чтобы программа никогда не выводила более 10 чисел в одной строке, и организовать это при помощи инструкции while или for, и без участия if (а также без логического оператора !, и арифметического оператора деление по модулю %). Как мне кажется, осуществить это можно при помощи вложений одного цикла в другой, но знаний для этого у меня не достаточно.

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
// Программа, которая запрашивает у пользователя два числа и
// выводит все числа, которые находятся между ними
#include <iostream>
 
int main()
{
 std::cout << "Введите, пожалуйста, 2 числа: ";
 int a, b;
 int max, min;
 std::cin >> a >> b;
 // проверка на то, какое число меньше, чтобы с него
 // начать отчёт
 if (a >= b) {
   max = a;
   min = b;  
 }
 else {
   max = b;
   min = a;
 }
 /*
 // организация при помощи цикла while
 while ( max > min ) {
   ++min;
   std::cout << min << " " << std::endl;
   } */
 // организация при помощи цикла for
 for (; max > min; ++min) {
   std::cout << min << " ";
   /* if (!(min%10)) std::cout << "\n"; // можно решить задачу
при помощи логического оператора !,
и арифметического оператора деление по модулю %. Но данный метод
не подходит по условию. */
 }
 return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2012, 19:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Организация цикла С++ (C++):

Применение цикла if для определения простых чисел. If внутри цикла for - C++
Доброго времени суток, подскажите пожалуйста, в чем тут дело. С кодом все хорошо, все работает, просто я пытаюсь докопаться до сути и...

Используя одну переменную цикла укажите возможные способы объявления заголовка счетного цикла. - C++
Используя одну переменную цикла укажите возможные способы объявления заголовка счетного цикла.

вывод на экран чисел 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12, с использованием одного цикла и что бы все printf были только в теле цикла - C++
вывод на экран чисел 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12, с использованием одного цикла и что бы все printf были только в теле...

Нахождение отрицательного цикла в графе и вывод цикла - C++
Вот программа по нахождению отрицательного цикла в графе и вывод цикла void Floyd(int GR, int parents , int V) { int checking; int...

Выполните, пожалуйста, задание, при этом вместо оператора цикла while используйте оператора цикла do_while - C++
Используя оператор цикла while, напишите программу для вычисления ниже следующей суммы. // fkdj.cpp: определяет точку входа...

Применяя оператор цикла FOR вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. - C++
Применяя оператор цикла FOR вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. Шаг изменения...

25
wtf?
19 / 19 / 0
Регистрация: 03.10.2010
Сообщений: 48
22.08.2012, 19:11 #2
C++
1
2
3
4
5
6
7
for (; max > min; ++min)
{
     for(int i = 0; i < 11; ++i)
     {
         /* выводим что хотим */
     }
}
0
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
22.08.2012, 19:40 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
int main() 
{
    int min,max,a,b;
    cout << "Введите, пожалуйста, 2 числа: ";cin>>a>>b;
    if (a >= b) 
    {
        max = a; min = b;  
    }
    else
    {
        max = b; min = a;
    }
    for(int i=min;i<max;)
    {
        for(int j=0;j<10;j++,i++)
            cout<<i<<" ";
        cout<<endl;
    }
    system("pause");
    return 0;
}
0
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
22.08.2012, 19:50 #4
Можно и одним, в чем проблема?
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
#include <iostream>
 
int main()
{
   std::cout << "Введите, пожалуйста, 2 числа: ";
   int a, b;
   int max, min;
   std::cin >> a >> b;
   // проверка на то, какое число меньше, чтобы с него
   // начать отчёт
   if (a >= b) {
      max = a;
      min = b;
   }
   else {
      max = b;
      min = a;
   }
 
   for (int i = 0; max > (min + i) && i < 10; ++i) {
      std::cout << (min + i) << " ";
   }
   return 0;
}
0
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
22.08.2012, 19:56 #5
Цитата Сообщение от Buckstabue Посмотреть сообщение
Можно и одним, в чем проблема?
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
#include <iostream>
 
int main()
{
   std::cout << "Введите, пожалуйста, 2 числа: ";
   int a, b;
   int max, min;
   std::cin >> a >> b;
   // проверка на то, какое число меньше, чтобы с него
   // начать отчёт
   if (a >= b) {
      max = a;
      min = b;
   }
   else {
      max = b;
      min = a;
   }
 
   for (int i = 0; max > (min + i) && i < 10; ++i) {
      std::cout << (min + i) << " ";
   }
   return 0;
}
Она у тебя ломается, вернее показывает первые десять чисел, а если я сделаю интервал от 1 до 50?.
0
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
22.08.2012, 20:20 #6
Не внимательно прочитал. Так она должна выводить все числа, но при этом после каждых 10 чисел выводить перевод строки? Тогда делай, как сказали выше через вложенный цикл, хотя задание тогда странное вообще

Добавлено через 3 минуты
Можно впринципе все равно один, использую условную операцию вида (a%b) == blabla ? ' ' : '\n' это ж не оператор, а операция. Так что можно и одним циклом отделаться.
Упс. Тут еще операцию % нельзя использовать, тогда не знаю, хотя это можно опять же заменить самодельной функцией
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 20:50  [ТС] #7
Цитата Сообщение от wtf? Посмотреть сообщение
for (; max > min; ++min)
{
for(int i = 0; i < 11; ++i)
{
/* выводим что хотим */
}
}
я пробовал организовать цикл подобным методом, но ожидаемого результата не достиг: получалось либо выводить по 10 одинаковых значений, либо 10 пустых строк после которого идёт следующее число.

Добавлено через 3 минуты
Инструкцию if, а также операторы ==; !=; !; &&; || - использовать по условию нельзя

Добавлено через 13 минут
т.е. кода:
C++
1
2
3
4
5
6
7
8
9
10
// проверка на то, какое число меньше, чтобы с него
 // начать отчёт
 if (a >= b) {
   max = a;
   min = b;  
 }
 else {
   max = b;
   min = a;
 }
быть не должно.
ЗЫ. Только при помощи while или for
0
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
22.08.2012, 20:58 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main() 
{
    int min,max,a,b;
    cout << "Введите, пожалуйста, 2 числа: ";cin>>a>>b;
    a>b?max=a,min=b:min=a,max=b;
    for(int i=min;i<max;)
    {
        for(int j=0;j<10;j++,i++)
            cout<<i<<" ";
        cout<<endl;
    }
    system("pause");
    return 0;
}
Этот вариант жутко не правильный!!!
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 21:02  [ТС] #9
Андрей, благодарю за труд, но что означает эта строка?
a>b?max=a,min=b:min=a,max=b;
0
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
22.08.2012, 21:07 #10
Использовал условную операцию. Да, и я даже не предсталяю как без условий написать проверку , чтобы выводило между интервал все числа , если их количество не кратно десяти.
Поэтому если интревал 1 - 25, то выведет до 30, это из-за того что ты задал такие критерии выполнения задания. Кто знает как сделать лучше, поправит меня.
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() 
{
    int min,max,a,b;
    cout << "Введите, пожалуйста, 2 числа: ";cin>>a>>b;
    a>b?max=a:min=a;//условная операция
    b>a?max=b:min=b;
    for(int i=min;i<max;)
    {
        for(int j=0;j<10;j++,i++)
            cout<<i<<" ";
        cout<<endl;
    }
    system("pause");
    return 0;
}
0
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
22.08.2012, 21:09 #11
Я эту проблему решил бы вот-так:
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
#include <stdio.h>
#include <conio.h>
 
#include <iostream>
 
using namespace std;
 
int main()
{
    int size = 100;
 
    int min = 0, max = size / 10;
    
    while (min < size)
    {
        for (int i = min; i <= max; i++)
            std::cout << i << " ";
 
        min = max + 1;
        max = max + 10;
 
        std::cout << endl;
    }
 
    _getch();
 
    return 0;
}
0
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
22.08.2012, 21:14 #12
Цитата Сообщение от zitxbit Посмотреть сообщение
Вариант неплохой, но опять же как и у меня, если задать интервал( в твоем случае size=75) 1-75, то выведет в моем варианте 1-80(в твоем 1-77) ,что не правильно. Да и он вводит числа с клавиатуры, что тоже по-моему влияет.
0
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
22.08.2012, 21:16 #13
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
#include <stdio.h>
#include <conio.h>
 
#include <iostream>
 
using namespace std;
 
int main()
{
    int size = 100;
 
    int min = 0, max = size / 10;
    
    while (min < size)
    {
        for (int i = min; i <= max; i++)
            std::cout << i << " ";
 
        min = max + 1;
        max = max + (size / 10);
 
        std::cout << endl;
    }
 
    _getch();
 
    return 0;
}
0
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
22.08.2012, 21:21 #14
zitxbit, без обид , но при тесте size=75, в новом варианте всё равно не правильно.
Плюс данные с клавиатуры, где можно ввести сначала макс-число, а потом мин-число.
Я не уверен, но вроде нельзя не выйти за границы без условия if.
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 21:23  [ТС] #15
Инициализация переменных должна осуществляться при помощи чтения со стандартного устройства ввода и сохранения их в объекте типа int.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2012, 21:23
Привет! Вот еще темы с ответами:

Организация программы - C++
Здравствуйте уважаемые программисты! Есть такая задача: Используйте одномерный массив для решения задачи. Компания платит своим...

Организация Меню в С++ - C++
Привет!!!!!!!!!! Народ подскажите как создать меню в С++ в консольном приложении???

Организация библиотеки - C++
Написал набор классов и функций для своего удобства, чтобы подключать их в любом проекте. Всего получилось 35 файлов. Поместил я эти...

Организация наследования - C++
Здраствуйте! У меня есть несколько классов: class Base { public: int baseGet() { return i; } void...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
22.08.2012, 21:23
Ответ Создать тему
Опции темы

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