интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
1

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

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

Author24 — интернет-сервис помощи студентам
Добрый день. Нужно организовать ниже приведенный код таким образом чтобы программа никогда не выводила более 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2012, 19:01
Ответы с готовыми решениями:

Организация цикла сравнения значений элементов двух массивов
Надо, чтобы программа сравнивала РАЗНЫЕ элементы ОДНОГО МАССИВА. Например, со и т.п. Организовал...

Организация цикла без использования оператора цикла
Вычислить значение функции:F=система из 3-х уравнений...1 ур-ие:2*a*Y, при Y&gt;0..2...

Организация цикла
Помогите пожалуйста найти ошибки! Ввожу исходные данные, а результат получается на 1 больше!...

Организация цикла в макросе
Помогите, пожалуйста сделать макрос! Есть файл Excel с листами «Общий», n1, n2, ... n15. Необходимо...

25
19 / 19 / 13
Регистрация: 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
348 / 269 / 128
Регистрация: 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
179 / 127 / 25
Регистрация: 12.01.2012
Сообщений: 623
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
348 / 269 / 128
Регистрация: 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
179 / 127 / 25
Регистрация: 12.01.2012
Сообщений: 623
22.08.2012, 20:20 6
Не внимательно прочитал. Так она должна выводить все числа, но при этом после каждых 10 чисел выводить перевод строки? Тогда делай, как сказали выше через вложенный цикл, хотя задание тогда странное вообще

Добавлено через 3 минуты
Можно впринципе все равно один, использую условную операцию вида (a%b) == blabla ? ' ' : '\n' это ж не оператор, а операция. Так что можно и одним циклом отделаться.
Упс. Тут еще операцию % нельзя использовать, тогда не знаю, хотя это можно опять же заменить самодельной функцией
0
интересующийся
311 / 282 / 93
Регистрация: 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
348 / 269 / 128
Регистрация: 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
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 21:02  [ТС] 9
Андрей, благодарю за труд, но что означает эта строка?
a>b?max=a,min=b:min=a,max=b;
0
348 / 269 / 128
Регистрация: 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
96 / 748 / 279
Регистрация: 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
348 / 269 / 128
Регистрация: 14.11.2010
Сообщений: 482
22.08.2012, 21:14 12
Цитата Сообщение от zitxbit Посмотреть сообщение
Вариант неплохой, но опять же как и у меня, если задать интервал( в твоем случае size=75) 1-75, то выведет в моем варианте 1-80(в твоем 1-77) ,что не правильно. Да и он вводит числа с клавиатуры, что тоже по-моему влияет.
0
96 / 748 / 279
Регистрация: 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
348 / 269 / 128
Регистрация: 14.11.2010
Сообщений: 482
22.08.2012, 21:21 14
zitxbit, без обид , но при тесте size=75, в новом варианте всё равно не правильно.
Плюс данные с клавиатуры, где можно ввести сначала макс-число, а потом мин-число.
Я не уверен, но вроде нельзя не выйти за границы без условия if.
0
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 21:23  [ТС] 15
Инициализация переменных должна осуществляться при помощи чтения со стандартного устройства ввода и сохранения их в объекте типа int.
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 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
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
22.08.2012, 21:36  [ТС] 17
Цитата Сообщение от Thinker Посмотреть сообщение
min = (a > b ? b : a);
* * max = (a > b ? a : b);
Такого быть не должно: только начало учебника а тот код явно где-то с середины
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 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
96 / 748 / 279
Регистрация: 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
интересующийся
311 / 282 / 93
Регистрация: 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
22.08.2012, 21:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2012, 21:52
Помогаю со студенческими работами здесь

Организация цикла с постусловием
Здравствуйте, подскажите пож-ста можно ли каким-либо образом в фортране 90 организовать цикл с...

Организация правильного цикла
Есть строка, в которой, допустим, 20 символов. Нужно после определенного элемента присвоить...

Стековый калькулятор: организация цикла
Здравствуйте, написал калькулятор очень простой на стеке, но проблема возникла с организацией...

Организация цикла чтения данных из файла
55 stroka в файле var f:text; надо вывести данные в программу. Как это сделать через while not...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru