|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 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 | |
|