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

Решить задачу с помощью оператора case - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Сидоренко
-37 / 43 / 2
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 18:59     Решить задачу с помощью оператора case #1
Ввести с клавиатуры и сохранить в массиве В кредитные ставки каждого из 11 банков города. Посчитать количество банков, в которых кредитные ставки самые высокие и превышают 18 %.

Проблема в том, что нам это нужно решить с помощью оператора case!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
crazygor1
 Аватар для crazygor1
6 / 6 / 1
Регистрация: 06.02.2010
Сообщений: 131
27.09.2011, 19:08     Решить задачу с помощью оператора case #2
Так ты реализовал задачу другим путём и просто не можишь через кейз?
Поищи синтаксис конструкции, не так уже оно сложнее ифов.
Сидоренко
-37 / 43 / 2
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 19:18  [ТС]     Решить задачу с помощью оператора case #3
Я пытался сделать, но мне компилятор кучу ошибок выдал.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.09.2011, 19:19     Решить задачу с помощью оператора case #4
Код в студию.
Сидоренко
-37 / 43 / 2
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 22:03  [ТС]     Решить задачу с помощью оператора case #5
Это все что написал
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
 
 main() { int i,a[11];
        printf(" Ââåäèòå êðåäèòГ*ûå Г±ГІГ*ГўГЄГЁ ГЎГ*Г*ГЄГ*: ");
        for (i=0;i<=11;i++){
            scanf(" %i ",a[i]);
            }
            getch();
            }
Но неправильно
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.09.2011, 22:08     Решить задачу с помощью оператора case #6
Начнем с того, что вы вводите 12 банков, вместо 11. И при введении 12-го банка у вас идет выход за пределы массива.

Не по теме:

Мне одному кажется бредом делать эту задачу через case? Ладно бы было много условий.



Добавлено через 1 минуту
Ну и в scanf не %i а %d
Сидоренко
-37 / 43 / 2
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 22:16  [ТС]     Решить задачу с помощью оператора case #7
Нет, мне тоже кажется что через case делать тупо. Но условие, есть условие..

Добавлено через 2 минуты
У меня после ввода первого банка, выбрасывает из проги!
Чего так?
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.09.2011, 22:22     Решить задачу с помощью оператора case #8
C
1
scanf( " %i ", &a[i] );
Вам же нужно передать адрес, по которому нужно записать прочтённое значение.

Добавлено через 3 минуты
Да, и не %i, а %d, как говорил soon.
Сидоренко
-37 / 43 / 2
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 22:22  [ТС]     Решить задачу с помощью оператора case #9
Да!! Спасибо!! Все вводится правильно!!
Но как выполнить условие:
Посчитать количество банков, в которых кредитные ставки самые высокие и превышают 18 %.
Я так понимаю вначале нужно:
C
1
2
3
 for (i=0;i<=11;i++){
Что тут писать?
}
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.09.2011, 22:31     Решить задачу с помощью оператора case #10
Цитата Сообщение от Сидоренко Посмотреть сообщение
Что тут писать?
Код. Включайте мозги и придумывайте, как реализовать подсчёт этих банков.

Добавлено через 8 минут
Цитата Сообщение от soon Посмотреть сообщение
Мне одному кажется бредом делать эту задачу через case? Ладно бы было много условий.
soon, можно ведь и выкрутиться:

C
1
2
3
4
switch( /*logical expression*/ )
{
   case 1: /* actions */
}
Сидоренко
-37 / 43 / 2
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 22:35  [ТС]     Решить задачу с помощью оператора case #11
Цитата Сообщение от Сидоренко Посмотреть сообщение
Посчитать количество банков, в которых кредитные ставки самые высокие
Это типа нужна сортировка???

Цитата Сообщение от Сидоренко Посмотреть сообщение
превышают 18 %.
Как это реализовать??

Я в этом ничего не понимаю, а они нам задают домой((
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.09.2011, 22:37     Решить задачу с помощью оператора case #12
Сидоренко, если вы слышали о сортировке и дошли до массивов и конструкции switch, то точно должны были слышать о сравнениях чисел и подсчёте количества вхождений заданных значений в массив.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.09.2011, 22:38     Решить задачу с помощью оператора case #13
soon, можно ведь и выкрутиться
Можно. В качестве бреда Имхо, преподаватель, поощряющий подобный код учит студентов плохому стилю. Может быть это и развивает нестандартное мышление, но можно ведь развить и другими способами. В самом деле, где, кроме как на олимпиадах может такое пригодиться? А если вдруг некоторые неправильно воспримут эту методику и будут менять в своем коде все if/else на switch/case? Кошмар же.
Сидоренко
-37 / 43 / 2
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 22:44  [ТС]     Решить задачу с помощью оператора case #14
Вот, я сделал:
C
1
2
3
4
5
6
              for (i=0;i<=11;i++){ 
                  if(max<a[i]) {
                               max=a[i];
                               }
                               }
                  printf(" max kreditnaya stavka: %d ",max);
Все работает!!
Но я все таки не пойму как сделать :
Превышают 18%

Я так понимаю, в этой задаче нужно вывести банк, у которого кредитная ставка самая высокая..
Также, вывести банки, у которых кредитная ставка превышает 18% - Как это сделать??
Если не сложно может кто-то написать часть кода??

Цитата Сообщение от Сидоренко Посмотреть сообщение
и превышают 18 %.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.09.2011, 22:49     Решить задачу с помощью оператора case #15
C
1
2
if(a[i] > 18)
    printf("profit!");
И вот это
C
1
 for (i=0;i<=11;i++){
Если у вас 11 банков, то будет выход за пределы массива, я, вроде уже отписывался по этому поводу
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.09.2011, 22:55     Решить задачу с помощью оператора case #16
Сидоренко, варианта два. либо имелось ввиду "подсчитать банки, кредитная ставка которых превышает 18%", либо, как и написано, "если есть банки с кредитной ставкой выше 18%, подсчитать банки с максимальным значением кредитной ставки".
Сидоренко
-37 / 43 / 2
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 23:14  [ТС]     Решить задачу с помощью оператора case #17
Звучит так:
Посчитать количество банков, у которых кредитные ставки самые большие и превышают 18%
Значит нам нужно количество банков - k
И выходит:
C
1
2
3
4
5
6
for (i=0;i<=10;i++){ 
                  if(min>a[i] && a[i]>18) {
                               k++;
                               }
                               }
                  printf(" kolichestvo bankov: %d ",k);
Но меня смущает число 18, все таки сказано 18% а не 18. И это
У которых кредитная ставка самая большая
Самая большая от чего??
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.09.2011, 23:16     Решить задачу с помощью оператора case #18
Кредитные ставки выражаются в процентах от суммы кредита. Вы в самом начале вводите кредитные ставки банков.

Добавлено через 20 секунд
Цитата Сообщение от Сидоренко Посмотреть сообщение
Самая большая от чего??
Надо полагать, максимальная среди данных.
Сидоренко
-37 / 43 / 2
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 23:22  [ТС]     Решить задачу с помощью оператора case #19
Цитата Сообщение от talis Посмотреть сообщение
Надо полагать, максимальная среди данных.
Да, но нам нужно вывести несколько банков...
Я взял число min=10. И решил что буду выводить банки у которых кредитная ставка больше 10 и естественно по условию задачи больше 18%.
Я вот написал весь код программы, можете проверить на ошибки, и посоветовать куда всунуть case ??
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 <iostream.h>
#include <math.h>
 
 main() { int i,a[10],min=10,k=0;
        printf(" Vvedite kreditnie stavki banka: ");
        for (i=0;i<=11;i++){
            scanf(" %d ", &a[i]);
            }
            
              for (i=0;i<=10;i++){ 
                  if(min>a[i] && a[i]>18) {
                               k++;
                               }
                               }
                  printf(" kolichestvo bankov: %d ",k);
                 
            getch();
            }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2011, 23:32     Решить задачу с помощью оператора case
Еще ссылки по теме:

C++ Реализовать цикл с помощью оператора goto
C++ Вычислить с помощью условного оператора
C++ Составить программу вычисления значения функции с использованием оператора CASE

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

Или воспользуйтесь поиском по форуму:
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.09.2011, 23:32     Решить задачу с помощью оператора case #20
Гляньте пост #10. Засовываете вместо if. Должно сработать.
Ну и вы так и не исправили ошибку с циклом! Ну, т.е. одну исправили, а в 8 строке - нет.
Yandex
Объявления
27.09.2011, 23:32     Решить задачу с помощью оператора case
Ответ Создать тему
Опции темы

Текущее время: 01:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru