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

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

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

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

26.11.2009, 11:53. Просмотров 811. Ответов 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;}
могут быть ошибки, писал с листочка.

ХЕЛП!!!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2009, 11:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Телефонный справочник. Не могу решить (C++):

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

Телефонный справочник - C++
Здравствуйте пытаюсь разобрать такую программу изкнижки Напишите программу, которая позволяет найти в телефонном справочнике...

телефонный справочник - C++
Написать программу, которая позволяет найти в телефонном справочнике (phone.txt) нужные сведения. Программа должна запрашивать фамилию...

Телефонный справочник - C++
Прога читает из файла, есть поиск по имени и по адресу. Никак не могу реализовать поиск по номеру. Помогите пожалуйста. Вот код: ...

Телефонный справочник. - C++
Здравствуйте. Нужна помощь в создании программы, которая объединяла бы в себе действия: &quot;Добавление в телефонный справочник&quot; и &quot;Поиск в...

Телефонный справочник. - C++
#include &quot;stdio.h&quot; #include &quot;conio.h&quot; #define FNAME &quot;I:\\phone.txt\0&quot; void main() { char fname = FNAME; FILE *out; char...

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

телефонный справочник - C++
создать программу телефонный справочник на 5 человек эти 5 человек вводятся с клавиатуры. помогие составить

Телефонный справочник - C++
Всем привет! :) Задачка в двух словах такова. Надо сделать телефонный справочник, чтоб можно было добавлять ФИО №телефона, затем...

телефонный справочник - C++
Создать телефонный справочник для осуществления следующих операций: Добавление абонентов в базу. Удаление абонентов из базы. ...

Телефонный справочник - C++
Здравствуйте пытаюсь разобрать такую программу изкнижки Напишите программу, которая позволяет найти в телефонном справочнике...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.11.2009, 17:52
Ответ Создать тему
Опции темы

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