Вот навоял такое)))
Только, что то не пойму - абонентов не выводит, поиск происходит только по первому абоненту.
Только прошу не решайте, а если есть возможность просто на ошибки укажите(просто хочу сам разобраться, а чет туплю не по детски).
Сразу грешил на кодировку, а потом понял, что не в ней дело. Походу как то не корректно сохраняет инфу в массив
читать дальше »
Код:

#include <iostream>
#include <cstring>
using namespace std;
typedef struct {
char firstname[15],
lastname[20];
char address[40];
int phone;
}kniga[50];
void menu();
void search(kniga *ptr);
void vivod(kniga *ptr, int i);
int main()
{
kniga kn;
cout << "\t\tTelefonniy spravochnik\n";
int k_abon;
cout << "Vvedite kol-vo abonentov: ";
cin >> k_abon;
cout << endl;
for(int i = 0; i < k_abon; i++)
{
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "Vvedite imya:\t";
cin >> kn[i].firstname;
cout << "Vvedite familiyu: ";
cin >> kn[i].lastname;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "Vvedite address: ";
cin.getline(kn[i].address, 40);
cout << "Vvedite telefon:";
cin >> kn[i].phone;
cout << endl;
}
for(int i = 0; i < k_abon; i++) // вывод введенного
{
cout << kn[i].firstname << " " << kn[i].lastname << " " << kn[i].address << " " << kn[i].phone << "\n";
}
int Menu;
do
{
menu();
cin >> Menu;
switch(Menu)
{
case 1: // поиск по фамилии
search(&kn);
break;
case 2: // вывод всех абонентов по первой букве алфавита
char Flastname;
cout << "Vvedite pervuyu bukvu";
cin >> Flastname;
for(int i = 0; i < k_abon; i++)
{
if(kn[i].lastname[0] == Flastname)
cout << kn[i].firstname << " "
<< kn[i].lastname << " "
<< kn[i].phone << " "
<< kn[i].address << "\n";
}
break;
case 3: // вывод всех абонентов
vivod(&kn, k_abon);
break;
}
} while(Menu > 1 || Menu < 3);
return 0;
}
void menu()
{
cout << "\t\tMenu\n"
<< "\n1) Poisk telefona po familii"
<< "\n2) Vivod abonentov po pervoy bukve familii"
<< "\n3) Vivod vsex abonentov\n";
}
void vivod(kniga *ptr, int k_abon)
{
for(int i = 0; i < k_abon; i++)
{
cout << ptr[i]->firstname << " "
<< ptr[i]->lastname << " "
<< ptr[i]->address << " "
<< ptr[i]->phone << "\n";
}
}
void search(kniga *ptr)
{
char Slastname[20];
cout << "Vvedite familiyu";
cin >> Slastname;
for(int i = 0; i < 50; i++)
{
if(!strcmp(ptr[i]->lastname, Slastname))
{
cout << "Telefon: " << ptr[i]->phone << endl;
break;
}
}
}
вот такой вот вывод получается сразу все хорошо все выводится, а потом какие то маты консоль выдает(русский убрал полностью)
Посидел чу-чуть поразмыслил: переделал все тоже самое только без функций, работает - теперь если у кого то время будет можете глянуть верхний код и сравнить его с переделанным и указать на ошибки.
Вот код:
читать дальше »
Код:

#include <iostream>
#include <cstring>
using namespace std;
typedef struct {
char firstname[15],
lastname[20];
char address[40];
int phone;
}kniga[50];
void menu();
int main()
{
kniga kn;
cout << "\t\tTelefonniy spravochnik\n";
int k_abon;
cout << "Vvedite kol-vo abonentov: ";
cin >> k_abon;
cout << endl;
for(int i = 0; i < k_abon; i++)
{
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "Vvedite imya:\t";
cin >> kn[i].firstname;
cout << "Vvedite familiyu: ";
cin >> kn[i].lastname;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "Vvedite address: ";
cin.getline(kn[i].address, 40);
cout << "Vvedite telefon:";
cin >> kn[i].phone;
cout << endl;
}
int Menu;
do
{
menu();
cin >> Menu;
switch(Menu)
{
case 1: // поиск по фамилии
char Slastname[20];
cout << "Vvedite familiyu\t";
cin >> Slastname;
for(int i = 0; i < k_abon; i++)
{
if(!strcmp(kn[i].lastname, Slastname))
{
cout << "Telefon: " << kn[i].phone << endl;
break;
}
}
break;
case 2: // вывод всех абонентов по первой букве алфавита
char Flastname;
cout << "Vvedite pervuyu bukvu\t";
cin >> Flastname;
for(int i = 0; i < k_abon; i++)
{
if(kn[i].lastname[0] == Flastname)
cout << kn[i].firstname << " "
<< kn[i].lastname << " "
<< kn[i].phone << " "
<< kn[i].address << "\n";
}
break;
case 3: // вывод всех абонентов
for(int i = 0; i < k_abon; i++) // вывод введенного
{
cout << kn[i].firstname << " " << kn[i].lastname << " " << kn[i].address << " " << kn[i].phone << "\n";
}
break;
}
} while(Menu > 1 || Menu < 3);
return 0;
}
void menu()
{
cout << "\t\tMenu\n"
<< "\n1) Poisk telefona po familii"
<< "\n2) Vivod abonentov po pervoy bukve familii"
<< "\n3) Vivod vsex abonentov\n";
}
И вообще спасибо за оказанную помощь