Через массив

Тема в разделе "C/C++/C#", создана пользователем kerragin, 31 май 2011.

Наш партнер Genesis Hackspace
  1. kerragin

    kerragin Гость

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

    Задача:
    Найти все натуральные 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;
    }
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Массивы - не прерогатива С++, как на счет С без плюсов ?
     
  3. kerragin

    kerragin Гость

  4. kerragin

    kerragin Гость

    правильно сделано?

    Код (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
    трех соседних ячейках сумма точек на передних гранях кубиков
    равна
     
  5. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    И все-таки замени "sizeof(symbols) - 1" на "strlen(symbols)"
    Все остальное не проверял на компиляции, но кажется верным.
     
  6. ierofant

    ierofant Гость

    Не надо -1.

    Правильно:
    Код (C++):
    sizeof (symbols)
    У массива нет нуль терминирующего символа.
     
  7. kerragin

    kerragin Гость

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

    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;
    }
    Тема "Рекурсивные процедуры и функции"
     
  8. kerragin

    kerragin Гость

    помогите !!! :(
     
  9. ierofant

    ierofant Гость

    А что за беда с функциями, я не понимаю... :(
    Код (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);
    }
     
  10. kerragin

    kerragin Гость

  11. ierofant

    ierofant Гость

    А, ну да. Ну это могли бы и сами подправить по-моему...

    Код (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);
    }
     
  12. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Вот у такого нет:
    Код (C++):
    int arr[] = { 1, 2, 3, 4, 5 };
    А у такого есть:
    Код (C++):
    const char symbols[] = "123456789";
     
  13. ierofant

    ierofant Гость

    Согласен!
     
Загрузка...

Поделиться этой страницей