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

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

Войти
Регистрация
Восстановить пароль
 
state
0 / 0 / 0
Регистрация: 19.11.2009
Сообщений: 6
#1

Телефонный справочник. Не могу решить - C++

26.11.2009, 11:53. Просмотров 766. Ответов 6
Метки нет (Все метки)

Ребят помогите пожалуйста. Задачку надо решить не сложную. У меня что-то не выходит..


Составить программу телефонный справочник, которая имеет меню:
1-добавление
2-поиск
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
{file *p; int x,i,q;
char fam[30],ima[10],tel[10],fam1[30];
k:setlocale[lc_all,"russian"];
cout<<"1-добавление"<<endl<<"2-Поиск"<<endl<<"3-завершение"<<endl;
cin>>x; q=0;
{if (x==1)
{p=fopen("c:\\temp\\spravochnik.txt","a");
if (p!=NULL)
{cout<<"Введите фамилию",<<"Имя"<<"Телефон"<<endl;
setlocal(lc_all,".866");
cin>>fam>>ima>>tel;
fprintf(p,"%s%s%s\n",fam,ima,tel);
fclose(p);} else puts ("файла нет");
goto k;}
if (x==2) (p=fopen("c:\\temp\\spravochnik.txt","r");
if (p!=NULL)
{setlocal(lc_all,"russian");
cout<<"введите фамилию"<<edl;
setlocal(lc_all,".866");
cin>>fam1;
while (!feof(p)) {fscanf(p,"%s%s%s\n",&fam,&ima,&tel);
if (!strcmp(fam,fam1))
{cout<<fam<<" "<<tel<<endl;q++;}}
if (q==0) setlocale (lc_all,"russian");
cout<<"Данных нет"<<endl;fclose(p);}
else puts ("Файла нет");
goto k;}
if(x==3) return 0;}
return 0;}
могут быть ошибки, писал с листочка.

ХЕЛП!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mamedovvms
2915 / 836 / 93
Регистрация: 30.04.2009
Сообщений: 2,615
26.11.2009, 12:00     Телефонный справочник. Не могу решить #2
а может тебе надо вот так записать
C++
1
2
3
4
5
if (q==0)
{
 setlocale (lc_all,"russian");
cout<<"Данных нет"<<endl;fclose(p);
}
Добавлено через 1 минуту
у тебя же к условию нет блока по этому выполняется при условии только то что после него
state
0 / 0 / 0
Регистрация: 19.11.2009
Сообщений: 6
26.11.2009, 21:01  [ТС]     Телефонный справочник. Не могу решить #3
я пробовал так писать, всяко пробовал.
Он тогда сообщение "Данных нет" вообще никогда не выводит:-(((
accept
4817 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.11.2009, 04:12     Телефонный справочник. Не могу решить #4
Код
setlocale[lc_all,"russian"];
регистр не соблюдён, LC_ALL (имена макросов обычно пишутся большими буквами NULL, EOF, LC_ALL и так далее)
и слишком много раз эта функция вызывается, когда одного достаточно
state
0 / 0 / 0
Регистрация: 19.11.2009
Сообщений: 6
27.11.2009, 14:28  [ТС]     Телефонный справочник. Не могу решить #5
дело ведь не в этом.
Дело мне кажется в скобках, но как их расставить.
говорю же с листочка писал, мог и маленькими буквами написать, так то они большими в программе
accept
4817 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
28.11.2009, 02:35     Телефонный справочник. Не могу решить #6
проверь фигурные скобки на парность
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2009, 17:52     Телефонный справочник. Не могу решить
Еще ссылки по теме:

C++ Создать телефонный справочник на С++
Телефонный справочник города C++
Телефонный справочник с возможностью редактирования C++
Телефонный справочник консоль C++
C++ Телефонный справочник

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

Или воспользуйтесь поиском по форуму:
state
0 / 0 / 0
Регистрация: 19.11.2009
Сообщений: 6
28.11.2009, 17:52  [ТС]     Телефонный справочник. Не могу решить #7
По парно всё норма
Yandex
Объявления
28.11.2009, 17:52     Телефонный справочник. Не могу решить
Ответ Создать тему
Опции темы

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