Форум программистов, компьютерный форум CyberForum.ru

Вывести на экран массив из целых чисел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Versus666
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 22
11.11.2010, 21:09     Вывести на экран массив из целых чисел #1
У мкня тут такое дело, выдали вот курсовой проэкт, я в программировании слаб, поэтому уже давно над ним голову ломаю, помогите пожалуюста, вот задания:

#1
Дано равенство:
((((1?2)?3)?4)?5)?6=35

Нужно составить программу которая сама расставит знаки "+"; "-"; "/"; "*" в уравнение.

#2

Вывести на экран массив из целых чисел через пробел, каждый элемент которого это минимальное значение среди К подряд идущих чисел заданного массива длиной N.
Технические требования:
Числа вводятся из текстового файла INPUT1.TXT, результат функционирования программы должен выводиться на экран.
Формат входных данных:
В первой строке записано N целых чисел, числа находятся в диапазоне от -32768 до 32767.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2010, 21:09     Вывести на экран массив из целых чисел
Посмотрите здесь:

C++ Ввести с клавиатуры массив из 10 целых чисел, посчитать сумму и вывести на экран
Ввести с клавиатуры массив целых чисел и вывести его на экран в виде матрицы C++
C++ Дан массив целых чисел с 0 ,вывести на экран все числа кроме 0
C++ Дан массив натуральных чисел А[m,n] и число а. Вывести этот массив на экран, вычислит количество элементов равных а и вывести их индексы
Создать и вывести на экран одномерный массив целых чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.11.2010, 21:56     Вывести на экран массив из целых чисел #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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
 
int calc(int operator1, char operation, int operator2)
{
    int res;
 
    switch (operation)
    {
    case '+':
        res = operator1 + operator2;
        break;
    case '-':
        res = operator1 - operator2;
        break;
    case '*':
        res = operator1 * operator2;
        break;
    case '/':
        res = operator1 / operator2;
        break;
    }
 
    return res;
}
 
int expr(char op1, char op2, char op3, char op4, char op5)
{
    return calc(calc(calc(calc(calc(1, op1, 2), op2, 3), op3, 4), op4, 5), op5, 6);
}
 
int main()
{
    char ops[4] = {'+', '-', '*', '/'};
    int result;
 
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            for (int k = 0; k < 4; k++)
            {
                for (int l = 0; l < 4; l++)
                {
                    for (int t = 0; t < 4; t++)
                    {
                        result = expr(ops[i], ops[j], ops[k], ops[l], ops[t]);
 
                        if (result == 35)
                            std::cout << "((((1 " << ops[i] << " 2) "
                                                  << ops[j] << " 3) "
                                                  << ops[k] << " 4) "
                                                  << ops[l] << " 5) "
                                                  << ops[t] << " 6 = 35" << std::endl;
                    }
                }
            }
        }
    }
 
    std::cin.get();
    return 0;
}
Versus666
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 22
11.11.2010, 22:47  [ТС]     Вывести на экран массив из целых чисел #3
Спасибо! Обязательно попробую! А второе задание вообще реально сделать? Сможет кто-нибудь помочь с ним? ))
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.11.2010, 23:41     Вывести на экран массив из целых чисел #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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <fstream>
#include <vector>
 
int minAB(std::vector < int > &arr, int A, int B)
{
    int min = arr[A];
 
    for (int i = A + 1; i <= B; i++)
        if (min > arr[i])
            min = arr[i];
 
    return min;
}
 
int main()
{
    std::vector < int > arr;
    std::vector < int > min;
    std::ifstream fin("INPUT1.TXT");
 
    while (!fin.eof())
    {
        int temp;
 
        fin >> temp;
 
        arr.push_back(temp);
    }
 
    int N = arr.size();
    int K;
 
    std::cout << "Enter K: ";
    std::cin >> K;
 
    for (int i = 0; i < N; i += K)
    {
        if (i + K >= N)
            min.push_back(minAB(arr, i, N - 1));
        else
            min.push_back(minAB(arr, i, i + K - 1));
    }
 
    for (int i = 0; i < min.size(); i++)
        std::cout << min[i] << " ";
 
    std::cout << std::endl;
 
    std::cin.get();
    std::cin.get();
    return 0;
}
Manjak
 Аватар для Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
12.11.2010, 00:24     Вывести на экран массив из целых чисел #5
№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>
#include <iterator>
#include <fstream>
#include <algorithm>
#include <limits>
 
using namespace std;
 
int main( void )
{
    ifstream              inputStream( "input.txt", ios::in );
    istream_iterator<int> itrInput   ( inputStream );    
    ostream_iterator<int> itrOutput  ( cout, " " );
 
    int                   nMinValue = numeric_limits<short>::max();
 
    for (; itrInput != istream_iterator<int>(); ++itrInput)
    {
        if (nMinValue > *itrInput) nMinValue = *itrInput;
        itrOutput++ = nMinValue;
    }
 
    cout << endl;
    system("pause");
    return 0;
}
Добавлено через 21 минуту
Первая задача реализуется через ОПЗ и бектрейс по операциям
Versus666
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 22
12.11.2010, 06:09  [ТС]     Вывести на экран массив из целых чисел #6
Пасиба огромное!
Manjak, я даж понятия не имею что такое ОПЗ и бектрейс ))) сможешь сделать пожалуюста?)
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.11.2010, 12:25     Вывести на экран массив из целых чисел #7
Versus666, я же вам первую сделал. Все работает, а через ОПЗ её мудрить - больше кода на саму ОПЗ уйдёт...
Versus666
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 22
12.11.2010, 21:59  [ТС]     Вывести на экран массив из целых чисел #8
Ок, интересно просто посмотреть возможные варианты решения этой задачки

Добавлено через 8 часов 23 минуты
silent_1991, а ты можешь написать комментарии к строкам в программе? Я разобраться хочу что и как
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.11.2010, 22:20     Вывести на экран массив из целых чисел #9
1.

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
// Функции передаётся два целых числа и символ, обозначающий
// арифметическую операцию, функция возвращает результат
// применения этой операции к числам
int calc(int operator1, char operation, int operator2)
{
    int res;
 
    switch (operation) // В зависимсоти от операции
    {
    case '+': // либо складываем,
        res = operator1 + operator2;
        break;
    case '-': // либо вычитаем,
        res = operator1 - operator2;
        break;
    case '*': / либо перемножаем,
        res = operator1 * operator2;
        break;
    case '/': // либо делим числа
        res = operator1 / operator2;
        break;
    }
 
    return res;
}
 
// Функция считает результат выражения ((((1 ? 2) ? 3) ? 4) ? 5) ?6,
// где на месте вопросов символы, представляющие арифметические операции
int expr(char op1, char op2, char op3, char op4, char op5)
{
    return calc(calc(calc(calc(calc(1, op1, 2), op2, 3), op3, 4), op4, 5), op5, 6);
}
 
int main()
{
    char ops[4] = {'+', '-', '*', '/'};
    int result;
 
    // Каждый цикл - для своей позиции арифметической операции в исходном выражении
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            for (int k = 0; k < 4; k++)
            {
                for (int l = 0; l < 4; l++)
                {
                    for (int t = 0; t < 4; t++)
                    {
                        result = expr(ops[i], ops[j], ops[k], ops[l], ops[t]); // Рассчитываем результат выражения для очередного набора операций
 
                        if (result == 35) // Если результат равен 35 - выводим полученный набор операций
                            std::cout << "((((1 " << ops[i] << " 2) "
                                                  << ops[j] << " 3) "
                                                  << ops[k] << " 4) "
                                                  << ops[l] << " 5) "
                                                  << ops[t] << " 6 = 35" << std::endl;
                    }
                }
            }
        }
    }
 
    std::cin.get();
    return 0;
}
Добавлено через 7 минут
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <fstream>
#include <vector>
 
// Функция, которая ищет минимум в векторе arr
// в промежутке от A-й до B-й позиции
int minAB(std::vector < int > &arr, int A, int B)
{
    int min = arr[A];
 
    // Пробегаем по массиву от A-го до B-го элемента
    for (int i = A + 1; i <= B; i++)
        if (min > arr[i]) // Если очередной элемент меньше найденного ранее минимального,
            min = arr[i]; // делаем его минимальным
 
    return min;
}
 
int main()
{
    std::vector < int > arr;         // Входной массив
    std::vector < int > min;         // Массив минимальных элементов
    std::ifstream fin("INPUT1.TXT"); // Поток, связанный с входным файлом
 
    // Считываем элементы, пока не достигнем конца файла
    while (!fin.eof())
    {
        int temp;
 
        fin >> temp; // Считываем очередное число
 
        arr.push_back(temp); // Кладём его в массив
    }
 
    int N = arr.size(); // Запоминаем длину вектора
    int K;
 
    // Вводим длину группы элементов, среди которых надо искать минимум
    std::cout << "Enter K: ";
    std::cin >> K;
 
    // Бежим по массиву, на каждом шаге сдвигаясь на K элементов
    for (int i = 0; i < N; i += K)
    {
        if (i + K >= N) // Если до конца массива осталось меньше K элементов
            min.push_back(minAB(arr, i, N - 1)); // Ищем минимум на интервале от i до конца массива
        else // Иначе, если элементов ещё много
            min.push_back(minAB(arr, i, i + K - 1)); // Ищем минимум в очередной группе из K элементов
    }
 
    // Выводим полученный массив минимумов
    for (int i = 0; i < min.size(); i++)
        std::cout << min[i] << " ";
 
    std::cout << std::endl;
 
    std::cin.get();
    std::cin.get();
    return 0;
}
Versus666
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 22
13.11.2010, 21:36  [ТС]     Вывести на экран массив из целых чисел #10
silent_1991, а где должен находиться файл INPUT1.TXT для второго задания с массивом чтоб программа считывала с него числа?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
13.11.2010, 21:37     Вывести на экран массив из целых чисел #11
В той же папке, что и исполняемый файл программы.
Versus666
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 22
13.11.2010, 21:40  [ТС]     Вывести на экран массив из целых чисел #12
Пасиб

Не по теме:

Слуш а ты сам научился программированию или читал что-то? Я тож так хочу

silent_1991
13.11.2010, 21:45
  #13

Не по теме:

Versus666, ну как, самому научиться невозможно, не из головы же брать. Читал, да и в универе предмет был. Это если вы о самом языке. А если о процессе алгоритмизации, то в основном алгоритм сам приходит. Кто-то запросто пишет стихи, на ходу подбирая рифмы. Я вот стихи никогда писать не умел, больше двух строк зарифмовать не смогу. Зато алгоритм зачастую льётся, как будто давно в голове сидел и только ждал, когда потребуется))) На самом деле любой алгоритм в конечном итоге всегда подвергается улучшениям, потому что изначально вряд ли сочинится оптимальный вариант)))
А вообще, если вы глянете программы некоторых других участников форума, то поймёте, что мои творения - тот ещё говнокод)))

Versus666
13.11.2010, 21:56  [ТС]
  #14

Не по теме:

Да вот у нас тож щас у институте программирования дофига, я вообще на программиста учусь только вот программирование у нас преподают ужасно, сначала дадут жалкие методички, мы с них какую-нибудь программу перепишем и всё, а потом как дадут задание типа этого курсовика и блин мучайся, откуда все эти операторы брать, как алгоритм сочинять никто собственно и не знает.... Вообще это достаточно интересно, хотелось бы научиться, т.к. это тоже своего рода творчество. Я вот фотошоп освоил хорошо сам читая различные уроки да и он интуитивно понятен для меня. Не подскажешь где можно почитать про С++?

silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
13.11.2010, 22:06     Вывести на экран массив из целых чисел #15
Versus666, http://www.cyberforum.ru/cpp/thread152353.html
Versus666
0 / 0 / 0
Регистрация: 11.11.2010
Сообщений: 22
13.11.2010, 22:31  [ТС]     Вывести на экран массив из целых чисел #16
Хммм...странно, запускаю программу по второй задаче и открывается окно - "This application has requested the Runtime to terminate it in an unusual way." Запускал на DevC++ 4.9.9
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2010, 22:43     Вывести на экран массив из целых чисел
Еще ссылки по теме:

Задать массив из 200 целых двухзначных чисел. Вывести на экран повторяющиеся элементы, их индексы, и число повторов C++
Задан массив целых чисел. Вывести на экран массив, составленный из заданного количества минимальных элементов исходного C++
C++ Ввести массив целых чисел и вывести на экран непарные из них

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
13.11.2010, 22:43     Вывести на экран массив из целых чисел #17
Странно... У меня Дэва нет, но на кодблокс и на визуал студии всё работает.
Yandex
Объявления
13.11.2010, 22:43     Вывести на экран массив из целых чисел
Ответ Создать тему
Опции темы

Текущее время: 14:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru