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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 19:01     Организация цикла С++ #1
Добрый день. Нужно организовать ниже приведенный код таким образом чтобы программа никогда не выводила более 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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)
     {
         /* выводим что хотим */
     }
}
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
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;
}
Buckstabue
 Аватар для 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;
}
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
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?.
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
22.08.2012, 20:20     Организация цикла С++ #6
Не внимательно прочитал. Так она должна выводить все числа, но при этом после каждых 10 чисел выводить перевод строки? Тогда делай, как сказали выше через вложенный цикл, хотя задание тогда странное вообще

Добавлено через 3 минуты
Можно впринципе все равно один, использую условную операцию вида (a%b) == blabla ? ' ' : '\n' это ж не оператор, а операция. Так что можно и одним циклом отделаться.
Упс. Тут еще операцию % нельзя использовать, тогда не знаю, хотя это можно опять же заменить самодельной функцией
xtorne21st
интересующийся
300 / 271 / 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
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
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;
}
Этот вариант жутко не правильный!!!
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 21:02  [ТС]     Организация цикла С++ #9
Андрей, благодарю за труд, но что означает эта строка?
a>b?max=a,min=b:min=a,max=b;
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
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;
}
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 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;
}
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
22.08.2012, 21:14     Организация цикла С++ #12
Цитата Сообщение от zitxbit Посмотреть сообщение
Вариант неплохой, но опять же как и у меня, если задать интервал( в твоем случае size=75) 1-75, то выведет в моем варианте 1-80(в твоем 1-77) ,что не правильно. Да и он вводит числа с клавиатуры, что тоже по-моему влияет.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 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;
}
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
22.08.2012, 21:21     Организация цикла С++ #14
zitxbit, без обид , но при тесте size=75, в новом варианте всё равно не правильно.
Плюс данные с клавиатуры, где можно ввести сначала макс-число, а потом мин-число.
Я не уверен, но вроде нельзя не выйти за границы без условия if.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 21:23  [ТС]     Организация цикла С++ #15
Инициализация переменных должна осуществляться при помощи чтения со стандартного устройства ввода и сохранения их в объекте типа int.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 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;
}
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 21:36  [ТС]     Организация цикла С++ #17
Цитата Сообщение от Thinker Посмотреть сообщение
min = (a > b ? b : a);
* * max = (a > b ? a : b);
Такого быть не должно: только начало учебника а тот код явно где-то с середины
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 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;
}
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 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;
}
Миниатюры
Организация цикла С++  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2012, 21:52     Организация цикла С++
Еще ссылки по теме:

C++ Организация библиотеки
Организация исходников C++
C++ Нахождение отрицательного цикла в графе и вывод цикла

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

Или воспользуйтесь поиском по форуму:
xtorne21st
интересующийся
300 / 271 / 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);
по условию, это быть не должно
Yandex
Объявления
22.08.2012, 21:52     Организация цикла С++
Ответ Создать тему
Опции темы

Текущее время: 23:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru