Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 9
1

Определить количество троек, которые надо исправить на четвёрки

27.03.2019, 16:16. Показов 1544. Ответов 2

Author24 — интернет-сервис помощи студентам
Почему-то переменная n не увеличивается, хотя теоретически должно быть верно. Спасите-помогите
Матвей, посмотрев на текущие оценки по информатике обнаружил, что из десяти его оценок, троек больше чем четвёрок. Матвею нравится, когда четвёрок у него ровно столько же, сколько троек, или четвёрок на одну больше. Он хочет написать программу, которая по списку его оценок, выведет количество троек, которые надо исправить на четвёрки, чтобы было так, как ему нравится.

Например, оценки Матвея: 4 2 3 5 3 4 3 3 4 3. Мы видим, что троек у него 5, а четвёрок 3. Значит надо исправить всего одну тройку.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
using namespace std;
int main(){
  int i,k3,k4,a,m,j,n=0,l;
  m=(k3-k4)/2;
  for (i=0;i<10;i++)
  {cin>>a; 
  if (a==3) k3++; 
  if (a==4) k4++;}
  if ((k3-k4)%2==0)
  {for (j=0;j<10;j++)
  {k3--; k4++; n++;
  if (k3==k4) l=n;}}
  if ((k3-k4)%2!=0)
  {for (j=0;j<10;j++)
  {k3--; k4++; n++;
  if (k4==k3+1) l=n;}}
  cout<<l;
  return 0;
 }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2019, 16:16
Ответы с готовыми решениями:

Найти количество элементов массива, которые являются степенями четверки
Дан список, объектами которого являются числа. Найти количество тех элементов массива, которые...

Найти количество тех элементов массива, которые являются степенями четверки
Найти количество тех элементов массива, которые являются степенями четверки

Определить количество пятерок, количество четверок, количество троек и количество двоек в массиве оценок
В массиве записаны оценки по иностранному языку каждого из 22 учеников класса.Определить количество...

Определить количество троек в десятичном представлении натурального числа
дано натуральное число. определить: a) количество цифр 3 в нем; b) сколько раз в нем встречается...

2
75 / 55 / 21
Регистрация: 10.07.2018
Сообщений: 214
27.03.2019, 16:35 2
Форматируйте, пожалуйста, код, прежде чем его выкладывать, а то читать невозможно:
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
#include <iostream>
 
int main() {
    int i, k3, k4, a, m, j, n = 0, l;
    m = (k3 - k4) / 2;
    for (i = 0; i < 10; i++)
    {
        std::cin >> a;
        if (a == 3) k3++;
        if (a == 4) k4++;
    }
    if ((k3 - k4) % 2 == 0)
    {
        for (j = 0; j < 10; j++)
        {
            k3--; k4++; n++;
            if (k3 == k4) l = n;
        }
    }
    if ((k3 - k4) % 2 != 0)
    {
        for (j = 0; j < 10; j++)
        {
            k3--; k4++; n++;
            if (k4 == k3 + 1) l = n;
        }
    }
    std::cout << l;
    return 0;
}
Добавлено через 21 секунду
Правда ведь, намного легче читается?

Добавлено через 2 минуты
Для начала, вы не инициализируете переменные k3 и k4 перед использовением в строке 5 (в моем варианте), так что работать это при всем желании не будет.
Во вторых, с такими названиями переменных очень сложно проследить ход мысли

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

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
#include <iostream>
 
int main() {
 
    int marks[10] = { 4, 3, 2, 5, 3, 4, 3, 3, 4, 3 };
 
    int count3 = 0;
    int count4 = 0;
    for (int i = 0; i < 10; i++)
    {
        if (marks[i] == 3) count3++;
        if (marks[i] == 4) count4++;
    }
 
    int needToFix = 0;
    if (count4 < count3)
    {
        needToFix = (count3 - count4) / 2;
        if ((count3 - count4) % 2 == 1)
            needToFix += 1;
    }
 
    std::cout << needToFix << std::endl;
    system("pause");
 
    return 0;
}
Добавлено через 3 минуты
А для вот этого места в Вашем коде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if ((k3 - k4) % 2 == 0)
    {
        for (j = 0; j < 10; j++)
        {
            k3--; k4++; n++;
            if (k3 == k4) l = n;
        }
    }
    if ((k3 - k4) % 2 != 0)
    {
        for (j = 0; j < 10; j++)
        {
            k3--; k4++; n++;
            if (k4 == k3 + 1) l = n;
        }
    }
специально существует слово else. Кроме того, если уж проходиться по массиву циклом, можно проводить проверку внутри него, ибо эти два цикла почти не отличаются
0
0 / 0 / 0
Регистрация: 13.11.2016
Сообщений: 9
27.03.2019, 17:54  [ТС] 3
Как только я инициализировала k3, k4 всё заработало. Спасибо
0
27.03.2019, 17:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.03.2019, 17:54
Помогаю со студенческими работами здесь

Определить количество студентов, сдавших экзамены без троек
Известны результаты сдачи двух экзаменов десятью студентами. Определить количество студентов,...

Определить количество пятерок, четверок, троек и двоек по каждой дисциплине
Имеется экзаменационная ведомость студенческой группы из 20 человек по 5 дисциплинам. Определить...

В массиве записаны оценки 22 учеников. Определить количество пятерок, четверок, троек и двоек
В массиве записаны оценки по иностранному языку каждого из 22 учеников класса.Определить количество...

В массиве записаны оценки, найти количество пятерок, количество четверок, количество троек и количество двоек
В массиве записаны оценки по иностранному языку каждого из 22 учеников класса. Определить...


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

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