ВОПРОС · Q&A

Через массив

12 ответов 7,8 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор вопроса
Помогите сделать эту задачу через массивы.Задача сделана через строки,но мне сказали переделать ее через массивы.За ранее спасибо

Задача:
Найти все натуральные n-значные числа, цифры в которых
образуют строго возрастающую последовательность (например,
1234, 5789).


C++:
#include <string>
#include <iostream>

using namespace std;

int main(int argc, char* argv[]) {

string symbols = "123456789";

int n = static_cast<int>(symbols.length());

for(int i=1; i<=n; i++) 
for(int j=0; j<=n-i; j++) 
cout << symbols.substr(j, i) << endl;

return 0;
}
 
Массивы - не прерогатива С++, как на счет С без плюсов ?
 
можно
 
правильно сделано?

C++:
#include <stdio.h>
//#include <string.h>

int main(int argc, char* argv[])
{
const char symbols[] = "123456789";
int n = sizeof(symbols) - 1;//strlen(symbols);
int i, j, s;

for(i=1; i<=n; i++) 
for(j=0; j<=n-i; j++) {
for(s = 0; s < i; ++s)
putchar(symbols[j+s]);
putchar('\n');
}

return 0;
}

Добавлено: помогите с решением 2 задач

1)Даны две дроби A/B и C/D (А, В, С, D — натуральные числа).
Составить программу для умножения дроби на дробь. Результат
должен быть несократимой дробью.
2)«Суперзамок». Секретный замок для сейфа состоит из 10
расположенных в рад ячеек, в которые надо вставить игральные
кубики. Но дверь открывается только в том случае, когда в любых
340
трех соседних ячейках сумма точек на передних гранях кубиков
равна
 
Не надо -1.

Правильно:
C++:
sizeof (symbols)

У массива нет нуль терминирующего символа.
 
Что-то препода не устроило,он сказал что через функцию надо делать,кстати,можете помочь сделать через функции несколько задач.я их сделал,код рабочий,но не через функции

1)Даны две дроби A/B и C/D (А, В, С, D — натуральные числа).Составить программу для умножения дроби на дробь. Результат
должен быть несократимой дробью.

Код:

C++:
#include<iostream>
int main()
{int a,b,c,d,p,n,i;
using namespace std;
cout<<"vvedite a"<<endl;
cin>>a;
cout<<"vvedite b"<<endl;
cin>>b;
cout<<"vvedite c"<<endl;
cin>>c;
cout<<"vvedite d"<<endl;
cin>>d;
p=a*c;
n=b*d;
i=2;
while (i<=p) 
{ 

if (p%i==0 && n%i==0) 
{p=p/i;
n=n/i;}
else
i++;
}
cout<<p<<"/"<<n;
}

Тема "Нерекурсивные процедуры и функции"

2)Дано n различных натуральных чисел. Напечатать все перестановки

Код

C++:
#include <iostream>
#include <algorithm>

int main()
{
int arr[] = { 1, 2, 3, 4, 5 };
size_t len = sizeof(arr) / sizeof(int);

do
{
for (int i = 0; i < len; i++)
std::cout << arr[i] << " ";
std::cout << std::endl;
} while (std::next_permutation (arr, arr + len));

return 0;
}

Тема "Рекурсивные процедуры и функции"
 
помогите !!! :(
 
А что за беда с функциями, я не понимаю... :(
C++:
#include <iostream>
#include <algorithm>

static void permutations (int *_arr, size_t _len);

int main()
{
int arr[] = { 1, 2, 3, 4, 5 };
size_t len = sizeof(arr) / sizeof(int); 
permutations (arr, len);

return 0;
}

void permutations (int *_arr, size_t _len)
{
for (int i = 0; i < len; i++) std::cout << arr[i] << " ";
std::cout << std::endl;
if (std::next_permutation (arr, arr + len)) permutations (arr, arr + len);
}
 
ок
 
А, ну да. Ну это могли бы и сами подправить по-моему...

C++:
void permutations (int *_arr, size_t _len)
{
for (int i = 0; i < _len; i++) std::cout << _arr[i] << " ";
std::cout << std::endl;
if (std::next_permutation (_arr, _arr + _len)) permutations (_arr, _arr + _len);
}
 
Согласен!