Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: подскажите, почему не работает...  (Прочитано 7143 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Piros
Гость
« : 14-09-2004 07:40 » new

Цитата
#include <clx.h>
#include<iostream.h>
#include<conio.h>
#pragma hdrstop

#pragma argsused
struct pass{
        char firstName [20];
        int age;
        char Type [20];
        char time [10];
        char city [10];
        };
int main(int argc, char* argv[])
{       pass pArray [3];
        int i=0;
        for (i=0; i<=2; i++){
        cout<<"Enter famile and name "<< i+1<<" passenger:"<< endl;
        cin.getline(pArray.firstName,
        sizeof (pArray.firstName)-1);
        char buff[10];
        cout<<"Enter age passenger"<< endl;
        cin.getline(buff, sizeof(buff)-1);
        pArray.age = atoi(buff);
        sizeof (pArray.age)-1;
        cout<<"Enter time fly"<<endl;
        cin.getline(pArray.time,
        sizeof (pArray.time)-1);
        cout<<"Enter city"<<endl;
        cin.getline(pArray.city,
        sizeof (pArray.city)-1);
        }
        char* g="Rostov";
        int s=0,j=1;
        for (i=0; i<=2;i++){
        if (pArray.city == g){
        s=s+pArray.age;
        j++;};
        }
        s=s/(j-1);
        cout<<"Srednii age = "<<s<<endl;
        getch();
        return 0;
}


поидее, должна была прога посчитать средний возраст.... тех кто из Rostov. А у меня получается, что в строке if (pArray.city == g){ при проверке условия... условие не выполняется. Хотя смотрю по Вотчерам: pArray.city = "Rostov" и g = "Rostov"

Подскажите, в чём глюк? Чего я не понимаю?
Записан
Alf
Гость
« Ответ #1 : 14-09-2004 07:49 » 

В данном примере g - это указатель на строку, который потом сравнивается на равенство с другим указателем. Результат сравнения - "ложь", даже если указатели на самом деле указывают на цепочки одинаковых символов.
Для сравнения символьных цепочек нужно либо воспользоваться библиотечной функцией strcmp(), либо для представления строк использовать какой-нибудь класс, в котором определена операция сравнения по значению.
Записан
Pu
Большой босс

ru
Offline Offline
78


« Ответ #2 : 14-09-2004 07:53 » 

мне кажется что в корне не верна вот это
if (pArray.city == g)
ты сравниваешь указатели на строки, а они разные в любом случае
используй
strcmp или strncmp
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Pu
Большой босс

ru
Offline Offline
78


« Ответ #3 : 14-09-2004 07:56 » 

Alf, извини за дубль Улыбаюсь. Написал, хобанэ а там уже твой пост.  Ага
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
Alf
Гость
« Ответ #4 : 14-09-2004 08:24 » 

Pu, мой пост опередил твой, потому что Piros из нашего города, поэтому мои пакеты к нему быстрее приходят  Ага
Записан
Piros
Гость
« Ответ #5 : 14-09-2004 11:19 » 

Да уж. к своим оно всегда ближе. Но спасибо Вам обоим, За скорость терпение и качество.
Приду домой буду пробовать и читать в этом направлении.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines