Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
sergei60
47 / 28 / 11
Регистрация: 10.06.2012
Сообщений: 374
1

Работа с массивом строк

11.09.2015, 19:52. Просмотров 865. Ответов 14
Метки нет (Все метки)

Добрый день, есть такая простая задача. 3 корзинки . в одной яблоко ,слива и банан, в другой персик и мандарин, в третьей апельсин и лимон. Нужно взять из каждой корзинки по одному фрукту. Сколько вариантов получится и перечислить их? Это из 3 класса с помощью дерева возможностей решается вручную . .Получается 12 вариантов. А можно прогу написать чтобы комп выдал варианты и их колличество ?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2015, 19:52
Ответы с готовыми решениями:

Работа с массивом строк
Ребята помогите с реализацией сортировки методом шейкера.Очень нужно. Задание...

Работа с массивом строк в С
#include <stdio.h> #include <conio.h> #include <string.h> #include <vector>...

Работа с массивом строк
Ввести массив строк символов (текст). В каждой строке найти длину самого...

Работа с массивом строк. Конкатенация.
1. Обнаружено, что в тексте пропущены некоторые слова и словосочетания. Они...

Определить номера тех строк целочисленной матрицы A[N,K], которые совпадают с массивом D[K], если таких строк нет - выдать соответствующее сообщение
Неправильно определяет номера строк, либо вообще определяет строки не...

14
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
11.09.2015, 19:54 2
Цитата Сообщение от sergei60 Посмотреть сообщение
Сколько вариантов получится и перечислить их?
Да.


Цитата Сообщение от sergei60 Посмотреть сообщение
А можно прогу написать чтобы комп выдал варианты и их колличество ?
Конечно.
C++
1
2
3
4
5
6
#include <iostream>
 
int main()
{
    std::cout << 12 << std::endl;
}
0
sergei60
47 / 28 / 11
Регистрация: 10.06.2012
Сообщений: 374
11.09.2015, 19:58  [ТС] 3
я не прошу у вас писать программу ,просто дать направление с чего начать ,что в этом направлении прочитать и освоить.
0
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
11.09.2015, 20:02 4
Цитата Сообщение от sergei60 Посмотреть сообщение
что в этом направлении прочитать и освоить.
Пардон. Не так тебя понял. Почитай: переборы и перестановки (высшая математика).
1
Ferrari F1
792 / 522 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
11.09.2015, 20:26 5
Лучший ответ Сообщение было отмечено sergei60 как решение

Решение

sergei60,
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
#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
using namespace std;
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    string fruits1[3] =
    {
        "яблоко", "слива", "банан"
    };
    string fruits2[2] =
    {
        "персик", "мандарин"
    };
    string fruits3[2] =
    {
        "апельсин", "лимон"
    };
    cout << "12 вариантов:\n" << endl;
    for (int i(0); i < 3; i++)
        for (int j(0); j < 2; j++)
            for (int k(0); k < 2; k++)
                cout 
                << fruits1[i] << ' ' << fruits2[j]
                << ' ' << fruits3[k] << endl;
    cout << endl;
    system("pause");
    return 0;
}
1
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
11.09.2015, 20:27 6
Ferrari F1,
Цитата Сообщение от sergei60 Посмотреть сообщение
я не прошу у вас писать программу
1
Ferrari F1
792 / 522 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
11.09.2015, 20:36 7
castaway, мне просто нравится решать всякие задачки) сдержаться не смог)

Добавлено через 7 минут
Цитата Сообщение от sergei60 Посмотреть сообщение
что в этом направлении прочитать и освоить
В данном случае используется формула расчета сочетаний без повторений (раздел комбинаторики).
http://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
{C} _{3}^{1} * {C} _{2}^{1} * {C} _{2}^{1} = 12<br />
3
sergei60
47 / 28 / 11
Регистрация: 10.06.2012
Сообщений: 374
11.09.2015, 20:38  [ТС] 8
Ferrari F1, спасибо большое, все оказалось намного проще.
0
castaway
11.09.2015, 20:40
  #9

Не по теме:

sergei60, а почему лучший ответ с кодом, а не с комбинаторикой? Тебе же не программа нужна была.

0
sergei60
47 / 28 / 11
Регистрация: 10.06.2012
Сообщений: 374
11.09.2015, 20:49  [ТС] 10
castaway, да, ответ в смысле подсказки плох , я хотел сам разобраться как эту задачку реализовать в с++ ,согласен,. комбинаторику тоже читаю ,и тебе спасибо за направление. Вот теперь вопрос для себя возник ,а как написать так код ,чтобы выдавало уже посчитанные варианты.
0
Ferrari F1
792 / 522 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
11.09.2015, 20:56 11
Цитата Сообщение от sergei60 Посмотреть сообщение
чтобы выдавало уже посчитанные варианты.
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>
#include <iomanip>
#include <string>
#include <windows.h>
using namespace std;
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    string fruits1[] =
    {
        "яблоко", "слива", "банан"
    };
    string fruits2[] =
    {
        "персик", "мандарин"
    };
    string fruits3[] =
    {
        "апельсин", "лимон"
    };
    int count(0);
    for (int i(0); i < sizeof(fruits1) / sizeof(string); i++)
        for (int j(0); j < sizeof(fruits2) / sizeof(string); j++)
            for (int k(0); k < sizeof(fruits3) / sizeof(string); k++)
            {
                cout
                    << fruits1[i] << ' ' << fruits2[j]
                    << ' ' << fruits3[k] << endl;
                count++;
            }
    cout << "\nИтого: " << count << " вариантов.\n" << endl;
    system("pause");
    return 0;
}
1
sergei60
47 / 28 / 11
Регистрация: 10.06.2012
Сообщений: 374
13.09.2015, 19:38  [ТС] 12
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
37
38
#include <iostream>
#include <iomanip>
#include <string>
 
using namespace std;
 
int main(void)
{
    string fruits1;
    cout<<"введем члены первой корзины";
   getline(cin,fruits1);
   cout<<fruits1<<endl;
  
    string fruits2[] =
    {
      "яблоко", "груша"
    };
    string fruits3[] =
    {
        "персик ", "слива"
    };
       
   int sum=0;
    for (int i(0); i < 3; i++)
        for (int j(0); j < 2; j++)
         for (int r(0); r< 2; r++){
           
              
             cout   << fruits1[i] << ' ' << fruits2[j]
                << ' ' <<fruits3[r] << endl;
   
    sum++;
}
cout<<"\nИтого: " << sum << " вариантов.\n" << endl;
 
  
    return 0;
}
Решил усовершенствовать код. Допустим пользователь вводит названия сам. Но что то не выходит. Что? я попробовал поэкспериментировать над первой корзинкой. вот вывод этого кода.

введем члены первой корзины дыня,арбуз,кабачек
дыня,арбуз,кабачек
яблоко персик
яблоко слива
груша персик
груша слива
� яблоко персик
� яблоко слива
� груша персик
� груша слива
� яблоко персик
� яблоко слива
� груша персик
� груша слива

Итого: 12 вариантов.
0
Ferrari F1
792 / 522 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
13.09.2015, 20:18 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
using namespace std;
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    const int LIM(10);
    string fruits1[LIM];
    cout << "Сколько фруктов хотите ввести? (не больше " << LIM << ")" << endl;
    int j; cin >> j;
    cout << "Введите фрукты через пробел:" << endl;
    for (int i(0); i < j; i++)
        cin >> fruits1[i];
    cout << endl;
 
    string fruits2[] =
    {
        "персик", "мандарин"
    };
    string fruits3[] =
    {
        "апельсин", "лимон"
    };
    int count = 0;
    for (int i(0); i < j; i++)
        for (int j(0); j < sizeof(fruits2) / sizeof(string); j++)
            for (int k(0); k < sizeof(fruits3) / sizeof(string); k++)
            {
                cout
                    << fruits1[i] << ' ' << fruits2[j]
                    << ' ' << fruits3[k] << endl;
                count++;
            }
    cout << "\nИтого: " << count << " вариантов.\n" << endl;
    system("pause");
    return 0;
}
0
sergei60
47 / 28 / 11
Регистрация: 10.06.2012
Сообщений: 374
14.09.2015, 09:27  [ТС] 14
При выполнении этого кода идет предупреждение :

g++ -Wall -o "дерево возможностей" "дерево возможностей.cpp" -g -std=c++0x (в каталоге: /home/sergei/с++ коды)
дерево возможностей.cpp: В функции «int main()»:
дерево возможностей.cpp:27:59: предупреждение: сравнение знакового и беззнакового целых выражений [-Wsign-compare]
дерево возможностей.cpp:28:63: предупреждение: сравнение знакового и беззнакового целых выражений [-Wsign-compare]
Сборка прошла успешно.
это в отношение строчек кода
C++
1
2
        for (int j(0); j < sizeof(fruits2) / sizeof(string); j++)
            for (int k(0); k < sizeof(fruits3) / sizeof(string); k++)
Вообще эта конструкция для меня остается непонятной и не могу нигде найти объяснение. Может кто то подскажет.
0
Ferrari F1
792 / 522 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
14.09.2015, 10:23 15
sergei60, замени все слова int, встречающиеся в коде на size_t
0
14.09.2015, 10:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2015, 10:23

Проблема с массивом строк
Доброго времени суток! Есть класс, в котором объявлен массив строк class...

Неприятная проблема с массивом строк
Здравствуйте! Пытаюсь записать в массив строк содержимое директории.. Всё...

Работа с массивом в СИ++
Нужно написать программу по вычислению массива(в функции). Сначала полученный...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru