|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » многомерные массивы |
|
многомерные массивы
|
Новый участник Сообщения: 15 |
Профиль | Отправить PM | Цитировать Есть прога:
Помогите написать функцию сортировки строк. #include <iostream.h> #include <string.h> // Набор констант, представляющих различные пункты меню // Непроинициализированная константа имеет значение, на единицу большее предыдущей enum {ChoiceAddEnd=1, ChoiceInsert, ChoiceDelete, ChoiceDeleteAll, ChoicePrint, ChoiceQuit}; int Menu(); // Вывод меню char** AddLine(char**, int&); // Добавление строки в конец массива char** InsLine(char**, int&); // Вставка строки в массив char** DelLine(char**, int&); // Удаление указанной строки из массива void DelAllLines(char**, int&); // Удаление всех строк массива void Print(char**, int); // Распечатка строк массива bool IsArrayEmpty(int&); // Проверка на наличие строк в массиве void main() { char **c; // Массив строк int m = 0; // Начальное количество строк массива int choice = ChoiceAddEnd; while (choice != ChoiceQuit) // Пока не выбран пункт ВЫХОД { choice = Menu(); // Вывод меню cin.ignore(1); // Очистка потока ввода switch (choice) // Выбор пункта меню { case ChoiceAddEnd: c = AddLine(c, m); // Добавление строки в конец массива break; case ChoiceInsert: c = InsLine(c, m); // Вставка строки в массив break; case ChoiceDelete: if (!IsArrayEmpty(m)) // Если массив не пуст c = DelLine(c, m); // Удаление строки break; case ChoiceDeleteAll: if (!IsArrayEmpty(m)) // Если массив не пуст DelAllLines(c, m); // Удаление всех строк массива break; case ChoicePrint: if (!IsArrayEmpty(m)) // Если массив не пуст Print(c, m); // Распечатка массива break; case ChoiceQuit: break; default: // В остальных случаях cout << "Error in choice!\n"; break; } } } char** AddLine(char **c, int &m) // Добавление строки в конец массива { char str[256]; // Массив для ввода новой строки int n; // Длина введенной строки int i; cout << "Input string: "; cin.getline(str, 256); // Ввод строки n = strlen(str); // Вычисление длины новой строки if (m == 0) // Если массив строк пуст { m++; c = new char*[m]; c[0] = new char[n + 1]; // Создаем новую строку в массиве строк strcpy(c[0], str); return c; } else { m++; char** t = new char*[m];// Новый массив строк for(i = 0; i < m - 1; i++) { t[i] = c[i]; } t[m - 1] = new char[n + 1]; strcpy(t[m - 1], str); // Копирование новой строки delete [] c; return t; // Возврат нового адреса массива строк } } } char** InsLine(char **c, int &m) // Вставка строки в массив { char str[256]; // Массив для ввода новой строки int n; // Длина введенной строки int k; // Позиция новой строки в массиве int i, j = 0; cout << "Input string: "; cin.getline(str, 256); cout << "Input position # (0-" << m << "): "; cin >> k; while(k < 0 || k > m) // Проверка на ошибочный ввод { cout << "Error !!!\nInput position # (0-" << m << "): "; cin >> k; } n = strlen(str); // Длина новой строки if (m == 0) // Если массив строк пуст { m++; c = new char*[m]; c[0] = new char[n + 1]; // Создаем новую строку в массиве строк strcpy(c[0], str); return c; // Возврат нового адреса массива строк } else { m++; char** t = new char*[m];// Новый массив строк for(i = 0; i < m; i++) { if (i == k) { t[i] = new char[n + 1]; strcpy(t[i], str); j = 1; } else { t[i] = c[i - j]; } } delete [] c; // Удаление массива строк return t; // Возврат нового адреса массива строк } } char** DelLine(char **c, int &m) // Удаление указанной строки из массива { int k; // Индекс удаляемой строки int i, j = 0; cout << "Input position # (0-" << m - 1 << "): "; cin >> k; while(k < 0 || k >= m) // Проверка на ошибочный ввод { cout << "Error !!!\nInput deleting position #: "; cin >> k; } m--; char** t = new char*[m];// Создание нового массива строк for(i = 0; i < m; i++) { if (i == k) j = 1; t[i] = c[i + j]; } delete [] c; // Удаление массива строк return t; // Возврат нового адреса массива строк } void DelAllLines(char **c, int &m) // Удаление всех строк массива { for(int i = 0; i < m; i++) delete [] c[i]; delete [] c; // Удаление всех строк массива m = 0; } bool IsArrayEmpty(int &m) // Возвращает истину, если массив строк пуст; в обратном случае - ложь { if (m == 0) { cout << "Your line array is empty.\n"; return true; } else return false; } int Menu() // Вывод меню { int choice; cout << "\n******* Menu *******\n"; cout << "1-Add 2-Insert 3-Delete 4-Delete All 5-Print 6-Quit\n"; cin >> choice; // Выбор пункта меню if(choice < 0 || choice > 6) // Проверка выбора choice = 0; return choice; // Возвращение выбранного пункта } void Print(char **c, int m) // Распечатка массива строк { for(int i = 0; i < m; i++) cout << i << ": " << c[i] << endl; } |
|
Отправлено: 14:17, 15-01-2006 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 00:47, 16-01-2006 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Да, тем более, что С++.
Гляньте ещё про STL-овские string-и и vector/map/list-ы. Если только Вы не на сдачу курсовой по С пишите, съэкономите море времени. Эти классы (шаблоны классов) сейчас поддерживаются везде. |
Отправлено: 01:52, 16-01-2006 | #3 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Если нужны исходники сортировки, загляните в файл algorithm в ваших инклюдах, ищите
template<class Iterator, class Operation> sort(Iterator first, Iterator second, Operation op) |
Отправлено: 11:19, 19-01-2006 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Массивы | SS3 | Программирование и базы данных | 3 | 29-04-2009 21:47 | |
MySQL массивы | XCodeR | Вебмастеру | 5 | 28-08-2005 11:42 | |
*Example* | Помогите по C++ (Массивы) | Tier9 | Программирование и базы данных | 3 | 11-03-2005 09:57 | |
Массивы в С++ | Guest | Программирование и базы данных | 2 | 27-09-2004 10:12 | |
C++ и массивы ? | IG | Программирование и базы данных | 9 | 09-06-2003 09:33 |
|