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

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

Восстановить пароль Регистрация
 
Tenataliya
4 / 4 / 0
Регистрация: 07.05.2010
Сообщений: 40
11.05.2010, 17:18     Массивы, сортировка, матрицы, подпрограммы #1
Здравствуйте Всем!!! Меня зовут Наталья. Учусь на первом курсе на факультете информационных технологий. Точнее уже заканчиваю. у меня с программированием не очень получается, хотя стараюсь. Просто до этого вообще с информатикой дел не имела и мне трудновато, потому что мне приходится все с самого 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.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2010, 17:18     Массивы, сортировка, матрицы, подпрограммы
Посмотрите здесь:

C++ Подпрограммы и массивы
C++ Массивы, сортировка
Массивы,матрицы,сортировка. C++
C++ массивы сортировка
Разбить на подпрограммы (седловые точки матрицы) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
}
enari
 Аватар для 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;
}
Tenataliya
4 / 4 / 0
Регистрация: 07.05.2010
Сообщений: 40
12.05.2010, 19:05  [ТС]     Массивы, сортировка, матрицы, подпрограммы #4
Спасибо Вам огромное! Спасибо что откликнулись. Вы мне очень помогли
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 минут


Программа работает. Еще раз большое спасибо. Только у меня есть вопрос:Вы не можете так сделать чтобы допустим я сама вводила фамилии и результаты, а программа потом все подсчитывала и выводила. Если что хотя бы дадите указание как это осуществить
enari
 Аватар для 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2010, 23:24     Массивы, сортировка, матрицы, подпрограммы
Еще ссылки по теме:

C++ Ошибка при вводе разного кол-ва строк и столбцов в матрицы. Динамич. матрицы/массивы
C++ Консультация. Создать две подпрограммы. Массивы
C++ Поменять местами наибольшие элементы в верхней и нижней половинах матрицы (подпрограммы)

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

Или воспользуйтесь поиском по форуму:
Tenataliya
4 / 4 / 0
Регистрация: 07.05.2010
Сообщений: 40
13.05.2010, 23:24  [ТС]     Массивы, сортировка, матрицы, подпрограммы #7
Спасибо за помощь! Вы мне очень помогаете. Кстати прога для матриц А и В тоже отличная. за нее тоже отдельное спасибо

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

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

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