Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
43 / 43 / 5
Регистрация: 26.10.2010
Сообщений: 447
1

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

27.09.2011, 18:59. Показов 2356. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ввести с клавиатуры и сохранить в массиве В кредитные ставки каждого из 11 банков города. Посчитать количество банков, в которых кредитные ставки самые высокие и превышают 18 %.

Проблема в том, что нам это нужно решить с помощью оператора case!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2011, 18:59
Ответы с готовыми решениями:

задачу с оператора выбора case очень нужно : Пусть элементами равностороннего треугольника являются: 1.Сторона а; 2.Площад
Помогите решить задачу с помощью оператора выбора case очень нужно плиз: Пусть элементами...

Решить задачу с помощью функции и оператора case
Решить задачу с помощью функции и оператора case: Локатор ориентирован на одну из сторон...

Решить задачу при помощи RadioGroup и оператора Case
В общем, такая задача. Надо ее сделать с помощью RadioGroup, я программку составил, но я с трудом...

Переделать программу с помощью оператора Case
Program Lab3; var a, x,y:real; begin writeln ('Введите значение а'); Readln (a); x:=...

23
7 / 7 / 4
Регистрация: 06.02.2010
Сообщений: 131
27.09.2011, 19:08 2
Так ты реализовал задачу другим путём и просто не можишь через кейз?
Поищи синтаксис конструкции, не так уже оно сложнее ифов.
0
43 / 43 / 5
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 19:18  [ТС] 3
Я пытался сделать, но мне компилятор кучу ошибок выдал.
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.09.2011, 19:19 4
Код в студию.
0
43 / 43 / 5
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 22:03  [ТС] 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();
            }
Но неправильно
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.09.2011, 22:08 6
Начнем с того, что вы вводите 12 банков, вместо 11. И при введении 12-го банка у вас идет выход за пределы массива.

Не по теме:

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



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

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

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

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

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

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

Я в этом ничего не понимаю, а они нам задают домой((
0
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.09.2011, 22:37 12
Сидоренко, если вы слышали о сортировке и дошли до массивов и конструкции switch, то точно должны были слышать о сравнениях чисел и подсчёте количества вхождений заданных значений в массив.
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.09.2011, 22:38 13
soon, можно ведь и выкрутиться
Можно. В качестве бреда Имхо, преподаватель, поощряющий подобный код учит студентов плохому стилю. Может быть это и развивает нестандартное мышление, но можно ведь развить и другими способами. В самом деле, где, кроме как на олимпиадах может такое пригодиться? А если вдруг некоторые неправильно воспримут эту методику и будут менять в своем коде все if/else на switch/case? Кошмар же.
0
43 / 43 / 5
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 22:44  [ТС] 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 %.
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.09.2011, 22:49 15
C
1
2
if(a[i] > 18)
    printf("profit!");
И вот это
C
1
 for (i=0;i<=11;i++){
Если у вас 11 банков, то будет выход за пределы массива, я, вроде уже отписывался по этому поводу
1
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.09.2011, 22:55 16
Сидоренко, варианта два. либо имелось ввиду "подсчитать банки, кредитная ставка которых превышает 18%", либо, как и написано, "если есть банки с кредитной ставкой выше 18%, подсчитать банки с максимальным значением кредитной ставки".
1
43 / 43 / 5
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 23:14  [ТС] 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. И это
У которых кредитная ставка самая большая
Самая большая от чего??
0
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
27.09.2011, 23:16 18
Кредитные ставки выражаются в процентах от суммы кредита. Вы в самом начале вводите кредитные ставки банков.

Добавлено через 20 секунд
Цитата Сообщение от Сидоренко Посмотреть сообщение
Самая большая от чего??
Надо полагать, максимальная среди данных.
1
43 / 43 / 5
Регистрация: 26.10.2010
Сообщений: 447
27.09.2011, 23:22  [ТС] 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();
            }
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.09.2011, 23:32 20
Гляньте пост #10. Засовываете вместо if. Должно сработать.
Ну и вы так и не исправили ошибку с циклом! Ну, т.е. одну исправили, а в 8 строке - нет.
0
27.09.2011, 23:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2011, 23:32
Помогаю со студенческими работами здесь

Найти длину отрезка в метрах.(решать с помощью оператора case of)
единицы длины пронумерованы следующим...

Цикл: Помогите, пожалуйста, решить задачу с использованием оператора for
import math x = int(input('Введите число:')) n = int(input('Введите число:')) S = 0 k = 1...

С помощью оператора выбора case найти значение A При заданных условиях
С помощью оператора выбора case найти значение A При таких условиях a=\begin{cases} {m}^{2}-1, \...

с помощью перебора решить задачу:
какие положительные целые числа меньше 20, удовлетворяют следующему равенству I^3 +J^3+K^3 =L^3...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru