Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
aimbat
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 81
#1

Не проверяется условие - C++

15.02.2014, 23:54. Просмотров 431. Ответов 16
Метки нет (Все метки)

Задание состоит в том, чтобы вывести на экран фамилии студентов, которые живут в Киеве и имеют оценку не нижу 4.5.
Вопрос: почему не проверятся условие, а просто игнорируется
C++
1
if(spisok[i].address="Kiev")
?
Программа компилируется, но на экран выводятся фамилии студентов, у которых балл не меньше 4.5, не проверяя первого условия.
заранее спасибо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream> 
#include <conio.h>
 
using namespace std;
 
struct abit
{
    char* name;
    char* address;
    float point;
    
};
 
void vivod(abit*spisok,int n)
{
    int i;
    for(i=0;i<n;i++)
        if(spisok[i].address="Kiev")
            if(spisok[i].point>=4.5)
                
                cout<<spisok[i].name<<endl;
    getch();
}
int main()
{
    abit spisok[]={{"ivanov","Kiev",4.6},
                   {"petrov","Kiev",4.2},
                   {"sidorov","Krivoi Rog",4.7},
                   {"samohina","Dnepropetrovsk",4.5},
                   {"vasilev","Kiev",4.8}
                  };
    vivod(spisok,5);
    return 0;
}
Добавлено через 6 минут
Еще один вопрос: как мне вывести на экран эти фамилии по алфавиту?

СПАСИБО
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2014, 23:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не проверяется условие (C++):

Почему не проверяется условие else if - C++
Что то я в упор не вижу почему не проверяет условие else if #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() ...

Почему неправильно проверяется условие? - C++
Что не так? где ошибка?? например исходная матрица matrix такая: 01001 01111 00110 00100 10000 а матрицу clabel...

Проверяется только первая строка - C++
Программа должна считывать строки из файла и проверять, является ли каждая из них палиндромом. Но у меня программа почему-то проверяет...

Составить программу, которая выводит на экран слово «ИСТИНА», если условие выполнено или слово «ЛОЖЬ», если условие не выполнено. - C++
Цифры данного трехзначного числа V являются членами арифметической прогрессии

Не проверяется условие на значение в Edit - Delphi БД
Доброго дня Такая ситуация, друзья: В обычный Edit записываю значение из базы данных: Edit2.Text:=...

Не проверяется CheckBox. - JavaScript
Суть проблемы такова:я в JS принимаю из формы имя чекбокса и проверяю выбран он или нет...В итоге вывожу алертом ошибку(если не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
mishelle92
61 / 60 / 20
Регистрация: 09.10.2012
Сообщений: 192
Завершенные тесты: 1
15.02.2014, 23:58 #2
C++
1
if(spisok[i].address=="Kiev")
aimbat
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 81
16.02.2014, 00:06  [ТС] #3
Как вывести эти фамилии по алфавиту?
Spirit370
1 / 1 / 2
Регистрация: 08.08.2013
Сообщений: 86
16.02.2014, 02:10 #4
Цитата Сообщение от aimbat Посмотреть сообщение
Как вывести эти фамилии по алфавиту?
используй функцию сортировки вектора
sort(vector.begin(),vector.end())
Вектор сортируется по алфавиту от 1 элемента до последнего

в твоём случае
sort(spisok.begin(),spisok.end());
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
16.02.2014, 02:13 #5
Цитата Сообщение от mishelle92 Посмотреть сообщение
if(spisok[i].address=="Kiev")
серьезно?
для
Цитата Сообщение от aimbat Посмотреть сообщение
char* address;
strcmp
http://lord-n.narod.ru/download/book.../14/strcmp.htm
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
16.02.2014, 02:18 #6
Цитата Сообщение от ValeryS Посмотреть сообщение
if(spisok[i].address=="Kiev")
серьезно?
для
Сообщение от aimbat
char* address;
strcmp
http://lord-n.narod.ru/download/book.../14/strcmp.htm
Выдает варнинг но сравнивает =)
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
16.02.2014, 02:20 #7
Цитата Сообщение от Alex566 Посмотреть сообщение
Выдает варнинг но сравнивает =)
не Visual Studio случайно?
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
16.02.2014, 02:20 #8
Цитата Сообщение от ValeryS Посмотреть сообщение
не Visual Studio случайно?
А визуал студио даже варнинг не выдает. Geany + MinGW
DrOffset
7095 / 4236 / 951
Регистрация: 30.01.2014
Сообщений: 7,013
16.02.2014, 02:21 #9
Цитата Сообщение от Alex566 Посмотреть сообщение
Выдает варнинг но сравнивает =)
Он сравнивает, только не то. Сравнивает адреса, а не строки.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
16.02.2014, 02:23 #10
Цитата Сообщение от Alex566 Посмотреть сообщение
Выдает варнинг но сравнивает =)
так варнинг то на что?
на
if(spisok[i].address=="Kiev")?
или на strcmp?
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
16.02.2014, 02:26 #11
Цитата Сообщение от DrOffset Посмотреть сообщение
Он сравнивает, только не то. Сравнивает адреса, а не строки.
В смысле? Если бы он сравнивал адреса все время возвращало бы фолс. Не могут же они по одному адрессу находится. А так выдает правильны результат, но если изменить к примеру K на k результат меняется.

Добавлено через 36 секунд
ValeryS, на if(spisok[i].address=="Kiev")

И qt + MinGW 4.8 тоже =). Я тоже был убежден что строки char* нужно сравнивать strcmp. Видимо есть какие-то нюансы.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
16.02.2014, 02:33 #12
Цитата Сообщение от Alex566 Посмотреть сообщение
В смысле? Если бы он сравнивал адреса все время возвращало бы фолс. Не могут же они по одному адрессу находится.
кто строковые литералы? вполне могут, поскольку это один и тот же
а теперь введи строку с клавиатуры и проверь
приятно удивишся

не сравнивают так строки, поскольку по большому счету строка это массив символов
ты же массивы так не сравниваешь
arr1==arr2
или сравниваешь?
для сторк
strcmp
для массивов
memcmp
aimbat
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 81
16.02.2014, 02:33  [ТС] #13
Не подскажите тогда как мне лучше это реализовать в моем коде?
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
16.02.2014, 02:36 #14
Цитата Сообщение от Alex566 Посмотреть сообщение
ValeryS, на if(spisok[i].address=="Kiev")
а теперь переведи этот варнинг
про что он говорит?

Добавлено через 2 минуты
Цитата Сообщение от aimbat Посмотреть сообщение
Не подскажите тогда как мне лучше это реализовать в моем коде?
я же тебе ссылку кинул на функцию
Цитата Сообщение от aimbat Посмотреть сообщение
if(spisok[i].address="Kiev")
C++
1
if(strcmp(spisok[i].address,"Kiev")==0)
aimbat
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 81
16.02.2014, 02:38  [ТС] #15
Теперь как вывести на экран эти фамилии в алфавитном порядке?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2014, 02:38
Привет! Вот еще темы с ответами:

Не проверяется каптча - PHP
Здравствуйте! Вот сделал комментарии, но потом я понял что без каптчи сайт просто зас**ут спамом и я решил добавить каптчу. Дабы не...

Не проверяется на пустоту Edit - Delphi
Либо я сошел с ума, либо творится что-то уму не постижимое(волшебство) For i:= 0 to Form1.ComponentCount-1 do if (Form1.Components...

Не проверяется содержимое переменной - Java SE
Доброго времени суток. Я создал переменную для определения типа транспортного средства Авто или Мото, переменная &quot;tipo&quot; содержит в себе...

Не проверяется раздел реестра - C#
Всем привет. Помогите пожалуйста, вот код: RegistryKey Zona =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.02.2014, 02:38
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru