2 / 2 / 0
Регистрация: 24.02.2019
Сообщений: 138
1

Проверка знания даты основания Санкт-Петербурга

08.03.2019, 22:02. Показов 6104. Ответов 16
Метки нет (Все метки)

Нужно написать программу проверки знания даты основания Санкт-

Петербурга. В случае неправильного ответа пользователя, программа должна выводить правильную дату. Ниже приведен рекомендуемый вид экрана программы (данные, введенные пользователем, выделены полужирным).

__________________________________________________
В каком году был основан Санкт-Петербург?
Введите число и нажмите <Enter>
-> 1705
Вы ошиблись, Санкт-Петербург был основан в 1703 году
__________________________________________________

В чём у меня ошибка... Что исправить ? Чтоб это заработало :C

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
#include "stdio.h" 
#include "conio.h" 
#include <clocale> 
void main() 
{  
int years; // Переменная для оператора года 
setlocale(LC_ALL, "Russian");
float year; // Переменная правильного года 
float y; // Переменная введённая пользователем 
printf("\nВ каком году был основан Санкт-Петербург?\n");
printf("\nВведите число и нажмите <Enter>");
printf("\n-> ");
scanf("%f",&y);  
switch ( years ) 
{ 
case 1703: year = 1703; break; 
default: year = 0; break; 
} // если выбор правильный то вычисляем цену 
if ( year == 1703 ) 
{ 
printf("\nОтвет верен", year); 
} 
else // если выбор не правильный, выдаем сообщение 
printf("\nВы ошиблись, Санкт-Петербург был основан в 1703 году"); 
 getch(); 
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2019, 22:02
Ответы с готовыми решениями:

Написать программу проверки знания даты основания Санкт-Петербурга. В случае неправильного ответа пользователя, программа должна выводить правильный о
Сделайте плиз задачку) 85. Написать программу проверки знания даты основания Санкт-Петербурга. В...

Написать программу для проверки знаний даты основания Санкт-Петербурга
Написать программу для проверки знаний даты основания Санкт-Петербурга, если пользователь ввел...

Проверка знания даты начала второй мировой войны
Написать программу проверки знания даты начала второй мировой войны. В случае неверного ответа...

Программа проверки знания даты основания Петропавловской крепости
Всем, привет!!! Напишите, пожалуйста программу проверки знания даты основания Петропавловской...

16
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
08.03.2019, 22:15 2
Ошибок много) Разберитесь с моим кодом и сверьте со своим - так Вы найдёте ошибки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdio.h" 
#include "conio.h" 
#include <locale.h> 
void main()
{
    setlocale(LC_ALL, "Russian");
    int year;
 
    printf("\nВ каком году был основан Санкт-Петербург?\n");
    printf("\nВведите число и нажмите <Enter>");
    printf("\n-> ");
    scanf("%d", &year);
 
    switch (year)
    {
        case 1703:
            printf("\nОтвет верен");
        default:
            printf("\nВы ошиблись, Санкт-Петербург был основан в 1703 году");
    }
    getch();
}
1
Параллельный Кот
1904 / 826 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
08.03.2019, 22:29 3
Вот предупреждения компилятора, почитайте.
Код
4: error: ‘::main’ must return ‘int’
 void main()

14: warning: variable 'years' is uninitialized when used here
14: warning: ‘years’ may be used uninitialized in this function [-Wmaybe-uninitialized]
 switch ( years )

19: warning: comparing floating point with == or != is unsafe
 if ( year == 1703 )

21: warning: data argument not used by format string
21: warning: too many arguments for format [-Wformat-extra-args]
 printf("\nОтвет верен", year);
1
0 / 0 / 0
Регистрация: 19.12.2018
Сообщений: 4
08.03.2019, 23:55 4
Добрый вечер! Начал изучать С++ сегодня, для самопроверки написал программу по данной теме - все работает.
Только у меня вопрос почему у автора совершенно другие команды, хотя, как я понимаю, назначение у них такое же, как и у меня, вроде оба пишем на С++... Прошу отнестись с пониманием, я совсем новичок
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
const int year = 1703;
int y;
char F=0;
cout << "Введите дату создания и нажмите Enter\n";
cin >> y;
while(y != 1703)
{
    cout << "Вы ошиблись! Правильная дата 1703" << endl;
y=1703;
F=1;
}
while (F<1)
{
    cout << " Все верно" << endl;
    F=1;
}
   return 0;
}
0
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
09.03.2019, 00:53 5
+MikhailBSOD
C++
1
char F=0;
1) Зачем Вам F?)

C++
1
2
3
4
5
6
7
8
9
10
11
while(y != 1703)
{
    cout << "Вы ошиблись! Правильная дата 1703" << endl;
    y=1703;
    F=1;
}
while (F<1)
{
    cout << " Все верно" << endl;
    F=1;
}
2) Это всё циклы, циклами никто ничего не проверяет. Циклы служат для того, чтобы выполнять повторяющиеся действия, в то же время проверка введённого года Вам нужно лишь одна. К тому же Вы объявили константу year, которая хранит верный год, но нигде её не используете для сравнения, а пользуетесь числом 1703
Рекомендую блок проверки введённого года заменить следующими коммандами:
C++
1
2
3
4
if (y != year)
    cout << "Вы ошиблись! Правильная дата: " << year << endl;
else
    cout << " Всё верно" << endl;
3) Весь код будет выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main()
{
    const int year = 1703;
    int y;
 
    cout << "Введите дату создания и нажмите Enter\n";
    cin >> y;
    
    if (y != year)
        cout << "Вы ошиблись! Правильная дата: " << year << endl;
    else
        cout << " Всё верно" << endl;
 
   //Это не обязательно, main() по умолчанию возвращает 0
   //return 0;
}
Добавлено через 7 минут
А команды разные, потому что С++ - язык гибкий, по-разному можно) Даже Ваша проверка циклами не является неверным решением с точки зрения логики)
0
0 / 0 / 0
Регистрация: 19.12.2018
Сообщений: 4
09.03.2019, 01:19 6
F - проверка "флажок" чтобы одновременно не выводились сообщения "Все верно" и "Ошибка".
Полностью согласен со всем вышесказанным, но дело в том, что это мой первый код и до конструкции if..else я в тот момент еще не дочитал, иначе конечно же использовал бы ее, даже при написании кода понимал, что while тут не особо уместно, но интересно было (в рамках образовательного процесса) обойтись располагаемыми структурами на данный момент (только сегодня начал изучение с++).
Осталось недопонимание насчет "return 0", в моем учебнике данная фраза используется всегда, зачем?
0
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
09.03.2019, 01:26 7
Функции, к которым принадлежит и main, могут иметь или не иметь тип возврата. Тоесть, тип переменной, которая функция вернёт. Например, int, float, char и тд. Если функция помечена, как возвращающая - она должна возвратить что-то из себя. В данном случае main - такая функция, она должна возвращать тип int, тоесть, целое число. Поэтому и пишется return 0. Но также main обладает одной особеностью - она единственная функция, которая может не содержать данной команды возврата, при этом, по умолчанию будет возвращён 0. Во всех других функциях, которые объявленные как возвращающие - возврат обязателен, а его отсутствие - вызовет ошибку компиляции
1
892 / 350 / 79
Регистрация: 17.05.2015
Сообщений: 1,152
09.03.2019, 13:49 8
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
main обладает одной особеностью - она единственная функция, которая может не содержать данной команды возврата, при этом, по умолчанию будет возвращён 0.
С чего вы взяли, что возвращен будет именно ноль?
Это где-то кем-то гарантируется?

Цитата Сообщение от Krokodil9798 Посмотреть сообщение
Во всех других функциях, которые объявленные как возвращающие - возврат обязателен, а его отсутствие - вызовет ошибку компиляции
Прохладная история, Бро.

Отсутствие необходимой инструкции возврата return - есть UB, а вовсе не ill-formed

Компилятор имеет полное право скомпилиролировать такой код, и вернуть любой случайный мусор
0
2 / 2 / 0
Регистрация: 24.02.2019
Сообщений: 138
09.03.2019, 14:33  [ТС] 9
СПАСИБО БОЛЬШОЕ ВСЕМ!
0
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
09.03.2019, 15:53 10
+eva2326
1)
Цитата Сообщение от eva2326 Посмотреть сообщение
Сообщение от Krokodil9798
main обладает одной особеностью - она единственная функция, которая может не содержать данной команды возврата, при этом, по умолчанию будет возвращён 0.
С чего вы взяли, что возвращен будет именно ноль?
Это где-то кем-то гарантируется?
q a r u . s i t e/questions/9067/what-should-main-return-in-c-and-c
Тут почитайте
2)
Цитата Сообщение от eva2326 Посмотреть сообщение
Сообщение от Krokodil9798
Во всех других функциях, которые объявленные как возвращающие - возврат обязателен, а его отсутствие - вызовет ошибку компиляции
Прохладная история, Бро.
Отсутствие необходимой инструкции возврата return - есть UB, а вовсе не ill-formed
С этим замечанием я согласен. Просто большинство человеков программирует в Visual Studio, а там компилятор очень не любит отсутствие возврата функции. А для новичков найти причину проблемы бывает не так уж и легко. Поэтому я и написал, что будет ошибка компиляции. Так проще запомнить, что если функция помечена как возвращающая - возврат должен быть.

P.S. И ещё - я Вам не "бро" и такого фамильярного обращения к себе не потерплю.

Добавлено через 6 минут
Просьба рассказать мне, как гиперссылку верно вставить
0
Модератор
Эксперт С++
12069 / 9753 / 5897
Регистрация: 18.12.2011
Сообщений: 26,183
09.03.2019, 17:26 11
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
как гиперссылку верно вставить
Такая ссылка запрещена П.5.24 Правил.
Скопируйте нужный текст и вставьте в виде цитаты.
0
892 / 350 / 79
Регистрация: 17.05.2015
Сообщений: 1,152
09.03.2019, 17:31 12
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
Тут почитайте
"Тут" не открывается.

К тому же, когда речь заходит о гарантиях, то имеют ввиду там

Цитата Сообщение от Krokodil9798 Посмотреть сообщение
Просьба рассказать мне, как гиперссылку верно вставить
Я просто делаю "копи-паст" и всё.

Ещё можно нажать на пиктограммку с планеткой и скрепкой.
(если намести на пиктограммку , вылезет всплывающее сообщение "вставить ссылку")


Цитата Сообщение от Krokodil9798 Посмотреть сообщение
Просто большинство человеков программирует в Visual Studio, а там компилятор
Так же пропустит UB, и глазом не моргнёт.

https://rextester.com/YMV75546

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int foo(int v)
{
    if(v == 0)
        return 1;
}
 
int main()
{
    std::cout << "Hello, world!\n";
}
warning C4715: 'foo': not all control paths return a value
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
.S. И ещё - я Вам не "бро" и такого фамильярного обращения к себе не потерплю.
И не нужно ничего терпеть.

Вот я не хочу терпеть всякий бред, и сразу пишу:
Цитата Сообщение от eva2326 Посмотреть сообщение
Прохладная история, Бро.
А вы можете модераторам пожаловаться, например.
0
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
09.03.2019, 21:23 13
+eva2326 Счастья Вам и удачи)
0
2 / 2 / 0
Регистрация: 24.02.2019
Сообщений: 138
10.03.2019, 11:32  [ТС] 14
мне нужен код, используя только printf без cout
0
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
10.03.2019, 11:39 15
Цитата Сообщение от DREDON Посмотреть сообщение
мне нужен код, используя только printf без cout
Цитата Сообщение от Krokodil9798 Посмотреть сообщение
Ошибок много) Разберитесь с моим кодом и сверьте со своим - так Вы найдёте ошибки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdio.h" 
#include "conio.h" 
#include <locale.h> 
void main()
{
      setlocale(LC_ALL, "Russian");
      int year;
      printf("\nВ каком году был основан Санкт-Петербург?\n");
      printf("\nВведите число и нажмите <Enter>");
      printf("\n-> ");
      scanf("%d", &year);
      switch (year)
      {
          case 1703:
             printf("\nОтвет верен");
          default:
             printf("\nВы ошиблись, Санкт-Петербург был основан в 1703 году");
      }
      getch();
}
Где Вы в моём ответе cout увидели?)
0
2 / 2 / 0
Регистрация: 24.02.2019
Сообщений: 138
10.03.2019, 11:39  [ТС] 16
При вводе цифры 1703... Должен писать , что ответ верен... Но вместо этого он пишет , что ответ верен но и дополняет это строкой (ВЫ ОШИБЛИСЬ)
Как сделать так , чтоб это работало корректно ?
При вводе правильного года - ответ правильный (КОНЕЦ)
При вводе не правильного года - вы ошиблись (КОНЕЦ)


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdio.h" 
#include "conio.h" 
#include <locale.h> 
void main()
{
    setlocale(LC_ALL, "Russian");
    int year;
 
    printf("\nВ каком году был основан Санкт-Петербург?\n");
    printf("\nВведите число и нажмите <Enter>");
    printf("\n-> ");
    scanf("%d", &year);
 
    switch (year)
    {
        case 1703:
            printf("\nОтвет верен");
        default:
            printf("\nВы ошиблись, Санкт-Петербург был основан в 1703 году");
    }
    getch();
}
0
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
10.03.2019, 11:41 17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdio.h" 
#include "conio.h" 
#include <locale.h> 
void main()
{
    setlocale(LC_ALL, "Russian");
    int year;
 
    printf("\nВ каком году был основан Санкт-Петербург?\n");
    printf("\nВведите число и нажмите <Enter>");
    printf("\n-> ");
    scanf("%d", &year);
 
    switch (year)
    {
        case 1703:
            printf("\nОтвет верен");
            break;
        default:
            printf("\nВы ошиблись, Санкт-Петербург был основан в 1703 году");
    }
    getch();
}
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2019, 11:41
Помогаю со студенческими работами здесь

Переезд из Санкт-Петербурга в Москву
К сожалению, не могу найти работу программистом в Санкт-Петербурге. Отправляю резюме на известных...

Выпадающий список улиц Санкт-Петербурга
Всем привет! Понадобилось для сайта АН сделать в input type text выпадающий список, а точнее...

Нужен крутой программист из Санкт-Петербурга
В серьезный проект требуется хороший программист. До запуска проекта оклад, после доля в бизнесе....

Системник за 22-23 т.р. для дома в Юлмарте Санкт-Петербурга.
Помогите, плиз, собрать системник. Цель - компьютер для дома, в игры не играю...Просмотр фильмов...

Инженеры АСУ ТП Санкт - Петербурга и Лен. области отзовитесь
Всем доброго времени суток! У меня проблема: не могу понять, где найти такие предприятия, хотя бы в...

Подсчитать среднюю рыночную стоимость 1 кв.м. площади зданий по районам Санкт-Петербурга
Здравствуйте форумчане! Такая дилемма, поскольку в Access я дилетант, столкнулся с проблемой,...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru