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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tenataliya
4 / 4 / 0
Регистрация: 07.05.2010
Сообщений: 40
#1

Массивы, сортировка, матрицы, подпрограммы - C++

11.05.2010, 17:18. Просмотров 959. Ответов 6
Метки нет (Все метки)

Здравствуйте Всем!!! Меня зовут Наталья. Учусь на первом курсе на факультете информационных технологий. Точнее уже заканчиваю. у меня с программированием не очень получается, хотя стараюсь. Просто до этого вообще с информатикой дел не имела и мне трудновато, потому что мне приходится все с самого 0 учить, а в универе уже преподают для тех кто более или менее разбирается. У нас сейчас на носу курсовая, а я толком ничего сделать не могу, то есть самого главного, написать программы. Если кто-нибудь возмется мне помочь и объяснить, буду очень благодарна.(Хотя бы одну из задач, по возможности) . Конечно не обижайтесь, но кроме "Огромного спасибо" ничего предложить не могу. Мне нужно написать программы на С++, чтобы читался на компиляторе Borland 3.1 или Turbo C++. Кому не трудно , помогите пожалуйста.

Задача №1:Задан список участников соревнований по плаванию и их результаты.
Напечатать фамилию и результат чемпиона. Расположить результаты и фамилии участников
в соответствии с занятыми местами.
Указание к решению задачи №1:
Задача сводится к упорядочению массива результатов в порядке возрастания,
но при выполнении перестановки в массиве результатов нужно переставлять соответствующие
элементы и в массиве фамилий.*/

Задача№2:Сформировать из матрицы А (10,10) матрицу В (10,10) по следующим правилам:
1) элементы матриц А и В принимают только значения 0 или 1;
2) соседями элемента aij считаются все элементы, расположенные рядом с данным по горизонтали, вертикали или диагонали;
3) если сумма S значений соседей элемента aij меньше двух или больше трех, то bij=0;
4) если сумма S значениу соседей элемента aij равна двум, то aij=bij ;
5) если сумма S значениу соседей элемента aij равна трем, то bij=1.
По окончании формирования матрицы В значения элементов построчно вывести на печать, заменяя 0-символом i , 1- символом *

Указание к решению задачи:
Для решения задачи, нужно заполнив предварительно нулями матрицу В, просматривать элементы матрицы А и для каждого определить сумму элементов, являющихся ее соседями. В зависимости от ответа присваивать элементу массива В соответствующее значение (значение 0 присваивать не нужно). Перед выводом на печать преобразовать матрицу В к символьному виду. Чтобы просмотр элементов матрицы А и суммирование ее соседей не зависело от того, находится элемент на границе или со всех сторон имеет соседей, можно работать с расширенной матрицей 12*12. Элементам расширяющим матрицу (i=1,12; j=1,12), значений не присваивать, они всегда имеют значения 0.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2010, 17:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массивы, сортировка, матрицы, подпрограммы (C++):

Массивы,матрицы,сортировка. - C++
помогите пожалуста очень срочно надо скоро сессия а я не че не зделал а времени чтоб разобраться не хватает. 1.найти сумму чисел в...

Подпрограммы и массивы - C++
Товарищи! необходимо решить задачи по массивам (и подпрограммами) Надо Составить программу решения задачи на С + + и Паскале,...

Консультация. Создать две подпрограммы. Массивы - C++
Добрый день! Учусь на заочном, в основном осваиваю Си самостоятельно. В процессе изучения возникают вопросы. В данный момент...

Разбить на подпрограммы (седловые точки матрицы) - C++
Приветствую. Вот код, в консоли программа выводит на экран седловые точки матрицы MxN (минимальные в столбце и максимальные в строке). ...

Ошибка при вводе разного кол-ва строк и столбцов в матрицы. Динамич. матрицы/массивы - C++
Дана матрица, размерность вводит пользователь, данные тоже. Осуществить сортировку вставками, массива, который будет получен из суммы...

Поменять местами наибольшие элементы в верхней и нижней половинах матрицы (подпрограммы) - C++
В матрице A( n- строк, m- столбцов; n- четное) поменять местами наибольшие элементы в ее верхней и нижней половинах. Для поиска индексов...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
EvilSlipp3r
32 / 32 / 3
Регистрация: 25.03.2010
Сообщений: 45
11.05.2010, 18:57 #2
Не знаю как там дела обстоят с Борландом и Турбо, т.к. не пользуюсь ими... Если не пойдёт - измените под свои нужды...
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
#include "iostream.h"
#include "conio.h"
 
int main(){
    int const SIZE = 5;
    int i, j , temp, a[SIZE]={30, 40, 35, 28, 37};
    char * b[SIZE] ={"Ivanov", "Petrov", "Sidorov", "Medvedev", "Kirkorov"} ;
    char *tempname;
    
    // печатаем исходные массивы
    for(i = 0; i < SIZE; i++)
        cout << b[i] << " - " << a[i] << endl;
    
    // сортируем пузырьком и изменяем фамилии
    for( i=0; i < SIZE; i++) {           
        for( j = SIZE-1; j > i; j-- ) {     
            if ( a[j-1] > a[j] ) {
                temp=a[j-1]; tempname = b[j-1];
                a[j-1]=a[j]; b[j-1]=b[j];
                a[j]=temp; b[j]=tempname;
            }
        }
    }
    
    // печатаем результаты 
    cout << "==========" << endl;
    for(i = 0; i < SIZE; i++)
        cout << (i + 1) << " place : " << b[i] << " - " << a[i] << endl;
    getch();
    return 0;
}
1
enari
18 / 18 / 2
Регистрация: 26.04.2010
Сообщений: 35
12.05.2010, 02:09 #3
Посмотри, вроде задание правильно понял.

Лучше не придумал =)

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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include <iostream>
 
using namespace std;
 
 
 
const short size = 5; // Размерность матрицы 
 
int main ()
{   int buff , flag = 0;
    int summ = 0;
    
    int matrixA[size][size] = {
        {1,1,0,0,1},
        {1,0,1,1,0},
        {0,0,1,0,1},
        {1,0,0,1,0},
        {0,1,1,1,0},
        }; // Инициализация матрицы 5х5
        
    int matrixB[size][size];
    
        for (int i = 0; i <size;i++) // Обнуление матрицы B
    {
        for (int l = 0; l< size; l++)
        {
            matrixB[i][l] = 0;
        }
    }
    
    /*for (int i = 0; i < size;i++) // Ручной ввод.
    {
        do 
        {
            cin >> buff;
            if (buff == 0 || buff == 1){matrixA[i][flag] = buff; flag++; cout << "ok";}
            else{cout << "Попробуй еще раз !\n";}
        }while(flag != size);
        
        cout << i << "test\n";
        flag = 0;
    }*/
    
    for (int i = 0; i <size;i++)
    {
        for (int l = 0; l<size;l++)
        {
            if (i == 0 && l == 0) //Верхний левый угол
            {
                summ +=matrixA[i][l+1];
                summ +=matrixA[i+1][l];
                summ +=matrixA[i+1][l+1];
                
            }
            
            if (i == size-1 && l == 0) // Нижний левый угол
            {
                summ +=matrixA[i-1][l];
                summ +=matrixA[i][l+1];
                summ +=matrixA[i+1][l+1];
                
            }
            
            if(i == 0 && l == size-1) // Верхний правый
            {
                summ +=matrixA[i+1][l];
                summ +=matrixA[i+1][l-1];
                summ +=matrixA[i][l-1];
                
            }
            
            if (i == size-1 && l==size-1) // Нижний правый
            {
                summ +=matrixA[i-1][l];
                summ +=matrixA[i][l-1];
                summ +=matrixA[i-1][l-1];
            }
            
            if ((i > 0 && i<size-1) && l == 0) // Левый столбец
            {
                summ +=matrixA[i+1][l];
                summ +=matrixA[i][l+1];
                summ +=matrixA[i+1][l];
                summ +=matrixA[i+1][l+1];
                summ +=matrixA[i-1][l+1];
            }
            
            if ((i > 0 && i<size-1) && l == size-1) // Нижняя строка
            {
                summ +=matrixA[i-1][l];
                summ +=matrixA[i+1][l];
                summ +=matrixA[i][l-1];
                summ +=matrixA[i+1][l-1];
                summ +=matrixA[i-1][l-1];
                
            }
            
            if (i == 0 && (l > 0 && l <size-1)) // Правый столбец
            {
                summ +=matrixA[i][l+1];
                summ +=matrixA[i][l-1];
                summ +=matrixA[i+1][l];
                summ +=matrixA[i+1][l-1];
                summ +=matrixA[i+1][l+1];
            }
            if(i == size-1 && (l > 0 && l <size-1)) // Верхняя строка
            {
                summ +=matrixA[i][l+1];
                summ +=matrixA[i][l-1];
                summ +=matrixA[i-1][l];
                summ +=matrixA[i-1][l-1];
                summ +=matrixA[i-1][l+1];
            }
            
            if ((i > 0 && i < size-1) && (l > 0 && l < size-1)) // Элементы не на границах
            {
                summ +=matrixA[i+1][l+1];
                summ +=matrixA[i-1][l-1];
                summ +=matrixA[i+1][l-1];
                summ +=matrixA[i-1][l+1];
                summ +=matrixA[i][l+1];
                summ +=matrixA[i][l-1];
                summ +=matrixA[i+1][l];
                summ +=matrixA[i-1][l];
            }
            
            
            if (summ == 2){matrixB[i][l] = matrixA[i][l];} 
            if (summ == 3){matrixB[i][l] = 1;}
            
            summ = 0;
        }
    }
    
    for (int i = 0; i < size; i++) // Вывод как есть.
    {
        for (int l = 0; l <size; l++)
        {
            cout << matrixB[i][l]<<" ";
        }
        cout << '\n';
    }
    
    cout << "\n";
    
        for (int i = 0; i < size; i++) // Вывод с изменением.
    {
        for (int l = 0; l <size; l++)
        {
            if (matrixB[i][l] == 0){cout << "i"<<" ";}
            else{cout << "*"<<" ";}
        }
        cout << '\n';
    }
    return 1;
}
1
Tenataliya
4 / 4 / 0
Регистрация: 07.05.2010
Сообщений: 40
12.05.2010, 19:05  [ТС] #4
Спасибо Вам огромное! Спасибо что откликнулись. Вы мне очень помогли
0
Tenataliya
4 / 4 / 0
Регистрация: 07.05.2010
Сообщений: 40
13.05.2010, 16:03  [ТС] #5
Цитата Сообщение от EvilSlipp3r Посмотреть сообщение
Не знаю как там дела обстоят с Борландом и Турбо, т.к. не пользуюсь ими... Если не пойдёт - измените под свои нужды...
1) [CPP]#include "iostream.h"
#include "conio.h"

int main(){
int const SIZE = 5;
int i, j , temp, a[SIZE]={30, 40, 35, 28, 37};
char * b[SIZE] ={"Ivanov", "Petrov", "Sidorov", "Medvedev", "Kirkorov"} ;
Я проверила прогу, она работает. Еще раз большое спасибо. Только у меня есть вопрос: Вы не можете сделать так чтобы допустим я вводила сама данные (фамилии и результаты), а потом программа все подсчитывала и выводила? Если сможете, ответьте . Или хотя бы подскажите как это реализовать

Добавлено через 6 минут


Программа работает. Еще раз большое спасибо. Только у меня есть вопрос:Вы не можете так сделать чтобы допустим я сама вводила фамилии и результаты, а программа потом все подсчитывала и выводила. Если что хотя бы дадите указание как это осуществить
0
enari
18 / 18 / 2
Регистрация: 26.04.2010
Сообщений: 35
13.05.2010, 18:02 #6
Добавил Ручной ввод. пользуйся

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
#include "iostream"
#include "conio.h"
 
using namespace std;
 
int main(){
        int const SIZE = 5;
        int i, j , temp, a[SIZE];//={30, 40, 35, 28, 37};
        char *b[SIZE];// ={"Ivanov", "Petrov", "Sidorov", "Medvedev", "Kirkorov"} ;
        char *tempname;
        char buff[100];
        
        for (int k = 0; k<SIZE; k++) //Ручной ввод
        {   
            cout << "Введите фамилию участника\n";
            cin >> buff;
            b[k] = &buff[0];
            cout << "Введите бал\n";
            cin >> a[k];
            
        }
        
        // печатаем исходные массивы
        for(i = 0; i < SIZE; i++)
                cout << b[i] << " - " << a[i] << endl;
        
        // сортируем пузырьком и изменяем фамилии
        for( i=0; i < SIZE; i++) {           
                for( j = SIZE-1; j > i; j-- ) {     
                        if ( a[j-1] > a[j] ) {
                                temp=a[j-1]; tempname = b[j-1];
                                a[j-1]=a[j]; b[j-1]=b[j];
                                a[j]=temp; b[j]=tempname;
                        }
                }
        }
        
        // печатаем результаты 
        cout << "==========" << endl;
        for(i = 0; i < SIZE; i++)
                cout << (i + 1) << " place : " << b[i] << " - " << a[i] << endl;
        getch();
        return 0;
}
1
Tenataliya
4 / 4 / 0
Регистрация: 07.05.2010
Сообщений: 40
13.05.2010, 23:24  [ТС] #7
Спасибо за помощь! Вы мне очень помогаете. Кстати прога для матриц А и В тоже отличная. за нее тоже отдельное спасибо

Добавлено через 23 минуты
Не сочтите за наглость. Но у меня к Вам будет еще просьба на счет еще одной проги, которую мне нужно сдать. Если не сможете , то ничего Вы мне и так много помогли. Но если возможно напишите.

Задание №3: Составить программу для контроля знаний. В программе задается один вопрос, ответ на который включает несколько наименований (например, «Назовите все элементы периодической системы, представляющие группу галогенов?» или «Назовите все города с населением свыше одного миллиона?» и т. п.). В памяти ЭВМ хранится список наименований, являющийся полным ответом на вопрос. Введенный ответ необходимо сравнить с правильным.
Указание к решению задачи №3: Решение задачи требует использования подпрограмм. Список наименований, являющийся полным ответом на вопрос, хранить в символьном массиве. Ответы обучаемого вводить в другой символьный массив. Для повышения эффективности программы можно правильные ответы ввести в массив упорядоченными (или упорядочить сразу после ввода), а после ввода ответов, перед сравнением, упорядочить и массив ответов. Для сравнения использовать алгоритм сравнения двух упорядоченных массивов. Алгоритмы упорядочения массивов и сравнения двух упорядоченных массивов оформить в виде подпрограмм.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2010, 23:24
Привет! Вот еще темы с ответами:

массивы сортировка - C++
простая сортировка обменами. напишите плиз..

Массивы, сортировка - C++
Люди помогите сделать єто задание: Лабораторна робота №2 Тема – алгоритмізація і програмування процесів обробки масивів. Мета –...

Гномья сортировка (массивы) - C++
Помогите написать программу &quot;гномьей сортировки&quot;.

Массивы. Сортировка,максимум. - C++
Я в этом году поступил в ЮФУ и сразу начелось программирование! Я в него пока не могу вдуплить , кроме самого элементарного,типа решить...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.05.2010, 23:24
Ответ Создать тему
Опции темы

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