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

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

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

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

22.08.2012, 19:01. Просмотров 1343. Ответов 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
Thinker
Эксперт С++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
22.08.2012, 21:34 #16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
int main()
{
    int j, i, min, max, a, b;
    std::cout << "Ââåäèòå, ïîæГ*ëóéñòГ*, 2 Г·ГЁГ±Г«Г*: ";
    std::cin >> a >> b;
    min = (a > b ? b : a);
    max = (a > b ? a : b);
    for(i = min; i <= max; )
    {
        for (j = 0; j < 10 && i <= max; ++i, ++j)
           std::cout << i << ' ';
        std::cout << std::endl;
    }
    std::system("pause");
    return 0;
}
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 21:36  [ТС] #17
Цитата Сообщение от Thinker Посмотреть сообщение
min = (a > b ? b : a);
* * max = (a > b ? a : b);
Такого быть не должно: только начало учебника а тот код явно где-то с середины
0
Thinker
Эксперт С++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
22.08.2012, 21:37 #18
А в остальном пойдет? При a != b можно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
int main()
{
    int j, i, a, b;
    std::cout << "Ââåäèòå, ïîæГ*ëóéñòГ*, 2 Г·ГЁГ±Г«Г*: ";
    std::cin >> a >> b;
 
    for(i = a; i <= b; )
    {
        for (j = 0; j < 10 && i <= b; ++i, ++j)
           std::cout << i << ' ';
        std::cout << std::endl;
    }
    for(i = b; i <= a; )
    {
        for (j = 0; j < 10 && i <= a; ++i, ++j)
           std::cout << i << ' ';
        std::cout << std::endl;
    }
    std::system("pause");
    return 0;
}
Если заранее известно, что a<=b, то можно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
int main()
{
    int j, i, a, b;
    std::cout << "Ââåäèòå, ïîæГ*ëóéñòГ*, 2 Г·ГЁГ±Г«Г*: ";
    std::cin >> a >> b;
 
    for(i = a; i <= b; )
    {
        for (j = 0; j < 10 && i <= b; ++i, ++j)
           std::cout << i << ' ';
        std::cout << std::endl;
    }
    std::system("pause");
    return 0;
}
1
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
22.08.2012, 21:39 #19
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
#include <stdio.h>
#include <conio.h>
 
#include <iostream>
 
using namespace std;
 
int main()
{
    int a = 0, b = 0;
    printf("a = "); scanf("%d",&a);
    printf("b = "); scanf("%d",&b);
 
    int min = a, max = 10;
    while (min < b)
    {
        for (int i = min; i <= max && i <= b; i++)
            std::cout << i << " ";
 
        min = max + 1;
        max = max + 10;
 
        std::cout << endl;
    }
 
    _getch();
 
    return 0;
}
1
Миниатюры
Организация цикла С++  
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 21:52  [ТС] #20
Цитата Сообщение от Thinker Посмотреть сообщение
1

#include <iostream>
int main()
{
* * int j, i, a, b;
* * std::cout << "Введите, пожалуйста, 2 числа: ";
* * std::cin >> a >> b;
for(i = a; i <= b; )
* * {
* * * * for (j = 0; j < 10 && i <= b; ++i, ++j)
* * * * * *std::cout << i << ' ';
* * * * std::cout << std::endl;
* * }
* * std::system("pause");
* * return 0;
}
прошу прощения за то, что сразу не изложил всё условие полностью:
Организация цикла С++

Добавлено через 2 минуты
Цитата Сообщение от zitxbit Посмотреть сообщение
printf("a = "); scanf("%d",&a);
* * printf("b = "); scanf("%d",&b);
по условию, это быть не должно
0
Thinker
Эксперт С++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
22.08.2012, 22:07 #21
При a != b вот так можно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
int main()
{
    int j, i, a, b;
    std::cout << "Ââåäèòå, ïîæГ*ëóéñòГ*, 2 Г·ГЁГ±Г«Г*: ";
    std::cin >> a >> b;
 
    for(i = a; i <= b; )
    {
        for (j = 0; (j < 10) * (i <= b); ++i, ++j)
           std::cout << i << ' ';
        std::cout << std::endl;
    }
    for(i = b; i <= a; )
    {
        for (j = 0; (j < 10) * (i <= a); ++i, ++j)
           std::cout << i << ' ';
        std::cout << std::endl;
    }
    std::system("pause");
    return 0;
}
При a<=b просто удалите второй for
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 22:16  [ТС] #22
Отличный вариант! Благодарю за помощь. Подходит под все условия. Я тут тоже мысль намыслил, как по мне, чуть по-проще:

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
// Программа выводящая на экран числа, в диапазоне                              
// обозначенном пользователем, при условии,                                     
// что в каждой строке не будет более 10 цифр                                   
// при помощи инструкции while или for (без if;                                 
// ==; !=; !; &&; ||                                                            
 
#include <iostream>
 
int main()
{
  int a, b, max, min;
  std::cout << "Введите, пожалуйста, два числа: ";
  std::cin >> a >> b;
  // инициализация переменных min и max                                         
  min = a;
  max = b;
  while (min < max) {
    for (int j = 0; j <= 9; ++j)
      std::cout << ++min << " ";
    std::cout << "\n";
  }
  // повторная инициализация для нового цикла                                   
  min = a;
  max = b;
  while (max < min) {
    for (int j = 0; j <=9; ++j)
      std::cout << ++max << " ";
    std::cout << "\n";
  }
  return 0;
}
0
Thinker
Эксперт С++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
22.08.2012, 22:19 #23
xtorne21st, а попробуйте в своем варианте числа a=1, b=5. Не то получится при условии что нужно вывести от 1 до 5 (и ничего лишнего)
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 22:28  [ТС] #24
Да, действительно не то. Не могу разобраться в вашем коде. Не пойму условие цикла:
C++
1
(j < 10) * (i <= b)
. Как оно работает?
0
Thinker
Эксперт С++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
22.08.2012, 22:31 #25
Любое целое ненулевое число в С/С++ это истина. Далее, любое логическое выражение приводится к 0 (ложь) или 1 (истина). Поэтому
(j < 10) * (i <= b)
равносильно
(j < 10) && (i <= b),
так как выражения в скобках равно 0 либо 1. Если оба выражения истинны, то при произведении получаем 1 (истина), иначе 0 (ложь)
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 23:00  [ТС] #26
Теперь всё ясно. А я начал мыслить в сторону хитроумного арифметического выражения. Ещё раз спасибо. Тему можно закрывать
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2012, 23:00
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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