Так что же делать в моем случае?
Так в майне константой задана сотня.
Делать динамический массив тогда? Я сойду сума все переписывать
Так я ж говорю самый простой способ сделать почти-динамический массив: физически создать 100, но реально использовать меньше (считать сколько было в файле, сколько добавили и т.д.)
А вообще надо было или сделать абстракцию для динамического массива (обобщенные функции добавления/удаления элементов любого типа и т.д.) или взять готовый std::vector.
Так я ж говорю самый простой способ сделать почти-динамический массив: физически создать 100, но реально использовать меньше (считать сколько было в файле, сколько добавили и т.д.)
А вообще надо было или сделать абстракцию для динамического массива (обобщенные функции добавления/удаления элементов любого типа и т.д.) или взять готовый std::vector.
Не хватает мне знаний для std::vector. А в остальном не понимаю как это реализовать.
Так это наоборот проще.
Завести переменную с используемым размером в main и передавать её везде в size
вместо 100.
Ну и менять её в соответствии с действиями: возвращать из Read
размер прочитанного из файла, +1/-1 при добавлении/удалении и т.д.
А посмотрите функцию поиска в моем коде пожалуйста! Что там не так?
Так а что именно не работает там?
Не знаю насчет работоспособности, вроде бы выглядит, что должно работать, но вообще лучше стараться делать функции “чистыми”, отделять ввод/вывод. Например, тут выделить функции типа FindByName
, FindByEmail
, которые принимают массив и искомое значение, и возвращают массив индексов или элементов.
Получается при каждом новом открытии файла, старые данные не будут видны?
Это как?
Как организовать такую переменную с используемым размером тогда? Вообще ничего уже не соображаю
В любом файле “видны” те данные, которые там сейчас. Причем тут старые непонятно.
Выше ж написано.
Прочитали из файла данные — записали в переменную прочитанное количество.
Добавили элемент — увеличили на 1.
и т.д.
Так сделайте перерыв )
Пожалуй с этого момента пора определиться что именно сортируется. Имя, маил, телефонный номер или что нить ещё?
Напишите пожалуйста маленький фрагмент кода, я наверно не понимаю синтаксис. А то отдыхать не получится))
Тут как раз понятно, сортировка по имени естественно)
А, да, и при сортировке еще надо сравнивать всю строку-ключ, а не первый символ.
std::string это поддерживает.
Myphone[i].FIO < Myphone[i + 1].FIO
Ну и непонятно зачем префикс my
, и почему список телефонов называется “телефон” (phone), а не “телефоны” (phones).
С сортировкой вроде разобрался, вроде даже работает
void Sort(Phone*Myphone , int size)
{
string temp;
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size - 1; j++)
{
if (Myphone[j].FIO > Myphone[j + 1].FIO)
{
temp = Myphone[j].FIO;
Myphone[j].FIO = Myphone[j + 1].FIO;
Myphone[j + 1].FIO = temp;
}
}
}
}
С грамматикой тоже разберусь, только вот не могу понять того, как реализовать то, о чем до этого говорили
И здесь похоже перестановка
не по имени
Когда закрываю консоль, и запускаю снова, старые данные не видны
Так сразу-же говорили бульбочкой нужно