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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2011, 15:08   #11
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

можно создать массив string , и в одну строку записывать информацию ,например,через пробел.


Код:
string *db = new string [n];
db[0] ="Pupkin Vasilyi Ivanovich 30.02.2011";
db[1] ="Какой нибудь еще петя ";
....
db[n]="И еще какой - нибудь петя ";
Hemul вне форума Ответить с цитированием
Старый 11.05.2011, 16:03   #12
v0a
Новичок
Джуниор
 
Регистрация: 11.05.2011
Сообщений: 21
По умолчанию

Код:
#include <locale.h>
#include <iostream>

 
int main(int argc, char * argv [])
{
        setlocale(LC_ALL,"Rus");
		
		int n,m=100,k,num,answer;
		char f,i,o,date;
		std::cout<<"Введите кол-во квартир в доме: ";
		std::cin>>n;

		//выделение памяти под двумерный массив
		char ** array; 
		array = new char * [n]; //n- количество квартир
		
		for (int i=0;i<n;i++)
		{
			array[i] = new char [m]; //m- размер строки под фамилию, имя и т.д.
		}

		do{
		std::cout<<"\t\t### Выберите действие ###"<<std::endl;
		std::cout<<" 1 - Добавление/Редактирование данных о квартире."<<std::endl;
		std::cout<<" 2 - Поиск данных по квартире."<<std::endl;
		std::cout<<" 0 - Выход из программы"<<std::endl;
		std::cin>>answer;
			switch (answer)
			case 1:
				//запись/редактирование квартиры
				//array[i] = /*строка с данными о жильце*/;
				std::cout<<"Заполним номера..."<<std::endl;
				std::cout<<"Введите номер квартиры: ";
				std::cin>>num;
				if (num>n)
				{
					std::cout<<"Нет такой квартиры";
					break;
				}
				std::cout<<"Фамилия проживающего: ";
				std::cin>>f;
				std::cout<<"Имя проживающего: ";
				std::cin>>i;
				std::cout<<"Отчество проживающего: ";
				std::cin>>o;
				std::cout<<"Дата рождения проживающего: ";
				std::cin>>date;
				
				array[num] = f;
				break;
			case 2:
			//поиск
			/*условие поиска: k=5*/
				std::cout<<"Введите номер квартиры: ";
				std::cin>>num;
				if (num>n)
				{
					std::cout<<"Нет такой квартиры";
					break;
				}
				std::cout << array[num]; // выводит на экран всю строку с данными о жильце 5 квартиры
				break;
		}while(answer!=0);


		
		//освобождение памяти
		for (int i=0;i<n;i++)
		{
			delete[]array[i];
			delete[]array;
		}
        return 0;
}

Вот то, что я уже налепил используя вашу помощь, есть у меня тут ошибки:
1. Как заполнить теперь созданный массив данными, которые введет пользователь? (//array[i] = /*строка с данными о жильце*/; дает ошибку о преобразовании char к *char) Намудрил с объявлениями?
2. Чего мне при использовании case 2: говорит что это недопустимый вариант выбора?

Последний раз редактировалось v0a; 11.05.2011 в 16:12.
v0a вне форума Ответить с цитированием
Старый 11.05.2011, 16:05   #13
v0a
Новичок
Джуниор
 
Регистрация: 11.05.2011
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Hemul Посмотреть сообщение
можно создать массив string , и в одну строку записывать информацию ,например,через пробел.


Код:
string *db = new string [n];
db[0] ="Pupkin Vasilyi Ivanovich 30.02.2011";
db[1] ="Какой нибудь еще петя ";
....
db[n]="И еще какой - нибудь петя ";
А что лучше для меня использовать char или string?
v0a вне форума Ответить с цитированием
Старый 11.05.2011, 16:22   #14
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Цитата:
Сообщение от v0a Посмотреть сообщение
А что лучше для меня использовать char или string?
Использовать string проще
Код:
#include <locale.h>
#include <iostream>
#include <cstring>

using namespace std;
 
int main(int argc, char * argv [])
{
        setlocale(LC_ALL,"Rus");
		
		int n,num,answer;
		string f,i,o,date,data;
		cout<<"Введите кол-во квартир в доме: ";
		cin>>n;

		//выделение памяти под двумерный массив
		string * array = new string [n]; //n- количество квартир
		do{
		cout<<"\t\t### Выберите действие ###"<<endl;
		cout<<" 1 - Добавление/Редактирование данных о квартире."<<endl;
		cout<<" 2 - Поиск данных по квартире."<<endl;
		cout<<" 0 - Выход из программы"<<endl;
		cin>>answer;
			switch (answer)
			case 1:
				//запись/редактирование квартиры
				//array[i] = /*строка с данными о жильце*/;
				cout<<"Заполним номера..."<<endl;
				cout<<"Введите номер квартиры: ";
				cin>>num;
				if (num>n)
				{
					cout<<"Нет такой квартиры";
					break;
				}
				cout<<"Фамилия проживающего: ";
				cin>>f;
				cout<<"Имя проживающего: ";
				cin>>i;
				cout<<"Отчество проживающего: ";
				cin>>o;
				cout<<"Дата рождения проживающего: ";
				cin>>date;
				data = f+ ' ' + i + ' '+ o + ';' + date; //фио разделяются пробелом, дата - ;
				array[num] = data;
				break;
			case 2:
			//поиск
			/*условие поиска: k=5*/
				cout<<"Введите номер квартиры: ";
				cin>>num;
				if (num>n)
				{
					cout<<"Нет такой квартиры";
					break;
				}
				cout << array[num]; // выводит на экран всю строку с данными о жильце 5 квартиры
				break;
		}while(answer!=0);


		
		//освобождение памяти
		delete array;
        return 0;
}
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 11.05.2011, 16:26   #15
v0a
Новичок
Джуниор
 
Регистрация: 11.05.2011
Сообщений: 21
По умолчанию

1>RusDos - ошибок 11, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

>c:\documents and settings\admin\мои документы\visual studio 2008\projects\rusdos\rusdos\main.cp p(38) : error C2679: бинарный '>>': не найден оператор, принимающий правый операнд типа 'std::string' (или приемлемое преобразование отсутствует)
1> c:\program files\microsoft visual studio 9.0\vc\include\istream(1144): может быть 'std::basic_istream<_Elem,_Traits> &std:perator >><std::char_traits<char>>(std::bas ic_istream<_Elem,_Traits> &,signed char *)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]

*******
и еще 10 раз почти тоже...

Последний раз редактировалось v0a; 11.05.2011 в 16:38.
v0a вне форума Ответить с цитированием
Старый 11.05.2011, 16:47   #16
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

http://codepad.org/QJ7kBGwa
Странно. На codepad (да и у меня) все компилируется и работает без проблем.
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 11.05.2011, 16:57   #17
v0a
Новичок
Джуниор
 
Регистрация: 11.05.2011
Сообщений: 21
По умолчанию

http://codepad.org/mktHL2Ai

Ну если программу вставить целиком, то есть ошибки при использовании label 2

Может что-то нужно в заголовочных файлах? Или я что-то не подключаю...
v0a вне форума Ответить с цитированием
Старый 11.05.2011, 17:51   #18
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Код:
#include <locale.h>
#include <iostream>
#include <cstring>

using namespace std;
 
int main(int argc, char * argv [])
{
        setlocale(LC_ALL,"Rus");
		
		int n,num,answer;
		string f,i,o,date,data;
		cout<<"Введите кол-во квартир в доме: ";
		cin>>n;

		//выделение памяти под двумерный массив
		string * array = new string [n]; //n- количество квартир
		do{
		cout<<"\t\t### Выберите действие ###"<<endl;
		cout<<" 1 - Добавление/Редактирование данных о квартире."<<endl;
		cout<<" 2 - Поиск данных по квартире."<<endl;
		cout<<" 0 - Выход из программы"<<endl;
		cin>>answer;
			switch (answer){
			case 1:
				//запись/редактирование квартиры
				//array[i] = /*строка с данными о жильце*/;
				cout<<"Заполним номера..."<<endl;
				cout<<"Введите номер квартиры: ";
				cin>>num;
				if (num>n)
				{
					cout<<"Нет такой квартиры";
					break;
				}
				cout<<"Фамилия проживающего: ";
				cin>>f;
				cout<<"Имя проживающего: ";
				cin>>i;
				cout<<"Отчество проживающего: ";
				cin>>o;
				cout<<"Дата рождения проживающего: ";
				cin>>date;
				data = f+ ' ' + i + ' '+ o + ';' + date; //фио разделяются пробелом, дата - ;
				array[num] = data;
				break;
			case 2:
			//поиск
			/*условие поиска: k=5*/
				cout<<"Введите номер квартиры: ";
				cin>>num;
				if (num>n)
				{
					cout<<"Нет такой квартиры";
					break;
				}
				cout << array[num]; // выводит на экран всю строку с данными о жильце 5 квартиры
				break;
                         }
		}while(answer!=0);


		
		//освобождение памяти
		delete array;
        return 0;
}
Switch тоже надо брать в {}
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Старый 11.05.2011, 18:02   #19
v0a
Новичок
Джуниор
 
Регистрация: 11.05.2011
Сообщений: 21
По умолчанию

Да, ошибка case 2 пропала... А что делать со второй я ума не приложу...
Создаю чистый проект Консольного приложения WIN32, указываю чтобы он был пустой.
Добавляю файл main.cpp в Файлы исходного кода, вставляю данный код в этот файл и наблюдаю эти гадостные ошибки... VS2008 SP1 win xp sp3
v0a вне форума Ответить с цитированием
Старый 11.05.2011, 18:18   #20
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Возможно, дело в настройках среды... Попробуйте скачать хотя бы эту среду и в ней скомпилировать
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблица Artem8230 Microsoft Office Access 1 04.10.2010 04:44
таблица Cpluser HTML и CSS 1 09.02.2010 20:50
таблица artemavd Общие вопросы Delphi 3 23.07.2008 13:56
Таблица frutty Компоненты Delphi 1 07.04.2008 09:29