Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
5 / 5 / 1
Регистрация: 30.07.2011
Сообщений: 257
1

Вывести числа по правилу

19.08.2011, 10:41. Показов 2247. Ответов 34
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть массив чисел 1...n;
Надо вывести вот это
1...1
1...2
.....
n...n

Ну это что-то типа k значной логики, все те числа вывести, только 0 не фигурирует, да и вообще в массиве могут быть любые числа. Это как коротко записать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.08.2011, 10:41
Ответы с готовыми решениями:

Вывести числа по правилу
нужно сделать, чтобы машина выдавала такие числа, только чтобы можно было задавать любое число(n),...

Вывести числа на экран по правилу
надо чтобы на экран вывело: 8 6 6 4 4 4 2 2 2 2 знаю что надо через цикл for заранее...

Вывести числа в столбик по правилу с помощью вложенных циклов.
1 0 22 00 333 000 4444 0000 55555 00000

Заданы числа x и y. Если их сумма положительная, вывести на экран эти числа, иначе вывести их разницу
Помогите пожалуйста...Заданные числа x и y . Если их сумма положительная , вывести на экран эти...

34
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
19.08.2011, 10:53 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <iostream>
using namespace std;
const int N = 3;
 
void Rec(int *a, int i, int n)
{
   if (i < n)
      for (int j = 1; j < n; j++)
      {
         a[i] = j;
         Rec(a, i + 1, n);
      }
   else
   {
      for (int j = 0; j < n; j++)
         cout << a[j] << " ";
      cout << "\n";
   }
}
 
int main()
{
    int a[N] = {1, 2, 3};
    Rec(a, 0, N);
    return 0;
}
0
1080 / 1007 / 106
Регистрация: 28.02.2010
Сообщений: 2,889
19.08.2011, 11:00 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
24
25
26
#include <stdio.h>
 
const int n = 4;
char a[n] = {'a', 'b', 'c', 'd'};
char o[n+1] = {0};  // для вывода
 
int doit(int u = 0)
{
    // u - это индекс символа для вывода
    // с - это индекс симола, который выбираем из выборки (a[n])
    int c;
    for (c=0; c<n; c++)
    {
        o[u] = a[c];
        
        if (u==n-1) // если сейчас мы работаем с последним символом вывода, то...
            puts(o);    // вывести
        else
            doit(u+1);  // инача работать с очередным символом вывода
    }
}
 
int main()
{
    doit();
}
Добавлено через 42 секунды
Опять опоздал.
0
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
19.08.2011, 11:06 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
25
26
#include <iostream>
using namespace std;
const int N = 3;
 
void Rec(int *a, int i, int n)
{
   if (i < n)
      for (int j = 1; j <= n; j++)
      {
         a[i] = j;
         Rec(a, i + 1, n);
      }
   else
   {
      for (int j = 0; j < n; j++)
         cout << a[j] << " ";
      cout << "\n";
   }
}
 
int main()
{
    int a[N] = {1, 2, 3};
    Rec(a, 0, N);
    return 0;
}
1
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
19.08.2011, 11:12 5
Цитата Сообщение от AvengerAlive Посмотреть сообщение
Это как коротко записать?
C++
1
2
3
4
#include <iostream>
int main(){
    for (int arr[] = { 1, 2, 4, 7 }, size = sizeof(arr) / sizeof(*arr), i = -1; ++i < size; std::cout << arr[i] << "..." << arr[i] << std::endl);
}
0
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
19.08.2011, 11:16 6
Diagon, надо было в одну строчку весь код написать
1
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
19.08.2011, 11:33 7
Цитата Сообщение от Olga_ Посмотреть сообщение
Diagon, надо было в одну строчку весь код написать
Некрасиво же получиться.
А так получился просто один большой for.
0
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
19.08.2011, 11:36 8
Кстати, Diagon, ваша программа не то выводит, нужны все значения, например при n=2:
11
12
21
22

Добавлено через 1 минуту
Цитата Сообщение от diagon Посмотреть сообщение
Некрасиво же получиться.
А так получился просто один большой for.

Да это шутка
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
19.08.2011, 11:43 9
Цитата Сообщение от Olga_ Посмотреть сообщение
Кстати, Diagon, ваша программа не то выводит, нужны все значения, например при n=2:
11
12
21
22
А, ну да, задание не понял просто...
0
Заблокирован
Автор FAQ
19.08.2011, 11:59 10
У меня вышло только так
C++
1
2
3
4
5
6
7
8
#include <iostream.h>
 
int main()
{
    int arr[] = {1,2,4,7};
    for(int i = -1,size = sizeof(arr)/sizeof(arr[0]); i < size - 1;cout<<arr[i]<<"..." <<arr[(i = i + 1)]<<"\r\n");
    return 0;
}
1...1
2...2
4...4
7...7
Press any key to continue
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
19.08.2011, 12:02 11
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
У меня вышло только так
Ну естественно, вы же сначала увеличиваете i, потом выводите, потом проверяете, не меньше ли она n.
0
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
19.08.2011, 12:06 12
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
1...1
2...2
4...4
7...7
Еще раз, нужны все значения, многоточие это символ того, что там что-то стоит. Например, n=3. Тогда
111
112
113
...
332
333

Добавлено через 3 минуты
Кстати, Diagon, эта задача смахивает на разбиение числа, поэтому мой алгоритм очень похож на тот самый, да и вы без труда преобразовали бы тот свой алгоритм для этой задачи
0
Заблокирован
Автор FAQ
19.08.2011, 12:09 13
Млин сразу не въехал в задание (диагон со своей строчкой сбил - думал прикол в строку записать)

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream.h>
 
int main()
{
    int arr[] = {1,2,4,7};
    int size = sizeof(arr)/sizeof(arr[0]);
    for(int i = 0,k; i < size; i++)
        for(k = i; k < size;k++)
            cout<<arr[i]<<"..." <<arr[k]<<"\r\n";
    return 0;
}

1...1
1...2
1...4
1...7
2...2
2...4
2...7
4...4
4...7
7...7
Press any key to continue


Добавлено через 1 минуту
Цитата Сообщение от Olga_ Посмотреть сообщение
Еще раз, нужны все значения, многоточие это символ того, что там что-то стоит. Например, n=3. Тогда
- капец ну и постановка задачи у человека, ладно сейчас
0
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
19.08.2011, 12:10 14
=ЮрА=, вы запустите мой алгоритм и тогда увидите что должно появиться на экране
0
Заблокирован
Автор FAQ
19.08.2011, 12:12 15
Думаю теперь по заданию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream.h>
 
int main()
{
    int arr[] = {1,2,4,7};
    int size = sizeof(arr)/sizeof(arr[0]);
    for(int i = 0,k; i < size; i++)
    {
        cout<<arr[i];
        for(k = i + 1; k < size;k++)
            cout<<arr[k];
        cout<<"\r\n";
    }
    return 0;
}
1247
247
47
7
Press any key to continue
0
diagon
19.08.2011, 12:13
  #16

Не по теме:

Цитата Сообщение от Olga_ Посмотреть сообщение
Кстати, Diagon, эта задача смахивает на разбиение числа, поэтому мой алгоритм очень похож на тот самый, да и вы без труда преобразовали бы тот свой алгоритм для этой задачи
Возможно, но я так и не понял, что требуется =\
С таким не знаком
Ну это что-то типа k значной логики

0
Заблокирован
Автор FAQ
19.08.2011, 12:14 17
Цитата Сообщение от Olga_ Посмотреть сообщение
=ЮрА=, вы запустите мой алгоритм и тогда увидите что должно появиться на экране
- это сочетания. Вобще задание поставлено плохо, пусть напишет с цифрами хотябы 4 строчки, тогда можно понять будет
0
848 / 190 / 18
Регистрация: 01.08.2011
Сообщений: 505
19.08.2011, 12:23 18
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Думаю теперь по заданию
В каждой строчке одинаковое количество элементов и строчек всего = n^n

Добавлено через 6 минут
Да все и так понятно. Все элементы k-значной логики Это не сочетания...
Пусть имеется набор чисел, например {1,...,n}. Требуется вывести все различные наборы длины n,
в каждом наборе присутствуют элементы из {1,...,n}.

Добавлено через 2 минуты
Впрочем, задача уже решена, например в 4-ом посте
0
Заблокирован
Автор FAQ
19.08.2011, 12:24 19
Цитата Сообщение от Olga_ Посмотреть сообщение
В каждой строчке одинаковое количество элементов и строчек всего = n^n
- ну теперь ясно - задание банально до ужаса
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream.h>
 
int main()
{
    int arr[] = {1,2,4,7};
    int size = sizeof(arr)/sizeof(arr[0]);
    for(int i = 0,j,k; i < size; i++)
    for(j = 0; j < size;j++)
    for(k = 0; k < size;k++)
        cout<<arr[i]<<arr[j]<<arr[k]<<"\r\n";
    return 0;
}
0
5 / 5 / 1
Регистрация: 30.07.2011
Сообщений: 257
19.08.2011, 12:25  [ТС] 20
Всем спасибо, вы мне очень помогли!
0
19.08.2011, 12:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.08.2011, 12:25
Помогаю со студенческими работами здесь

подскажите: как вывести на экран числа от 0 до 20.... и еще одна: вывести все четные числа от 0 до 20...
подскажите: как вывести на экран числа от 0 до 20.... и еще одна: вывести все четные числа от 0 до...

Вывести таблицу по правилу
1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 21 1 4 10 20 35 ...

Вывести матрицу по правилу
Составить и отладить программу, которая создает (в памяти ЭВМ) квадратную матрицу порядка n (n...

Вывести матрицу по правилу
Создать программу ввода и вывода матрицы А: 5 6 7 8 1 2 3 4 5 8 0 4 1 5 7 2 4 9


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

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