Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
10 / 10 / 0
Регистрация: 27.07.2010
Сообщений: 107
1

Найти решение - на разные темы

18.05.2011, 08:06. Показов 3632. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!!!

Уважаемые форумчанины, требуется помощь в решении задач по С++. За 1,5 месяца не смог разобраться ни в одном компиляторе. У меня видимо руки не оттуда растут, или эти компиляторы слишком "умные". Под Линукс вообще не понял как компилировать. А у меня сессия через неделю, а задачи так и не решены. Как застрял на первой, так и все. На бумаге то вроде решил, а вот проверить не могу.

Листинг этой задачи привожу ниже. Но надо решить и остальные. Помогите пожалуйста.

Вот задачи:
№ 1
Код
Требования к задаче:
a. написать программу в соответствии с заданием, используя статические массивы 
b. отформатировать исходный код программы согласно требованиям к оформлению исходного кода;
c. использовать динамические массивы (размер массива вводится пользователем с проверкой ввода);
d. выявить ограничения на вводимые пользователем значения и, если таковые имеются, не допустить их ввода.
e. организовать повтор программы по желанию пользователя. 
f. реализовать меню пользователя, состоящее как минимум из 4-х пунктов: 
       a. ввод элементов массива; 
       b. обработка массива; 
       c. вывод массива на экран
       d. выход.

Задача:
1. В одномерном массиве целых чисел заменить максимальное значение минимальным.
2. Найти три наименьших положительных элементов одномерного массива целых чисел
3. 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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*Задача 1
 
 В одномерном массиве целых чисел заменить максимальное значение минимальным*/
 
 
 
# include <iostream.h>
 
# include <conio.h>
 
 
 
 
 
int main() 
 
{
 
    int i; // Задаем переменную для цикла
 
    int x;
 
    cout << "Vvedite razmernost' massiva" << endl;
 
    cin >> x;
 
    int mas[x];
 
    
 
    cout << "Zapolnjaem massiv" << endl;
 
    for (i = 0; i <= x; i++) // Заполняем массив в ручную с клавиатуры
 
    {
 
        cout << "Vvedite znachenije massiva" << endl;
 
        cin >> mas[i];
 
    }
 
    int max=0, min=0;
 
    for (i = 1; i = x; i++) // Находим в массиве максимальное и манимальное значение
 
    {
 
        if (mas[i-1] < mas [i])
 
        {
 
            min = mas[i-1];
 
            max = mas[i];
 
        }
 
        else
 
        {
 
            min = mas[i];
 
            max = mas[i-1];
 
        };
 
    }
 
    for (i = 0; i <= x; i++) // Меняем максимальное значение на минимальное
 
    {
 
        if (mas[i] = max)
 
        {
 
            mas[i] = min;
 
        };
 
    }
 
    cout << "U nas poluchilsja noviy massiv" << endl;
 
    for (i = 0; i <= x; i++)
 
    {
 
        
 
        cout << mas[i]<< endl;
 
    }
 
    return 1;
 
}
№2
Код
Требования к выполнению заданий
a. написать программу в соответствии с заданием.
b. отформатировать исходный код программы согласно требованиям к оформлению исходного кода;
c. для хранения строк использовать динамические массивы символов (размер массива определять в процессе ввода);
d. организовать повтор программы по желанию пользователя. 
e. реализовать меню пользователя, состоящее как минимум из 4-х пунктов: 
         a. ввод данных; 
         b. обработка данных; 
         c. вывод результата на экран;
         d. выход.
f. Для корректной работы меню организовать промежуточное хранение результата.

Задачи:
1. Написать программу, которая будет подсчитывать количество согласных букв в строке, введенной с клавиатуры.
2. Написать программу, которая будет находить самое длинное слово в строке, введенной с клавиатуры, и подсчитывать, сколько раз оно встретилось в тексте.
№3
Код
Требования к выполнению заданий
a. написать программу в соответствии с заданием.
b. отформатировать исходный код программы согласно требованиям к оформлению исходного кода;
c. размерность массива должна определяться пользователем программы;
d. организовать повтор программы по желанию пользователя. 
e. реализовать меню пользователя, состоящее как минимум из 4-х пунктов: 
              a. ввод данных; 
              b. обработка данных; 
              c. вывод результата на экран;
              d. выход.
f. Для корректной работы меню организовать промежуточное хранение результата.

Задачи:
1. Дана целочисленная прямоугольная матрица. Определить:
a. количество столбцов, содержащих хотя бы один нулевой элемент; 
b. номер строки, в которой находится самая длинная серия одинаковых элементов.
2. Дана матрица А размера n х m. Упорядочить строки матрицы в порядке возрастания их первых элементов.

№4
Код
ребования к выполнению заданий
a. написать программу в соответствии с заданием.
b. отформатировать исходный код программы согласно требованиям к оформлению исходного кода;
c. размерность массива может определяться пользователем программы;
d. организовать повтор программы по желанию пользователя. 
e. выполнить пункты b и c
f. реализовать меню пользователя, состоящее как минимум из 4-х пунктов: 
                  a. загрузка данных из файла с возможностью выбора файла; 
                  b. обработка данных; 
                  c. вывод результата на экран;
                  d. выход.
g. Размер массива должен определяться автоматически на основе данных, находящихся в файле.
h. Для корректной работы меню организовать промежуточное хранение результата.
i. Вывод программы отсортировать в алфавитном порядке, если заданием не оговорено иное.

Задачи:
1. Написать программу, которая считывает текст из файла и записывает каждое слово в отдельный элемент массива. Вывести на экран: а) пять самых коротких слов, б) слова, встречающиеся в тексте более 1 раза, отсортировав по алфавиту.
2. В файле хранятся названия фильмов. Каждая строка отдельное название. Написать программу, которая читает строки из файла в массив строк, и выводит на экран названия фильмов, отсортировав их а) по убыванию количества слов в названии, б) по возрастанию количества строк в названии, в) в алфавитном порядке.
№5
Код
Требования к выполнению заданий
Данные о предметной области представлены динамическим массивом структур, содержащими поля согласно варианту.
Разработать программу, которая осуществляет следующие функции. Все функции должны быть реализованы через меню пользователя, для всех заданий использовать динамические массивы.
а) ввод данных с клавиатуры (добавляя новые данные в массив), 
б) удаление выбранного элемента массива; 
в) вывод данных на экран (без сортировки).

г) выполнить задание а, б, в;
д) реализовать запись данных в файл, 
е) чтение данных из файла;
ж) вывод данных на экран, отсортировав по одному из строковых полей. 

з) выполнить требования г, д, е, ж;
и) вывод данных на экран, отсортировав по любому из полей на выбор пользователя (в т.ч. по вычисляемому полю.
к) вывод данных дополнить вычисляемым на момент вывода информации полем согласно варианту.

Задачи:
1. Автомобили: марка, год выпуска, объем двигателя, пробег. Вывод данных дополнить напоминанием о прохождении ТО, если пробег автомобиля больше 100 тыс. км.
2. Продукты питания: наименование, вес, цена, срок годности. Дополнить вывод информацией о товарах, которые следует уценить (срок годности которых истекает через 2 дня или ранее).
№6
Код
Требования к выполнению заданий
За основу взять задание и требования к заданию №5. Изменить программу так, чтобы программный код, выполняющий действия пунктов меню выполнялся в отдельных функциях (минимум по одной на каждый пункт меню).

Вариант 1 
а) допускается использование глобальных переменных по усмотрению студента. 
Вариант 2
а) допускается использование только двух глобальных переменных - массива структур и его размера. 
Вариант 3
а) использование глобальных переменных не допускается.
Заранее всем кто поможет благодарен и буду очень признателен.

Добавлено через 18 минут
В моем решении, вроде бы проходит компиляция, программа запускается, но не выводит результат. Не пойму почему.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2011, 08:06
Ответы с готовыми решениями:

Вопросы на разные темы
1.Я правильно понимаю что... например одноядерный процессор 4000 Мгц будет работать также как 2х...

Задачи на разные темы
Помогите решить задачи 1)Отсортировать матрицу после максимального элемента 2) Отсортировать...

Много вопросов на разные темы
Дело обстоит так: не имею представления как представить инфо - лекция, где может находиться не...

Пару задач на разные темы
Я плохо знаю С++, поэтому прошу помочь разобраться с парой задач. Не изучал этих тем. Вот что...

17
152 / 150 / 44
Регистрация: 09.02.2010
Сообщений: 407
18.05.2011, 08:09 2
Raxxell, Ваше решение первой задачи делает не пойми что. Вот рабочая версия
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
/*Задача 1
 
 В одномерном массиве целых чисел заменить максимальное значение минимальным*/
 
# include <iostream>
 
# include <stdlib.h>
# include <stdio.h>
 
 
using namespace std;
 
int main()
{
    int i; // Задаем переменную для цикла
    int x;
    cout << "Vvedite razmernost' massiva -> ";
    cin >> x;
    int mas[x];
    cout << "\nZapolnjaem massiv" << endl;
    for (i = 0; i < x; i++) // Заполняем массив в ручную с клавиатуры
    {
        cout << "\nVvedite " << i+1 << " znachenije massiva -> ";
        cin >> mas[i];
    }
 
    int max=0, min=0;
 
 
    for (i = 1; i < x; i++) // Находим в массиве максимальное значение
        if (mas[i] > mas[max])
            max = i;
 
 
    for (i = 1; i < x; i++) // Находим в массиве минимальное значение
        if (mas[i] < mas[min])
            min = i;
 
    // меняем значения местами
    int tmp = mas[max];
    mas[max] = mas[min];
    mas[min] = tmp;
 
 
    cout << "U nas poluchilsja noviy massiv" << endl;
    for (i = 0; i < x; i++)
        cout << mas[i]<< endl;
    getchar();
 
    return 0;
}
Добавлено через 2 минуты
Не по теме:
Raxxell, я правильно понимаю,Вы учитесь на ИКИТе 1 - ый курс? Задания еще за 1 ый семестр.
0
10 / 10 / 0
Регистрация: 27.07.2010
Сообщений: 107
18.05.2011, 08:11  [ТС] 3
Сейчас проверить не могу, могу проверить только дома. Работаю в wxDevC++. Я думаю она пойдет. А можно подсказать где у меня ошибка? Хотя... сейчас попробую сам разобраться.

Добавлено через 2 минуты
Цитата Сообщение от dampir_sanek Посмотреть сообщение
RaxxellRaxxell, я правильно понимаю,Вы учитесь на ИКИТе 1 - ый курс? Задания еще за 1 ый семестр.[/COLOR]
Неправильно. 2-й курс, 3-ий семестр. Заочно.
0
152 / 150 / 44
Регистрация: 09.02.2010
Сообщений: 407
18.05.2011, 08:18 4
Raxxell, на очном - это 1 курс, 1 семестр.
Используйте Code::Blocks лучше, и под виндой и под линем отлично работает.
0
10 / 10 / 0
Регистрация: 27.07.2010
Сообщений: 107
18.05.2011, 08:20  [ТС] 5
Цитата Сообщение от dampir_sanek Посмотреть сообщение
Raxxell, на очном - это 1 курс, 1 семестр.
Используйте Code::Blocks лучше, и под виндой и под линем отлично работает.
А поподробнее можно? Я сейчас на Линуксе Debian 6.0. Как мне проверить программу?
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
18.05.2011, 08:22 6
dampir_sanek, я открою страшную тайну: размер статического массива должен задаваться константной величиной
0
152 / 150 / 44
Регистрация: 09.02.2010
Сообщений: 407
18.05.2011, 08:42 7
kazak, ага, знаю такую фишечку. Тут не углядел, другую часть кода переделывал)) Rework code:
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
/*Задача 1
 
 В одномерном массиве целых чисел заменить максимальное значение минимальным*/
 
# include <iostream>
 
# include <stdlib.h>
# include <stdio.h>
 
 
using namespace std;
 
int main()
{
    int i; // Задаем переменную для цикла
    int x;
    cout << "Vvedite razmernost' massiva -> ";
    cin >> x;
    int *mas = new int[x];
    cout << "\nZapolnjaem massiv" << endl;
    for (i = 0; i < x; i++) // Заполняем массив в ручную с клавиатуры
    {
        cout << "\nVvedite " << i+1 << " znachenije massiva -> ";
        cin >> mas[i];
    }
 
    int max=0, min=0;
 
    for (i = 1; i < x; i++) // Находим в массиве максимальное значение
        if (mas[i] > mas[max])
            max = i;
 
 
    for (i = 1; i < x; i++) // Находим в массиве минимальное значение
        if (mas[i] < mas[min])
            min = i;
 
    // меняем значения местами
    int tmp = mas[max];
    mas[max] = mas[min];
    mas[min] = tmp;
 
 
    cout << "U nas poluchilsja noviy massiv" << endl;
    for (i = 0; i < x; i++)
        cout << mas[i]<< endl;
    delete[] mas;
    getchar();
 
    return 0;
}
Добавлено через 7 минут
Цитата Сообщение от Raxxell Посмотреть сообщение
А поподробнее можно? Я сейчас на Линуксе Debian 6.0. Как мне проверить программу?
на оффициальном сайте программы возьмите ИДЕ, установите по инструкции. Создаете консольный проект С++, ивставляете код из моего сообщения и F9)
0
10 / 10 / 0
Регистрация: 27.07.2010
Сообщений: 107
18.05.2011, 13:05  [ТС] 8
Установил прогу, попробовал задачу. Выдает такое:

Код
sh:/home/raxxell2011/zad1: Permission denied

Proccess returned 126 (0x7E)  execution time : 0.001 s
Press ENTER to continue.
Что бы это значило?

Добавлено через 11 секунд
Установил прогу, попробовал задачу. Выдает такое:

Код
sh:/home/raxxell2011/zad1: Permission denied

Proccess returned 126 (0x7E)  execution time : 0.001 s
Press ENTER to continue.
Что бы это значило?

Добавлено через 7 минут
[QUOTE=dampir_sanek;1662532]kazak, ага, знаю такую фишечку. Тут не углядел, другую часть кода переделывал)) Rework code:
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
/*Задача 1
 
 В одномерном массиве целых чисел заменить максимальное значение минимальным*/
 
# include <iostream>
 
# include <stdlib.h>
# include <stdio.h>
 
 
using namespace std;
 
int main()
{
    int i; // Задаем переменную для цикла
    int x;
    cout << "Vvedite razmernost' massiva -> ";
    cin >> x;
    int *mas = new int[x];
    cout << "\nZapolnjaem massiv" << endl;
    for (i = 0; i < x; i++) // Заполняем массив в ручную с клавиатуры
    {
        cout << "\nVvedite " << i+1 << " znachenije massiva -> ";
        cin >> mas[i];
    }
 
    int max=0, min=0;
 
    for (i = 1; i < x; i++) // Находим в массиве максимальное значение
        if (mas[i] > mas[max])
            max = i;
 
 
    for (i = 1; i < x; i++) // Находим в массиве минимальное значение
        if (mas[i] < mas[min])
            min = i;
 
    // меняем значения местами
    int tmp = mas[max];
    mas[max] = mas[min];
    mas[min] = tmp;
 
 
    cout << "U nas poluchilsja noviy massiv" << endl;
    for (i = 0; i < x; i++)
        cout << mas[i]<< endl;
    delete[] mas;
    getchar();
 
    return 0;
}
Я тут посмотрел задачку, а ведь решение то не совсем правильно. В этой проге, меняются местами минимальное и максимальное, а надо, максимальные заменить минимальными. Вот.

Добавлено через 1 минуту
И еще, если правильно понял, то меняется только один элемент, а если их будет несколько одинаковых, то как быть?
0
152 / 150 / 44
Регистрация: 09.02.2010
Сообщений: 407
18.05.2011, 17:48 9
Raxxell, переработал код, все недочеты исправил:
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
/*Задача 1
 
 В одномерном массиве целых чисел заменить максимальное значение минимальным*/
 
# include <iostream>
 
# include <stdlib.h>
# include <stdio.h>
 
 
using namespace std;
 
int main()
{
    int i; // Задаем переменную для цикла
    int x;
    cout << "Vvedite razmernost' massiva -> ";
    cin >> x;
    int *mas = new int[x];
    cout << "\nZapolnjaem massiv" << endl;
    for (i = 0; i < x; i++) // Заполняем массив в ручную с клавиатуры
    {
        cout << "\nVvedite " << i+1 << " znachenije massiva -> ";
        cin >> mas[i];
    }
 
    int max=0, min=0;
 
    for (i = 1; i < x; i++) // Находим в массиве максимальное значение
        if (mas[i] > mas[max])
            max = i;
 
 
    for (i = 1; i < x; i++) // Находим в массиве минимальное значение
        if (mas[i] < mas[min])
            min = i;
    // тут меняем максимальный(ые) элементы на минимальный
    int tmp_max = mas[max];
    for (i = 0; i < x; i++)
        if (mas[i] == tmp_max)
            mas[i] = mas[min];
 
    cout << "U nas poluchilsja noviy massiv" << endl;
    for (i = 0; i < x; i++)
        cout << mas[i]<< endl;
    delete[] mas;
    getchar();
 
    return 0;
}
Добавлено через 5 минут
Цитата Сообщение от Raxxell Посмотреть сообщение
Установил прогу, попробовал задачу. Выдает такое:
В дебиане бывает такая проблема:
Нужно изменить права доступа, и поставить xterm
Bash
1
2
$ sudo chmod a+x /usr/bin/cb_console_runner
$ sudo apt-get install xterm
1
luciuz
19.05.2011, 05:40 10
ы ) какие люди ) Raxxell юзай g++ и блокнот ) сам на линухе сижу
10 / 10 / 0
Регистрация: 27.07.2010
Сообщений: 107
19.05.2011, 12:32  [ТС] 11
Цитата Сообщение от dampir_sanek Посмотреть сообщение
В дебиане бывает такая проблема:
Нужно изменить права доступа, и поставить xterm
Bash
1
2
$ sudo chmod a+x /usr/bin/cb_console_runner
$ sudo apt-get install xterm
Или я такой невезучий или что.. не знаю. Все равно компилятор не хочет выполнять. Выдает ту же ошибку. А логах пишет:
Bash
1
2
3
4
5
Nothing to be done.
 
Checking for existence: /home/raxxell2011/zad1
Executing: xterm -T '/home/raxxell2011/zad1' -e /usr/bin/cb_console_runner "/home/raxxell2011/zad1" (in /home/raxxell2011)
Process terminated with status 0 (0 minutes, 1 seconds)
Что делать дальше?

Добавлено через 3 минуты
Переименовал файл в zad1.cpp , программа выдает другие логи.

Bash
1
2
3
4
5
6
7
8
9
Compiling: /home/raxxell2011/zad1.cpp
g++: /home/raxxell2011/zad1.cpp: Нет такого файла или каталога
g++: no input files
Process terminated with status 1 (0 minutes, 0 seconds)
0 errors, 0 warnings
 
Checking for existence: /home/raxxell2011/zad1
Executing: xterm -T '/home/raxxell2011/zad1' -e /usr/bin/cb_console_runner "/home/raxxell2011/zad1" (in /home/raxxell2011)
Process terminated with status 0 (0 minutes, 3 seconds)
А что это значит?

Добавлено через 6 минут
Цитата Сообщение от luciuz Посмотреть сообщение
ы ) какие люди ) Raxxell юзай g++ и блокнот ) сам на линухе сижу
Привет, поподробнее, где его взять, и как его юзать. А то я уже замучился с этими компиляторами.

Добавлено через 5 часов 56 минут
УРАААА!!!!
пошла массовка.
Набрал в терминале команду:
Bash
1
g++ <путь к файлу>.zad1.cpp
Появился файл a.out
Запустил его, и у меня пошла прога. Теперь беремся решать задачи. Жаль время поджимает.
0
152 / 150 / 44
Регистрация: 09.02.2010
Сообщений: 407
19.05.2011, 12:39 12
Raxxell, если из командной строки компилировать, тогда так
Bash
1
g++ <имя_файла.cpp> -o <желаемое имя программы>
1
10 / 10 / 0
Регистрация: 27.07.2010
Сообщений: 107
19.05.2011, 13:10  [ТС] 13
Так... у меня возникают опять вопросы:

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
[B] sel:[/B]
    int i; // Задаем переменную для цикла
    int x;
    cout << "Vvedite razmernost' massiva -> ";
    cin >> x;
   [B] if (x<=0)
      cout << "\nVvedite celoe pologitelnoe cislo" << endl;
    else 
      goto sel;[/B]
    int *mas = new int[x];
    cout << "\nZapolnjaem massiv" << endl;
Но у меня выдает ошибку

Bash
1
2
3
4
5
6
7
root@server1:/home/raxxell2011/cpp12# ./a.out
Vvedite razmernost' massiva -> -1
 
Vvedite celoe pologitelnoe cislo
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Аварийный останов
Чтобы это значило?
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
19.05.2011, 13:15 14
Цитата Сообщение от Raxxell Посмотреть сообщение
C++
1
2
3
4
if (x<=0)
 cout << "\nVvedite celoe pologitelnoe cislo" << endl;
 else 
 goto sel;
=>
C++
1
2
3
4
5
if (x<=0)
{
   cout << "\nVvedite celoe pologitelnoe cislo" << endl;
   goto sel;
}
а еще лучше
C++
1
2
3
4
5
do
{
   cout << "\nVvedite celoe pologitelnoe cislo" << endl;
   cin >> x;
}while (x <= 0);
1
10 / 10 / 0
Регистрация: 27.07.2010
Сообщений: 107
19.05.2011, 14:17  [ТС] 15
Спасибо +1

Что то я тут уже забыл про эти циклы.

Запарился видимо.
0
10 / 10 / 0
Регистрация: 27.07.2010
Сообщений: 107
21.05.2011, 19:01  [ТС] 16
Привет всем!!!

Я тут решил первые задачи с массивами, но почему то у меня не выводит правильный ответ. На выходе получается нулевые значения, подскажите почему.

Вод коды программ:

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*Задача 1
 
 В одномерном массиве целых чисел заменить максимальное значение минимальным*/
 
# include <iostream>
 
# include <stdlib.h>
# include <stdio.h>
 
 
using namespace std;
 
int main()
{
sel:
    int i; // Задаем переменную для цикла
    int x,xx, namber;
    cout <<"\nZadacha 1: ->";
    cout <<"\nV odnomernom massive celih cisel zamenit' maximalnoe znachenie minimal'nim";
    cout <<"\n";
    cout <<"\nViberite punkt menu: ->";
    cout <<"\n1. Zadaem razmernost' massiva ->";
    cout <<"\n2. Zapolnenie massiva ->";
    cout <<"\n3. Obrabotka massiva ->";
    cout <<"\n4. Vivod massiva na monitor ->";
    cout <<"\n5. Povtorit' programmu ->" << endl;
    cin >> namber;
    switch(namber)
    {
    case 1:
        {
        do
        {
            cout <<"\nVvedite razmernost' massiva ->";
            cout << "\nVvedite celoe pologitelnoe cislo" << endl;
            cin >> x;
            xx = x;
        } while (x <= 0);
        goto sel; break;
        
        };
    case 2:
    {
    int *mas = new int[x];
    cout << "\nZapolnjaem massiv" << endl;
    for (i = 0; i < x; i++) // Заполняем массив в ручную с клавиатуры
    {
        cout << "\nVvedite " << i+1 << " znachenije massiva -> ";
        cin >> mas[i];
    }
    goto sel; break;
    
    }
 
    case 3:
    {    
    int max=0, min=0;
    int *mas = new int[x];
    for (i = 1; i < x; i++) // Находим в массиве максимальное значение
        if (mas[i] > mas[max])
            max = i;
 
 
    for (i = 1; i < x; i++) // Находим в массиве минимальное значение
        if (mas[i] < mas[min])
            min = i;
    // тут меняем максимальный(ые) элементы на минимальный
    int tmp_max = mas[max];
    for (i = 0; i < x; i++)
        if (mas[i] == tmp_max)
            mas[i] = mas[min];
    goto sel; break;
    
    }
    case 4:
    {
    int *mas = new int[x];
    cout <<"\nU nas poluchilsja noviy massiv ->";
    for (i = 0; i < x; i++)
        cout << mas[i]<< endl;
    delete[] mas;
    goto sel; break;
    
    }
    case 5:
    {goto sel; break;};
    default:
    {cout <<"\nVi vibrali nesuschestvu'uschiy punkt menu ->";
    cout <<"\nPoprobu'te zapustit' programmu zanovo ->" << endl;};
    getchar();
 
    return 0;
};
}
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*Задача 2
 
 Найти три наименьших положительных элементов одномерного массива целых чисел.*/
 
# include <iostream>
 
# include <stdlib.h>
# include <stdio.h>
 
 
using namespace std;
 
int main()
{
sel:
    int i; // Задаем переменную для цикла
    int x, namber;
    cout <<"\nZadacha 2: ->";
    cout <<"\n Naiti 3 naimenishih pologitelnih elementa massiva celih cisel ->";
    cout <<"\n";
    cout <<"\nViberite punkt menu: ->";
    cout <<"\n1. Zadaem razmernost' massiva ->";
    cout <<"\n2. Zapolnenie massiva ->";
    cout <<"\n3. Obrabotka massiva ->";
    cout <<"\n4. Vivod massiva na monitor ->";
    cout <<"\n5. Povtorit' programmu ->";
    cin >> namber;
    switch(namber)
    {
        case 1:
    {
    do
    {
        cout <<"\nVvedite razmernost' massiva ->";
        cout << "\nVvedite celoe pologitelnoe cislo" << endl;
        cin >> x;
    } while (x <= 0);
    int *mas = new int[x];
    break;
    };
    case 2:
    {
    int *mas = new int[x];
    cout << "\nZapolnjaem massiv" << endl;
    for (i = 0; i < x; i++) // Заполняем массив в ручную с клавиатуры
    {
        cout << "\nVvedite " << i+1 << " znachenije massiva -> ";
        cin >> mas[i];
    }
    break;
    };
    
    case 3:
    {
    int max=0, min=0;
    int *mas = new int[x];
    int mass[3], n;
    do
    {
    for (i = 1; i < x; i++) // Находим в массиве максимальное значение
        if (mas[i] > mas[max])
            max = i;
 
 
    for (i = 1; i < x; i++) // Находим в массиве минимальное значение
        if (mas[i] < mas[min])
    mass[n] = mas[i]; // Запоминаем минимальное значение
        mas[i] = mas[max]; // Затираем минимальное значение максимальным, чтобы не повторялось
    }while (n <= 2);
    break;
    };
    case 4:
    {
    int *mas = new int[x];
    cout <<"\nU nas poluchilsja noviy massiv ->";
    for (i = 0; i < x; i++)
        cout << mas[i]<< endl;
    delete[] mas;
    break;
    };
    case 5:
    {goto sel; break;};
    default:
    {cout <<"\nVi vibrali nesuschestvu'uschiy punkt menu ->";
    cout <<"\nPoprobu'te zapustit' programmu zanovo ->" << endl;};
    getchar();
 
    return 0;
};
}
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*Задача 3
 
 Заменить отрицательные элементы одномерного массива целых чисел на нули, 
 а затем подсчитать количество нулевых элементов*/
 
# include <iostream>
 
# include <stdlib.h>
# include <stdio.h>
 
 
using namespace std;
 
int main()
{
sel:
    int i; // Задаем переменную для цикла
    int x, namber;
    cout <<"\nZadacha 3:";
    cout <<"\nZamenit' otricatelniye elementi odnomernogo massiva celih cisel na nulli,";
    cout <<"\na zatem podschitat' ih";  
    cout <<"\n";
    cout <<"\nViberite punkt menu: ->";
    cout <<"\n1. Zadaem razmernost' massiva ->";
    cout <<"\n2. Zapolnenie massiva ->";
    cout <<"\n3. Obrabotka massiva ->";
    cout <<"\n4. Vivod massiva na monitor ->";
    cout <<"\n5. Povtorit' programmu ->";
    cin >> namber;
    switch(namber)
    {
        case 1:
    {
    do
    {
        cout <<"\nVvedite razmernost' massiva ->";
        cout << "\nVvedite celoe pologitelnoe cislo" << endl;
        cin >> x;
    } while (x <= 0);
    int *mas = new int[x];
    break;
    };
    case 2:
    {
    int *mas = new int[x];
    cout << "\nZapolnjaem massiv" << endl;
    for (i = 0; i < x; i++) // Заполняем массив в ручную с клавиатуры
    {
        cout << "\nVvedite " << i+1 << " znachenije massiva -> ";
        cin >> mas[i];
    }
    break;
    };
 
    case 3:
    {
        int otr=0, min=0; int *mas = new int[x];
    for (i = 1; i < x; i++) // Находим в массиве отрицательные элементы
        if (mas[i] < 0)
            otr = i;
    // тут меняем максимальный(ые) элементы на минимальный
    int tmp_otr = mas[otr];
    for (i = 0; i < x; i++)
        if (mas[i] == tmp_otr)
            mas[i] = 0;
    break;
    };
    case 4:
    {
    int *mas = new int[x];
    cout <<"\nU nas poluchilsja noviy massiv ->";
    for (i = 0; i < x; i++)
        cout << mas[i]<< endl;
    delete[] mas;
    break;
    };
    case 5:
    {goto sel; break;};
    default:
    {cout <<"\nVi vibrali nesuschestvu'uschiy punkt menu ->";
    cout <<"\nPoprobu'te zapustit' programmu zanovo ->";};
 
    getchar();
 
    return 0;
};
}
Программы рабочие, я уже проверил. Но вот результат...

Помогите плиз.
0
10 / 10 / 0
Регистрация: 27.07.2010
Сообщений: 107
23.05.2011, 06:35  [ТС] 17
Я конечно извиняюсь за назойливость, но хоть кто нить подскажите хоть похожие программы, я уж их как нить сам переделаю. А то никаких мыслей нет, даже не знаю куда копать. Потому что еще тут несколько контрольных делаю параллельно.
0
152 / 150 / 44
Регистрация: 09.02.2010
Сообщений: 407
23.05.2011, 07:06 18
Raxxell,
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
/*Задача 3 
 Заменить отрицательные элементы одномерного массива целых чисел на нули, 
 а затем подсчитать количество нулевых элементов*/
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int gen_random( int range_min, int range_max ) {
 
if ( range_min>range_max ) {
        fprintf( stderr, "gen_random(): Invalid arguments\n" ); exit( 1 );
}
 
return range_min+rand()%(range_max-range_min+1);
 
}
 
int main()
{
   srand((unsigned int) time(NULL));
   int n, i;
   int count = 0;
   printf ("Введите размерность массива -> ");
   scanf("%d%*c", &n);
   int *A = (int*) malloc(n*sizeof(int));
   for (i = 0; i < n; ++i)
       A[i] = gen_random(-10, 10);
       printf("\nСгенерированный массив: \n");
   for (i = 0; i < n; ++i) printf("%d%c", A[i], (i%10 == 9 || i==n-1) ? '\n' : ' ');
   for (i = 0; i < n; ++i)
       if (A[i] < 0)
            {
                A[i] = 0;
                count++;
            }
    printf("\nМассив после обработки\n");
   for (i = 0; i < n; ++i) printf("%d%c", A[i], (i%10 == 9 || i==n-1) ? '\n' : ' ');
   printf("\n\nЧисло нулевых элементов в массиве = %d", count);
   free(A);
   A = NULL;
   return 0;
}
1
23.05.2011, 07:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2011, 07:06
Помогаю со студенческими работами здесь

Разные темы оформления меню на старых устройствах
Доброго времени суток всем!) Ребят, столкнулся с такой проблемой, кто может объяснить почему вид...

Рубрика со "смешанными" статьями на разные темы
Можно ли на городской сайт добавить рубрику, в которой будут статьи о разных вещах не касающиеся...

Найти общее решение линейного дифференциального уравнения 1 порядка. Найти частное решение,удовлетворяющее начальному ус
Найти общее решение линейного дифференциального уравнения 1 порядка. Найти частное...

Решение дифференциального уравнения в Matlab и Simulink. Разные результаты
Необходимо решить дифференциальное уравнение: 4*V'' + 4*V' + 3*V +|V|=2*sin(2*pi*t), при V(0)=2,...


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

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