Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2007, 18:55   #1
oblom
Пользователь
 
Аватар для oblom
 
Регистрация: 22.09.2007
Сообщений: 71
Сообщение телефонная книжка где будут сохранены адреса и телефонные номера

изучаю c++
borland builder 6
задача
создайте телеф книжку где будут сохранены адреса и телеф.номера .Даные должны быть сохранены только во время работы программы .

1 Разработайте или создайте структуру в которой будут сохранены даные .Структура должна содержать Имя, Фамилию и Телефонный номер.
Тел книжка должна содержать 100 записей и сохранена в одном массиве .Создайте соответствующий массив с именем telefonbook как глобальную переменную.

2 Напишите функцию initialisierung() инитиализация которая при записи имени отводит место для пустого string(а)´´при записи каждого имени создает пустой стринг ..´´ Программа должна вызывать этуфичу неприменно при старте.


3 Ваша программа должна осуществлять возможность внесения отображения и удаления записи .Для этого необходимо написать дополнительные функции такие как vwod() (ввод) desk() (отображение ) delett() (удаление ).при отбражении программа должна проветирть что данная запись присутствует .При удалении достаточно стереть Имя .

4 напишите функцию vwodnomera() , которая спрашивает пользователя о тел номере .Как возвращаемое значение функция должна вернуть номер записи или минус один ( -1), если вводное значение лежит вне области *какой области так и не понял ....* Используйте эту функцию для внесения записи , а также для возможности отображения или удаления каждой отдельной записи .Кроме того проверьте перед доступом ,лежит ли значение в границах массива.

5 после напишите подходящую функцию main() которая содержит меню , которое в свою очередь показыват как могут быть выбраны отдельные акции( ввод удаление отображение) используйте при этом конструкцию switch-case.

6. При удалении достаточно удалить только Имя.
вот такая вот задачка
"Пилите, Шура, пилите. Они золотые".....

Последний раз редактировалось oblom; 03.10.2007 в 23:20. Причина: дополнительная информация
oblom вне форума Ответить с цитированием
Старый 03.10.2007, 18:55   #2
oblom
Пользователь
 
Аватар для oblom
 
Регистрация: 22.09.2007
Сообщений: 71
По умолчанию telbook

теперь что удалось наковырять




создаем структуру глобально
#include <iostream.h>
#include <string.h>

//globalno struct
struct person{
char imja[80];
char fam[80];
char telefonnummer[30];
} telefonbook[100];
потом создаем функции для инициализирования

person Initialisierung(char imja[80], char fam[80], char telefonnummer[30]){
person telefonbook;
strcpy(telefonbook.imja, telefonbook.imja);
strcpy(telefonbook.fam, telefonbook.fam);
strcpy(telefonbook.telefonnummer,te lefonbook.telefonnummer);

return(telefonbook);
}

//function dlja vwoda
void vwod(){


cout<<"Familiju vwesti: "<<endl;
cin>>telefonbook[100].fam;
cout<<"Imja vwesti:"<<endl;
cin>>telefonbook[100].imja;
cout<<"Telefonij nomer:"<<endl;
cin>>telefonbook[100].telefonnummer;

cout<<"Imja:\t\t\t"<<telefonbook[100].imja<<endl;
cout<<"Familija : \t\t\t"<<telefonbook[100].fam<<endl;
cout<<"Telefonnummer:\t\t\t"<<telef onbook[100].telefonnummer<<endl;
cout<<"---------------------------------------------------------------"<<endl;
}
"Пилите, Шура, пилите. Они золотые".....

Последний раз редактировалось oblom; 03.10.2007 в 18:58.
oblom вне форума Ответить с цитированием
Старый 03.10.2007, 18:59   #3
oblom
Пользователь
 
Аватар для oblom
 
Регистрация: 22.09.2007
Сообщений: 71
По умолчанию tb

просьба сильно не судить я в программировании всегопол года заочно
"Пилите, Шура, пилите. Они золотые".....
oblom вне форума Ответить с цитированием
Старый 03.10.2007, 19:10   #4
oblom
Пользователь
 
Аватар для oblom
 
Регистрация: 22.09.2007
Сообщений: 71
По умолчанию тб

вот еще немного

void desk(){
cout<<"Zadaite Familiju : ";
cin>>telefonbook[100].fam;
cout<<"iskomoe imja "<<telefonbook[100].fam<<endl<<'\n';

}

void delett(){
cout<<"kakuju Familiju udalit ?"<<endl;
cin>>telefonbook[100].fam; //obraschenie k strukture
cout<<"Udalili "<<telefonbook[100].fam<<endl<<'\n';
}

void nomer(){
cout<<"telefonnij nomer ?."<<endl;
cin>>telefonbook[100].telefonnummer;
cout<<"telefonnij nomer "<<telefonbook[100].telefonnummer<<endl<<'\n';
}

void main(){
//lokalno
person telefonbook[100];

int menu;
bool nochmal=true; //povtor
while(nochmal){
cout<<"Viberite iz Menju"<<endl;
cout<<" (1) vvod novih dannih "<<endl;
cout<<" (2) obrabotka"<<endl;
cout<<" (3) pokasat "<<endl;
cout<<" (4) udalit"<<endl;
cout<<" (0) Programm end "<<endl;
cin>>menu;




switch(menu){
case 1: {
vwod();
break;
}
case 2: {
desk();
break;
}
case 3: {
delett();
} break;
case 4: {
nomer();
} break;
case 0: {
nochmal=false;
break;
}
// oschibki
default: {
cout<<"error.\n\n";
}
}
}
char p[50];
cin.getline(p,50);
cin.getline(p,50);
}
"Пилите, Шура, пилите. Они золотые".....

Последний раз редактировалось oblom; 03.10.2007 в 19:43.
oblom вне форума Ответить с цитированием
Старый 03.10.2007, 22:14   #5
oblom
Пользователь
 
Аватар для oblom
 
Регистрация: 22.09.2007
Сообщений: 71
По умолчанию аа

вообщем это не совсем то что отменя требовалось но почти а еще мож кто подскажет
как в верхнюю программу прикрепитьили интегрировать вот этот вот счетчик учета записей

#include <iostream.h>
void main(){
for (int i=1; i<=100; i++) {
cout<<"Номер записи:"<<i<<endl;





cout<<" фамилия\n имя\n telefonnummer "<<endl;

cout<<"далее ?"<<endl;
cout<<"следующаязапись:"<<endl;
int j=0;
cin>>j;
if (j==1) continue;





}
char p[50];
cin.getline(p,50);
cin.getline(p,50);
}

у меня постояно вылетает цикл с бесконечностью крутит номера до тех пор пока не закроешь
"Пилите, Шура, пилите. Они золотые".....

Последний раз редактировалось oblom; 03.10.2007 в 23:18.
oblom вне форума Ответить с цитированием
Старый 08.10.2007, 10:29   #6
studenth
Форумчанин
 
Регистрация: 10.09.2007
Сообщений: 105
По умолчанию

Так так так.....
тормози....кинул кучу кода.....
начнем по порядку, в этом деле главное что??? правильно остутствие ненужной суеты и усидчивость. Итак, что нам нужно для твоей проги:
1) где то хранить данные
2) написать функции для ввода и вывода, поиска
3) чтоб все это работало...

Как я вижу, ты хочешь хранить данные в RAM, понятно, это обычное дело для учебных программ.

Итак, ты правильно сделал, организовал структуру....

Код:
 
struct person                 //определение структуры
{
char imja[80];
char fam[80];
char telefonnummer[30];
}; 
person telefonbook[100];   //массив структур

Потом создал массив таких структур....
Теперь что? Правильно пишем функцию для ввода данных об абоненте.

Прежде чем идти дальше, отпишись, ты осознал, что это? прочитал про структурные типы данных??? Тебе понятен синтаксис....или ты просто понадергал с нета кусков....не торопись....давай пиши, и пойдем дальше...
Бог сделал людей разными, а генерал Кольт уравнял шансы
studenth вне форума Ответить с цитированием
Старый 08.10.2007, 10:57   #7
studenth
Форумчанин
 
Регистрация: 10.09.2007
Сообщений: 105
По умолчанию

Ну и сразу в догонку небольшой пример,
откомпилируй его в Borland C++ Builder 6....
Вот уже работают функции добавления нового абонента и выход...
разберись досканально, и допишем остальные...
тут же главное, чтоб тебе было понятно....
Код:
 
//------------------------------------------------------------
#include <windows.h>
#include <iostream.h>
//------------------------------------------------------------
//идут определения данных для нашей программки
//определение структуры
struct person
{
        char imja[80];
        char fam[80];
        char telefonnummer[30];
};
person telefonbook[100];
//число занесенных за сессию абонентов
int number = 0;
//выбранный пункт меню
int  menu = 0;
//------------------------------------------------------------
//Функции ввода/вывода
void add_abonent()
{
        //заносим абонента в список
        cout<<"Name: "; cin.getline(telefonbook[number].imja,
                                        sizeof(telefonbook[number].imja));
        cout<<"Family: "; cin.getline(telefonbook[number].fam,
                                        sizeof(telefonbook[number].fam));
        number++;
        if(number == 99) number = 0;
}
//------------------------------------------------------------
//функция выводит меню
void text_menu()
{
        cout<<"1 - add new abonent\n";
        cout<<"2 - search abonent\n";
        cout<<"3 - delete abonent\n";
        cout<<"4 - exit\nPlease Check: ";
}
//------------------------------------------------------------
int main(int argc, char* argv[])
{
        SetConsoleOutputCP(1251);
        label:
        cout<<"Hello!\nIt's a TEST telefon book\nNumber of abonents - "<<number<<"\n\nMenu:\n";
        text_menu();
        cin>>menu;
        //проверяем выбранный пункт меню
        switch(menu)
        {
                case 1:
                {
                        system("cls");
                        add_abonent();                       
                        system("cls");
                        goto label;
                }
                case 4: exit(0);
        }
 
        cout<<"\n\n\n";
        system("pause");
        return 0;
}
//------------------------------------------------------------
Бог сделал людей разными, а генерал Кольт уравнял шансы

Последний раз редактировалось studenth; 08.10.2007 в 11:00.
studenth вне форума Ответить с цитированием
Старый 09.10.2007, 19:26   #8
oblom
Пользователь
 
Аватар для oblom
 
Регистрация: 22.09.2007
Сообщений: 71
По умолчанию

со структурами я разобрался более или менее и массивы тоже прошел
с этим лады, но такие пункты как label sizeoff еще не проходили


int main(int argc, char* argv[])
{
SetConsoleOutputCP(1251);
label:

заглядывая вперед хотел узнать это что за функции
"Пилите, Шура, пилите. Они золотые".....

Последний раз редактировалось oblom; 09.10.2007 в 19:37.
oblom вне форума Ответить с цитированием
Старый 09.10.2007, 20:15   #9
oblom
Пользователь
 
Аватар для oblom
 
Регистрация: 22.09.2007
Сообщений: 71
По умолчанию

я думаю стоит выложить материалы которые я уже проходил
"Пилите, Шура, пилите. Они золотые".....
oblom вне форума Ответить с цитированием
Старый 10.10.2007, 08:28   #10
studenth
Форумчанин
 
Регистрация: 10.09.2007
Сообщений: 105
Вопрос

SetConsoleOutputCP(1251); - устанавливает кодовую таблицу символов, для вывода кирилицы в консоль...в твоем случае можно не использовать...насколько я понимаю, тебе не нужно по русски.....

label: - метка.
Так, существует оператор безусловного перехода, выглядит он:


Код:
 
label:
// идет код
//идет код
//идет код
goto label; //при выполнении этого оператора поток возвращается 
               //место метки(в данном случае label)
               //нужно для переходов с одной части программы в другую...
               //оператор сейчас почти не используется,
               //но так, как у нас консольное приложение, он очень даже 
               //полезен
Бог сделал людей разными, а генерал Кольт уравнял шансы
studenth вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Записная книжка Черничный Софт 9 15.07.2008 04:44
Как пометить в форме номера тел. так что бы..... beliy-dis Microsoft Office Access 3 08.07.2008 23:11
двузначные числа которые при умножении на 3 будут заканчиваться на цифру 4 Ases_51 Паскаль, Turbo Pascal, PascalABC.NET 4 13.01.2008 11:37
Вычисления номера позиции Stelix Паскаль, Turbo Pascal, PascalABC.NET 3 03.12.2007 03:05