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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 05.09.2009, 16:19   #11
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Вроде всё работает, последний момент. Почему,если поставить условие
Код:
 while(t == "сила");
программа перестанет продолжать работать?
Golovastik вне форума
Старый 05.09.2009, 16:37   #12
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

о боги... опять те же грабли))
Код:
while(t == aladin("сила"));
netrino вне форума
Старый 05.09.2009, 16:40   #13
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Вроде с этим разобрался,последний вопрос. Какую роль играет выражение i = 10 из строки,вроде написал,но не могу въхать, дайте расшифровку,если не трудно:
Код:
 if(i==10) cout<<"Отсутствует в каталоге. \n";
Golovastik вне форума
Старый 05.09.2009, 16:47   #14
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Вот у вас есть цикл:
Код:
for(i = 0; i < 10; i+=2)
{
	
	if(!strcmp(vvod,aladin(a[i]))) {
		cout<<"Телефонный номер "<<a[i]<<" = "<<a[i+1]<<endl;
	           break;
           }
}
в нём в качестве счётчика используется i. в цикле мы проходим по элементам массива и сравниваем каждый из них с введённой строкой, если находим таковую, то цикл прерывается. Если ни одна строка не соответствует введённой, то цикл не прервётся раньше времени и в конечном итоге счётчик i будет равен 10. Что и проверяется:
Код:
 if(i==10) cout<<"Отсутствует в каталоге. \n";
и в случае истинности выводится строка, что номер по данному имени найден не был. надеюсь понятно рассказал
netrino вне форума
Старый 05.09.2009, 17:13   #15
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Разобрался, спасибо. И наконец, окончательный вопрос.
Почему,если изменить строку:
Код:
char *aladin(const char *balada)
на строку
Код:
char aladin(const char *balada)
Программа перестанет работать?
Выдаст ошибку:
cannot convert from 'char [256]' to char
Golovastik вне форума
Старый 05.09.2009, 17:57   #16
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Почитайте какую-нибудь книгу по C/C++ про типы данных... char это один байт(один символ), в то время как char* это указатель на массив байтов.
Ваша ф-ция возвращает указатель(имя массива так же есть указателем на него), потому и выходит ошибка, если вы меняете возвращаемый тип с char* на char
netrino вне форума
Старый 05.09.2009, 18:31   #17
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Код:
Ваша ф-ция возвращает указатель
.возвращает указателть balada
Код:
netrino
имя массива так же есть указателем на него
Имя масива char maska[256] вы имеете ввиду?
Golovastik вне форума
Старый 05.09.2009, 18:44   #18
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

balada - это то, что ф-ция принимает в качестве параметра, возвращает она указатель на массив maska

Код:
char maska[256];

char*aladin(const char *balada)
{
	CharToOem(balada,maska); // изменяем кодировку и копируем строку, что находится по адресу, указанному в balada, в массив, который находится по адресу maska
	return maska; // возвращаем адрес массива maska
}
netrino вне форума
Старый 05.09.2009, 19:03   #19
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Код:
функция aladin возвращает  указатель на массив maska
Возвращает указатель на масив маска, а не просто возвращает масив маска, потому-что в параметрах функции aladin, стоит переменная balada со знаком звёздочки, поэтому возвращает именно указатель на масив маска?
Golovastik вне форума
Старый 05.09.2009, 19:13   #20
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

в C нельзя передавать в качестве параметра, или возвращать массив, только указатель на массив. aladin возвращает указатель, потому что так она определена:
Код:
char* aladin(const char* balada)
Тип, который возвращает ф-ция это, в данном случае, первые 5 символов(char*). Если бы было int aladin(const char* balada), то ф-ция возвращала бы значение типа int(естественно return, для этого, в теле ф-ции должна содержать операнд типа int). Настоятельно рекомендую не гадать что да как, а прочитать пару глав из книги по C. Это элементарные понятия.
netrino вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ справочник телефонный BLacK_TeaR Помощь студентам 3 04.03.2010 13:42
Телефонный справочник Krechet Софт 5 10.08.2009 15:51
как програмно увидеть телефонный звонок и номер телефона LiderServis Мультимедиа в Delphi 1 17.01.2009 12:03
Телефонный справочник на TC Qai Фриланс 5 25.05.2008 01:02
WinApi, программа должна выдавать основной номер версии ОС MARGO Win Api 2 16.11.2007 21:14