4 / 4 / 1
Регистрация: 17.09.2017
Сообщений: 359
1

почему не работает?

17.03.2018, 21:44. Показов 847. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
на вход подаются 0 или 1
на выходе выводиться + - *
почему если я сделаю
int a; заменю на char a у меня на выходе выходит не понятно что ведь вроде нет разницы?


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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include<iostream>
#include<fstream>
using namespace std;
int main (){
    fstream fin("input.txt");
    ofstream fout("output.txt");
    char  s=1,num=0;
    int  a;
    char mas[40];
    while (fin>>a)
 {
 
        switch(s)
    {
  case 1:
      {
          switch(a)
          {
          case 0:
          {
              mas[num]='*';
              s=1;
              break;
          }
           case 1:
           {
               mas[num]='-';
              s=2;
              break;
           }
          }
          break;
      }
      case 2:
      {
          switch(a)
          {
          case 0:
          {
              mas[num]='*';
              s=1;
              break;
          }
           case 1:
           {
               mas[num]='+';
              s=3;
              break;
           }
          }
          break;
      }
      case 3:
      {
          switch(a)
          {
          case 0:
          {
              mas[num]='*';
              s=4;
              break;
          }
           case 1:
           {
               mas[num]='-';
              s=1;
              break;
           }
          }
          break;
      }
      case 4:
      {
          switch(a)
          {
          case 0:
          {
              mas[num]='-';
              s=5;
              break;
          }
           case 1:
           {
               mas[num]='-';
              s=3;
              break;
          }
            }
            break;
        }
        case 5:
      {
          switch(a)
          {
          case 0:
          {
              mas[num]='+';
              s=4;
              break;
          }
           case 1:
           {
               mas[num]='*';
              s=5;
              break;
           }
          }
          break;
      }
    }
    num++;
    }
int q=0;
    for(int i=0; i<num; i++)
{
 
    fout << mas[i];
    if(mas[i]=='*')
    q++;
 
}
fout <<endl;
fout <<q;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2018, 21:44
Ответы с готовыми решениями:

Почему выводится в виде таблицы и почему не работает сортировка
почему выводится в виде таблицы? почему не работает сортировка? и как туда можно вставить классы...

Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает
почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает. Имею...

Почему не работает код на других компьютерах (на моем работает)?
вот задание: построить ф-ю: на вход поступают 2 строки, на выходе 1 строка, по следующим правилам:...

Почему в динамическом массиве не работает то, что работает со статическим?
Программа зависает #include&lt;iostream&gt; #include&lt;stdlib.h&gt; #include&lt;time.h&gt; using namespace...

12
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
17.03.2018, 21:48 2
Цитата Сообщение от Александрррррпд Посмотреть сообщение
если я сделаю
int a; заменю на char a
case у тебя под int сделаны.
0
4 / 4 / 1
Регистрация: 17.09.2017
Сообщений: 359
17.03.2018, 21:54  [ТС] 3
не понял? в смысле под int можешь по подробнее?
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
17.03.2018, 21:57 4
Лучший ответ Сообщение было отмечено Александрррррпд как решение

Решение

Если под char, то так:
C++
1
case '0' :
1
4 / 4 / 1
Регистрация: 17.09.2017
Сообщений: 359
17.03.2018, 22:02  [ТС] 5
char s=1,num=0; вот это строку как думаете лучше взять с int или с char?
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
17.03.2018, 22:15 6
Цитата Сообщение от Александрррррпд Посмотреть сообщение
char s=1,num=0; вот это строку как думаете лучше взять с int или с char?
int.
0
4 / 4 / 1
Регистрация: 17.09.2017
Сообщений: 359
17.03.2018, 22:30  [ТС] 7
почему? вроде s может быть от одно до 4.num тут от 0 до 40.тип char -127 до 128 вроде хватает.
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
17.03.2018, 22:43 8
Цитата Сообщение от Александрррррпд Посмотреть сообщение
почему?
Чтобы не путаться. Индексы, обычно, int-ами задаются.
0
4 / 4 / 1
Регистрация: 17.09.2017
Сообщений: 359
17.03.2018, 22:49  [ТС] 9
не путаться с чем? типом char тоже можно задавать?
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
17.03.2018, 22:54 10
Цитата Сообщение от Александрррррпд Посмотреть сообщение
не путаться с чем? типом char тоже можно задавать?
Задавай чем хочешь. Что я думаю по этому поводу - я сказал.
0
4 / 4 / 1
Регистрация: 17.09.2017
Сообщений: 359
17.03.2018, 23:16  [ТС] 11
вот ты сказал по int у меня свитч. а какая разница ведь тип char тоже может принимать 0 и 1 принимать? для чего чтобы его использывать писать case '0':?
0
474 / 426 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
17.03.2018, 23:25 12
Лучший ответ Сообщение было отмечено Александрррррпд как решение

Решение

Цитата Сообщение от Александрррррпд Посмотреть сообщение
вот ты сказал по int у меня свитч. а какая разница ведь тип char тоже может принимать 0 и 1 принимать? для чего чтобы его использывать писать case '0':?
Потому что char - это символ. А символ '0' от числа 0 отличает разница в 48 (т.е. символ '0' в численной интерпретации имеет значение 48). Если ты пользуешься символами, то и сравнивать в case нужно символы, если числами - то числа. Всё просто.
1
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
18.03.2018, 00:01 13
Цитата Сообщение от Александрррррпд Посмотреть сообщение
вот ты сказал по int у меня свитч. а какая разница ведь тип char тоже может принимать 0 и 1 принимать? для чего чтобы его использывать писать case '0':?
Всё зависит от того, в какой тип читаешь из файла оператором >>. Если в int, то символ '0', из текстового файла, будет прочитан как число 0, если в char, то символ '0;, будет прочитан как число 48 (код символа '0'). Соответственно, в первом случае нужен case 0 :, во втором case '0' : (или case 48 : ).
0
18.03.2018, 00:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2018, 00:01
Помогаю со студенческими работами здесь

Не могу понять почему не работает (или правильно не работает)
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #define N 5 #define M 3 void main() { int a; ...

Почему в библиотеке не работает то, что спокойно работает в программе?
День всем добрый! Я здесь решил собрать библиотеку для конструктора игр Game Maker. Хотел...

Почему не работает cin.clear() и как работает sync()?
#include&lt;iostream&gt; #include&lt;cstring&gt; using namespace std; char*input(char*ch,int&amp;n){...

Теория. Почему в данном случае copy() не работает после reserve(), но работает после resize()?
Есть такая функция: void Array::SetStartIndexes(sz3_Arr_t *array) { ...


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

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

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