![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] помогите решить задачу! |
|
|
C/C++ - [решено] помогите решить задачу!
|
Пользователь Сообщения: 63 |
народ помогите разобраться - программка типа телефонный справочник.
Каким образом мне обеспечить ввод адреса ( типа такого - ул. чайковского 10) - чтоб программка не перескакивала через один ввод. А то что то ввод в массив структуры не даётся))))) вот код: (в коде строку пометил которая не дает ввести) #include <iostream> #include <cstring> using namespace std; void main() { setlocale(LC_ALL, "Russian"); struct { char firstname[15], lastname[20]; char address[40]; int phone; } kniga[50]; cout << "\t\tТелефонный справочник\n"; int k_abon; cout << "Введите количество абонентов: "; cin >> k_abon; cout << endl; for(int i = 0; i < k_abon; i++) { cout << "Введите имя:\t"; cin >> kniga[i].firstname; cout << "Введите фамилию:"; cin >> kniga[i].lastname; cout << "Введите адрес:"; cin.getline(kniga[i].address, 40); // ПОМОЧЬ НАДО С ЭТИМ ОТРЕЗКОМ КОДА пробовал через cin тоже самое cout << "Введите телефон:"; cin >> kniga[i].phone; cout << endl; } } |
|
Отправлено: 17:31, 12-02-2012 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Подправил пустую тему
|
Отправлено: 14:00, 14-02-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать можно так
for(int i = 0; i < k_abon; i++) { cout << "Введите имя:\t"; cin >> kniga[i].firstname; cout << "Введите фамилию: "; cin >> kniga[i].lastname; cin.ignore(numeric_limits<streamsize>::max(), '\n'); cout << "Введите адрес: "; cin.getline(kniga[i].address, 40); cout << "Введите телефон:"; cin >> kniga[i].phone; cout << endl; } |
Отправлено: 20:20, 14-02-2012 | #3 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать О, спасибо!
А можно поподробнее где про это можно почитать, а то я в описание про cin не нашел! Цитата:
|
|
Отправлено: 21:03, 14-02-2012 | #4 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать Цитата virus8:
а пока вот например http://www.cplusplus.com/reference/i...stream/ignore/ |
||
Отправлено: 21:19, 14-02-2012 | #5 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Спасибо большое!
Вот только не посчитай меня занудливым можешь еще подсказать одну вещь - как функции передать массив структур??? void search(struct kniga[50], int) - потом не считает её структурой. Пробовал void search(struct kniga *N_kniga[]) - тоже не катит. Если че сильно не смейтесь))) |
Отправлено: 21:57, 14-02-2012 | #6 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать примерно так
#include <iostream> #include <cstring> using namespace std; typedef struct { char firstname[15], lastname[20]; char address[40]; int phone; } kniga[50]; void search(kniga *ptr, int i) { *ptr[i]->firstname; *ptr[i]->lastname; *ptr[i]->address; ptr[i]->phone; } void main() { setlocale(LC_ALL, "Russian"); cout << "\t\tТелефонный справочник\n"; kniga kn; int k_abon; cout << "Введите количество абонентов: "; cin >> k_abon; cout << endl; for(int i = 0; i < k_abon; i++) { cin.ignore(numeric_limits<streamsize>::max(), '\n'); cout << "Введите имя:\t"; cin >> kn[i].firstname; cout << "Введите фамилию: "; cin >> kn[i].lastname; cin.ignore(numeric_limits<streamsize>::max(), '\n'); cout << "Введите адрес: "; cin.getline(kn[i].address, 40); cout << "Введите телефон:"; cin >> kn[i].phone; cout << endl; } search(&kn, 0); } |
Отправлено: 04:55, 15-02-2012 | #7 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Вот навоял такое)))
Только, что то не пойму - абонентов не выводит, поиск происходит только по первому абоненту. Только прошу не решайте, а если есть возможность просто на ошибки укажите(просто хочу сам разобраться, а чет туплю не по детски). Сразу грешил на кодировку, а потом понял, что не в ней дело. Походу как то не корректно сохраняет инфу в массив вот такой вот вывод получается сразу все хорошо все выводится, а потом какие то маты консоль выдает(русский убрал полностью) ![]() Посидел чу-чуть поразмыслил: переделал все тоже самое только без функций, работает - теперь если у кого то время будет можете глянуть верхний код и сравнить его с переделанным и указать на ошибки. Вот код: И вообще спасибо за оказанную помощь |
Последний раз редактировалось Drongo, 15-02-2012 в 15:37. Причина: Пожалуйста используйте тег код [code] Отправлено: 11:43, 15-02-2012 | #8 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать проблема вот в этой конструкции
#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); если заменить на typedef struct { char firstname[15], lastname[20]; char address[40]; int phone; }KNIGA; KNIGA kniga[50]; void menu(); void search(KNIGA *ptr); void vivod(KNIGA *ptr, int i); int main() { 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 >> kniga[i].firstname; cout << "Vvedite familiyu: "; cin >> kniga[i].lastname; cin.ignore(numeric_limits<streamsize>::max(), '\n'); ................................................................................................... |
Отправлено: 14:45, 15-02-2012 | #9 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Все разобрался - как раз тему читал про структуры. Сделал для себя великое открытие, что kniga и так является указателем на структуру KNIGA))))))).
ferget спасибо большое за помощь!!! Если кому нужно вот код: |
Последний раз редактировалось virus8, 15-02-2012 в 20:41. Отправлено: 16:15, 15-02-2012 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ | Shok147 | Тест-форум | 0 | 14-11-2011 14:02 | |
CMD/BAT - Помогите решить задачу | dichlormetan | Тест-форум | 1 | 08-11-2011 21:23 | |
C/C++ - Помогите решить задачу | zdughi | Программирование и базы данных | 1 | 01-05-2009 06:03 | |
помогите решить задачу | snikers | Программирование и базы данных | 2 | 27-08-2004 01:57 | |
помогите решить задачу | Guest | Программирование и базы данных | 2 | 21-05-2004 11:23 |
|