| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > Таблица (need in help). |
| Автор: Feanor 16.5.2005, 15:24 |
| Здравствуйте товарищи! У меня к вам вопрос лёгенький, если не сложно, то, пожалуйста, ответте. В общем надо на языке С++ (Builder C++ v.3.1) создать таблицу записей типа имя, возраст, пол (m или f), телефон. И вывести список всех, у кого телефон начинается с трёх заданных (с экрана) цифр. P.S. Если решитесь сделать, то, пожалуйста, по проще, а то мне это всё разбирать долго придётся. Заранее благодарен. |
| Автор: Feanor 16.5.2005, 21:31 |
| Неужели Я так много попросил |
| Автор: Lamak 16.5.2005, 21:52 | ||
Что ты имееш ввиду под словом
Добавлено @ 21:58 И ещё тебе очень срочно или как? |
| Автор: Lamak 16.5.2005, 22:12 |
| Да и на Builder C++ v.6 устроит? |
| Автор: Fixin 16.5.2005, 22:29 |
| Подробности на сцену! Добавлено @ 22:30 Хотя билдер - проще некуда. Что надо-то, действительно. |
| Автор: Feanor 17.5.2005, 14:22 |
| Таблица записей типа имя, возраст, пол (m или f), телефон а)вывести список всех, у кого телефон начинается с трёх заданных ( с экрана) цифр, б)функция добавления одной записи, в)вывод всех с заданным именем. Вот, всё, что в условии Добавлено @ 14:22 Устроит любой билдер |
| Автор: Feanor 17.5.2005, 16:19 |
| Вот по этим вроде бы шаблонам: Код: 1) struck stud{char name[20], group[10]; int mark[3];}; 2) void enter (stud & x){......} void print (stud x){......} void enter (stud x[], int & n){.....} void print (stud x[],int n){......} 3) void main(){stud my[40]; int; do{........ case '1':enter(my, n); break; case '2': print(my, n); break; case 27: exit(0);} getch();} while(1);} case '3': cout<<"Буква:"; cin>>c; bukva(c, my, n, his, k); print(his, k); break: И вот это: void bukva(char b, stud x[] int n, stud y[], int & k) {int i; k=0; for(i=0; i<n; i++) if(x[i].name[0]==b) {y[m]=x[i]; m++;} } Я в этом плохо разбираюсь, может вам поможет |
| Автор: Lamak 17.5.2005, 16:45 |
| Тебе нужно чтобы это было windows приложение с формой или консольное приложение? Добавлено @ 16:47 Да и обятельно ли применение твоих шаблонов? |
| Автор: Yanis 17.5.2005, 16:49 | ||
Тоже никак не пойму. |
| Автор: Lamak 17.5.2005, 16:52 | ||||||
И ещё
это определение всех записей у кторых имя начинается с определённой буквы( с буквы b), а в задании
Добавлено @ 16:58
Может ты имел в виду Borland C++ v.3.1,тогда понятно :консольное приложение . |
| Автор: Lamak 17.5.2005, 17:21 |
| http://forum.vingrad.ru/index.php?showtopic=51282 Это тоже ты Feanor или я чегото не понимаю? |
| Автор: Feanor 17.5.2005, 17:53 |
| консольное Добавлено @ 17:54 Конечно же BORLAND Я опечатался!!!Блин, извиняюсь |
| Автор: Feanor 17.5.2005, 22:11 | ||
Нет, это не Я. Добавлено @ 22:12 HELP!!! |
| Автор: Fixin 17.5.2005, 22:50 | ||
|
| Автор: Lamak 18.5.2005, 08:44 | ||||||||||
Вот :
Добавлено @ 08:47 Если что-то непонятно - обращайся раскажу. Добавлено @ 08:51
Это был вопрос Я реализовал(функция the_name) как в шаблоне т.е.
|
| Автор: Feanor 18.5.2005, 18:48 |
| Спасибо огромное!!! Никогда не забуду!!! |
| Автор: Feanor 20.5.2005, 21:52 |
| У меня куча вопросов А можно разделить прогу по частям, ну то есть первое задание отдельно и 2 с 3 тоже? Если не трудно, то спасите plz void input(stud &record) { cout << "input Name: ";cin >> record.Name; cout << "input Age: ";cin >> record.Age; cout << "input Sex: "; char sex; cin >> sex; record.Sex = (sex == 'm' || sex == 'M')? 1: 0; cout << "input Tel: "; cin >> record.Tel; } //------------------// void output(stud &record) { cout << record.Name << '\t'; cout << record.Age << '\t'; cout << (record.Sex ? 'M': 'F') << '\t'; (а сдесь должно вроде или стоять, но это двечерты или я ошибаюсь, в общем лучше всё поясни) cout << record.Tel <<endl; } //------------------// void output_all(stud records[], int count) { for (int i=0; i< count; ++i) output(records[i]); } //------------------// void the_tel(stud records[], int count) { char new_tel[3]; (почему 3) cout<<"new_tel="; cin>>new_tel; int flag=0; for (int i=0; i<count; ++i) (а i++ не тоже самое, что и ++i) { flag=1; for (int j=0; j<3; ++j) if(new_tel[j]!=records[i].Tel[j]) { flag=0; break; } if(flag) output(records[i]); } } //------------------// void the_name(stud records[], int count) { char new_bukva; cout<<"new_bukva="; cin>>new_bukva; int flag=0; for (int i=0; i<count; ++i) { flag=1; if(new_bukva!=records[i].Name[1]) flag=0; if(flag) output(records[i]); } } //------------------// char menu() { char b; cout<<"1 - new record"<<endl; cout<<"2 - show all record"<<endl; cout<<"3 - the_telefon"<<endl; cout<<"4 - the_name"<<endl; cout<<"5 - Exit"<<endl; cout<<"input: "; cin>>b; return b;} //------------------// int main() { stud table[20]; int cur = 0; char key=0; clrscr(); for(;;) { key=menu(); clrscr(); switch (key) { case '1': if (cur < 20) { input(table[cur]); cur++; } else cout << "error: input max record" << endl; break; [b]case '2': output_all(table, cur); break; case '3': the_tel(table, cur); break; case '4': the_name(table, cur); break; case '5':[/b] return 0; } } } Добавлено @ 21:57 P.S. Я понимаю, что достал, а так же понимаю, чо тупые вопросы, но обстоятельства меня зверско подгоняют.Lamak в твоих руках судьба людская |
| Автор: Lamak 21.5.2005, 09:23 |
| Во-первых достань книгу по С++(библиотека,купить,одолжить у друга,украсть у врага и прочитай её ,тогда не будет возникать таких нудных вопросов? Отвечаю по частям: void input(stud &record)//передаётся параметр по ссылке { cout << "input Name: ";cin >> record.Name;//т.к. по ссылке cout << "input Age: ";cin >> record.Age; cout << "input Sex: "; char sex; cin >> sex; record.Sex = (sex == 'm' || sex == 'M')? 1: 0;// //оператор a?b:c работает так //если а - истина возвращет b //если а - ложь возвращет c // || - логическое или cout << "input Tel: "; cin >> record.Tel; } |
| Автор: Lamak 21.5.2005, 09:35 | ||||||||
здесь ||(или) для одинаковой реакции на маленькую и большую букву 'м'
не должно. Определяется мужик он или баба , в зависимости от того record.Sex = 1 или =0 соответственно. Добавлено @ 09:38 void output_all(stud records[], int count) { for (int i=0; i< count; ++i)//цикл по всем записям output(records[i]); //каждая запись на печать } Добавлено @ 09:44
Ты ж сам писал:
|
| Автор: Lamak 21.5.2005, 09:54 | ||||||||
| int flag=0; for (int i=0; i<count; ++i) (а i++ не тоже самое, что и ++i)//Вообще нет это постфиксная и префиксная формы,но в цыкле это по барабану { flag=1; for (int j=0; j<3; ++j) if(new_tel[j]!=records[i].Tel[j]) { flag=0; break; } if(flag)//флаг указывает на то начинается ли номер телефона i-ой записи
output(records[i]); } Добавлено @ 09:59
- копи /пастил
Добавлено @ 10:02
возми словарь англо-руский и посмотри что такое input Добавлено @ 10:04 Всё устал |
| Автор: Feanor 21.5.2005, 14:29 |
| Вот, я никак не пойму, где сдесь функция добавления одной записи, если не трудно напиши plz, и вот, у нас со step один препод, так что шаблон тот же, может можно как то по похожему сделать, ну даже если не все пункты задания, а хоть один P.S. чтобы ты не написал в ответе, Я всё равно очень очень благодарен за помощь. Добавлено @ 14:31 Lamak -step- это тот чувак, которому ты тоже таблицу сделал |
| Автор: Lamak 21.5.2005, 20:36 | ||||||
Функции как таковой нет но это делает следующий код
Добавлено @ 20:44
Я ему только одну функцию написал. |
| Автор: Lamak 21.5.2005, 20:57 | ||
так у тебя и так почти как у -step- , даже лучше с моей точки зрения А-а-а-а! Mожет ты имееш ввиду чтобы table была глобально описана? |
| Автор: Lamak 21.5.2005, 21:09 | ||
| Да и где вы учитесь если не секрет? Потому что у меня в универе :если у кого-то есть код и он не понимает как он работает то он идёт к расписанию ;смотрит где сейчас находятсья прикладники(факультет прикладной математики) 3-й,4-й курс; идёт к ним и говорит : - "Люди
ему помогают и он довольный |
| Автор: Feanor 21.5.2005, 21:33 | ||||
Мне стыдно сказать Будете потом говорить, что там одни тормоза, а это далеко не так. Добавлено @ 21:42 А что такое flag и cout? if(new_tel[j]!=records[i].Tel[j]) (почему стоит !-это же оператор "не") И вот, ты ещё писал: - копи /пастил ,а вообще здесь flag не нужен: Во всё остальное въехал!!!Урра!Славься Lamak |
| Автор: Feanor 21.5.2005, 21:45 | ||||||||
Не cout, а count, я жестоко описался!!! Добавлено @ 21:47 |
| Автор: Feanor 21.5.2005, 22:03 |
| Ой, вот ещё вопрос, последний (надеюсь): Что означает: 1)cur и cur++(это счётчик вроде) 2)key 3)record. это конечно, глупо, как и всё, что я до этого спаршивал, но вроде это перев. как запись, но хотелось бы точно убедиться, что это в данной проге. Ну если на всё ответишь, то всё уже разжёвано, и мне ничего не остаётся, как продемонстрировать прогу в эту среду, о результате обязательносообщу!!! Ещё раз спасибо. |
| Автор: Lamak 21.5.2005, 22:26 | ||||||
Добавлено @ 22:30
Имеется ввиду пользовался функциями copy/paste(копировать /вставить) |
| Автор: Lamak 21.5.2005, 22:38 | ||||
1)cur - счётчик количества записей сначла он = 0(int cur = 0;) потом добавляешь новую запись и cur++ - увеличивается на единицу 2)
функция menu() возвращает какая клавиша была введена ( cout<<"input: "; cin>>b; return b;) |
| Автор: Feanor 22.5.2005, 12:49 | ||
| Во!!! Оьалдеть, я все пояснения вместе собрал, на два листа вышло!!! Вот это ты поработал!!! Истинно человеище!!! Вот только что такое count не написал.Напиши пож. Да, и вот ты писал:
Меня обязательно спросят, почему там пусто, т.е. for(;;) ??? Итак: 1) count 2) key=menu switch (key) 3)for (;;) Это последние непонятки |
| Автор: Lamak 22.5.2005, 20:34 | ||||
Добавлено @ 20:41
count - Переменная в которую мы передаём количество элементов в нашей таблице(т.е.cur) |
| Автор: Lamak 22.5.2005, 20:46 | ||
| key=menu(); //функция menu() возвращает какая клавиша была введена switch (key);// В зависимости от key(1,2,3,4 или5) выполняем то что надо Добавлено @ 20:48
не клавиша ,а цифра; |
| Автор: Feanor 23.5.2005, 12:12 |
| Я не прощаюсь, а говорю до новых встреч |
| Автор: Feanor 24.5.2005, 09:33 | ||
А для чего в проге нужен этот замкнутый цикл???
|
| Автор: Feanor 24.5.2005, 20:42 | ||
А может сдесь тоже flag не нужен, ну как в букве, тож самое, только с телефон вроде можно проделать? |
| Автор: Lamak 24.5.2005, 21:36 | ||||||
Для обеспечения диалогового интерфейса с пользователем. Добавлено @ 21:39
нельзя т.к. здесь происходит три сравнения в цыкле(три первые цифры номера) и если хоть одна цифра не совпадает то мы данную запись не печатаем(flag=0;) |
| Автор: Feanor 24.5.2005, 21:47 |
| Ещё раз ОГРОМНОЕ спасибо |
| Автор: Feanor 30.5.2005, 11:03 |
| Нюанс: А table это просто количесто студентов, т.е. то, куда они вводятся? |
| Автор: Feanor 30.5.2005, 14:49 |
| Вот, начал работать, и вот, что вышло (см. ниже): |
| Автор: Feanor 30.5.2005, 15:05 | ||||||
| 1) void output(stud &record) { сдесь он пишет следующее Declaration syntax error дальше там вот что (для справки):
2)
почему стоит <<, по моему в cout << >> и почему перенос сторки, тобиш '\t' огорожен опострофами? 3)
Borland мне пишет, что Undefined sumbol `cin` |
| Автор: Feanor 31.5.2005, 10:33 |
| СОС чувак, у меня один день остался, напиши чё нить plz |