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

Где ошибка? - C++

Восстановить пароль Регистрация
 
 
Bodulay
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 8
04.10.2012, 13:38     Где ошибка? #1
Программе подаются значения 15 переменных, она умножает каждое на 3 и делит на два. После все выводится.

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
int main()
{
   соut << "Vvedite 15 peremennih" << endl;
   int q1;
   int q2;
   int q3;
   int q4;
   int q5;
   int q6;
   int q7;
   int q8;
   int q9;
   int q10;
   int q11;
   int q12;
   int q13;
   int q14;
   int q15;
   cin >> q1 >> endl;
   cin >> q2 >> endl;
   cin >> q3 >> endl;
   cin >> q4 >> endl;
   cin >> q5 >> endl;
   cin >> q6 >> endl;
   cin >> q7 >> endl;
   cin >> q8 >> endl;
   cin >> q9 >> endl;
   cin >> q10 >> endl;
   cin >> q11 >> endl;
   cin >> q12 >> endl;
   cin >> q13 >> endl;
   cin >> q14 >> endl;
   cin >> q15 >> endl;
   q1 = q1 * 3;
   q2 = q2 * 3;
   q3 = q3 * 3;
   q4 = q4 * 3;
   q5 = q5 * 3;
   q6 = q6 * 3;
   q7 = q7 * 3;
   q8 = q8 * 3;
   q9 = q9 * 3;
   q10 = q10 * 3;
   q11 = q11 * 3;
   q12 = q12 * 3;
   q13 = q13 * 3;
   q14 = q14 * 3;
   q15 = q15 * 3;
   q1 = q1 / 2;
   q2 = q2 / 2;
   q3 = q3 / 2;
   q4 = q4 / 2;
   q5 = q5 / 2;
   q6 = q6 / 2;
   q7 = q7 / 2;
   q8 = q8 / 2;
   q9 = q9 / 2;
   q10 = q10 / 2;
   q11 = q11 / 2;
   q12 = q12 / 2;
   q13 = q13 / 2;
   q14 = q14 / 2;
   q15 = q15 / 2;
   system("PAUSE");
   return 0;
}
P.S. Не судите строго, я до этого только в PHP писал.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
04.10.2012, 13:48     Где ошибка? #2
для начала переменные сделай так
int q1, q2, q3;

Ввод делай так
cin >> q1 >> q2 >> q3;
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
04.10.2012, 13:51     Где ошибка? #3
Индус detected?
Bodulay
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 8
04.10.2012, 13:52  [ТС]     Где ошибка? #4
Цитата Сообщение от David Sylva Посмотреть сообщение
для начала переменные сделай так
int q1, q2, q3;

Ввод делай так
cin >> q1 >> q2 >> q3;
Зачем? Так удобочитаемость кода падает.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
04.10.2012, 13:53     Где ошибка? #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream> 
 
int main() 
{ 
    const int size = 15; 
    int array[size]; 
    int i; 
 
    for ( i = 0; i < size; i++) 
    {
        std::cout << "Inter a number " << i+1 << " : " << std::endl; 
        std::cin >> array[i]; 
    } 
 
    for ( i = 0; i < size; i++) 
        std::cout << (array[i] * 3) / 2 << std::endl; 
     
}
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
04.10.2012, 13:58     Где ошибка? #6
Зачем? Так удобочитаемость кода падает.
Но ведь её не было изначально?) А как бы ты поступил, если бы тебе надо было 100 чисел ввести и сделать те же действия?
Bodulay
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 8
04.10.2012, 14:00  [ТС]     Где ошибка? #7
Цитата Сообщение от David Sylva Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream> 
 
int main() 
{ 
    const int size = 15; 
    int array[size]; 
    int i; 
 
    for ( i = 0; i < size; i++) 
    {
        std::cout << "Inter a number " << i+1 << " : " << std::endl; 
        std::cin >> array[i]; 
    } 
 
    for ( i = 0; i < size; i++) 
        std::cout << (array[i] * 3) / 2 << std::endl; 
     
}
#include <iostream> само собой, он есть в оригинальной программе, я его просто не перепечатывал.
Зачем создавать цикл? Зачем массив? Ведь так расходуются ресурсы ПК сильней. Гораздо оптимизированнее будет прописать каждую переменную отдельно и выполнять последовательно операции, т.к. так меньше надо памяти.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.10.2012, 14:02     Где ошибка? #8
Цитата Сообщение от Герц Посмотреть сообщение
если бы тебе надо было 100 чисел ввести и сделать те же действия?
Зачем? В исходном варианте копипастить легче!


Добавлено через 1 минуту
Цитата Сообщение от Bodulay Посмотреть сообщение
Ведь так расходуются ресурсы ПК сильней.
Читать МакКоннелла го марш!
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
04.10.2012, 14:02     Где ошибка? #9
Bodulay, 15 переменных это нифига не критично и даже 100000. Поэтому, просто не заморачивайся.
Bodulay
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 8
04.10.2012, 14:06  [ТС]     Где ошибка? #10
Цитата Сообщение от Герц Посмотреть сообщение
Но ведь её не было изначально?) А как бы ты поступил, если бы тебе надо было 100 чисел ввести и сделать те же действия?
Для таких случаев я использую ctrl+c + ctrl+v. А еще лучше, я думаю, использовать для написания каждой строчки программы, которые копируют строки с соответствующими изменениями.

Добавлено через 1 минуту
Цитата Сообщение от Deviaphan Посмотреть сообщение
Зачем? В исходном варианте копипастить легче!


Добавлено через 1 минуту

Читать МакКоннелла го марш!
МакКоннелла не уважаю, учился классике по книге самого создателя Pascal - Никлауса Вирта.

Добавлено через 1 минуту
Цитата Сообщение от Dani Посмотреть сообщение
Bodulay, 15 переменных это нифига не критично и даже 100000. Поэтому, просто не заморачивайся.
Программа тупо не работает. Я не знаю почему. Все перепробовал.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
04.10.2012, 14:14     Где ошибка? #11
Вот не ожидал я, что эта программа вызовет столько споров.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.10.2012, 14:17     Где ошибка? #12
Цитата Сообщение от Bodulay Посмотреть сообщение
После все выводится.
Ну так ты вывод всего не написал же! Потому и не работает.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
04.10.2012, 14:18     Где ошибка? #13
Bodulay, проблема в том, что при целочисленном делении как результат вы получаете целое число, т.е.
C++
1
2
3
int q = 5;
q *= 3; // q = 15
q >>= 2; // q = 7
А не 7.5, как вы ожидали. Используйте float или double и будет так, как вы ожидали.

PS. про циклы все-таки почитайте, а книги 20-30 летней давности, в которых пишутся такие вещи - лучше не читайте, т.к. паскаль - это не С/С++, современные компиляторы умеют оптимизировать код и мощность железа далека от той, которая была тогда. Да и после выхода паскаля архитектура ЦП менялась

ЗЫ. нормальный бы человек написал
C++
1
2
double q = 5;
q *= 1.5;
Bodulay
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 8
04.10.2012, 14:24  [ТС]     Где ошибка? #14
Цитата Сообщение от Deviaphan Посмотреть сообщение
Ну так ты вывод всего не написал же! Потому и не работает.
Вывод тоже имеется в исходной программе. Я просто его вырезал, иначе программа слишком длинная, не для первого поста в топике.

Добавлено через 2 минуты
Цитата Сообщение от M128K145 Посмотреть сообщение
Bodulay, проблема в том, что при целочисленном делении как результат вы получаете целое число, т.е.
C++
1
2
3
int q = 5;
q *= 3; // q = 15
q >>= 2; // q = 7
А не 7.5, как вы ожидали. Используйте float или double и будет так, как вы ожидали.

PS. про циклы все-таки почитайте, а книги 20-30 летней давности, в которых пишутся такие вещи - лучше не читайте, т.к. паскаль - это не С/С++, современные компиляторы умеют оптимизировать код и мощность железа далека от той, которая была тогда. Да и после выхода паскаля архитектура ЦП менялась

ЗЫ. нормальный бы человек написал
C++
1
2
double q = 5;
q *= 1.5;
Я знаю и рассчитывал на то, что деление округляется, ибо аналогов обероновских или паскалевских div и mod я не знаю.
У нас в деревне только-только интернет подрубили, скорость низкая, 32 кбит/с. Какие там книги про С/С++.
Насчет "q *= 1.5;": пробовал, но у меня почему-то идет "Ошибка переполнения". Да и к тому же, так удобнее.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
04.10.2012, 14:37     Где ошибка? #15
Цитата Сообщение от Bodulay Посмотреть сообщение
пробовал, но у меня почему-то идет "Ошибка переполнения".
а какие данные вы вводите?
Цитата Сообщение от Bodulay Посмотреть сообщение
Насчет "q *= 1.5;": пробовал, но у меня почему-то идет "Ошибка переполнения". Да и к тому же, так удобнее.
так вы определитесь,
Цитата Сообщение от Bodulay Посмотреть сообщение
Зачем создавать цикл? Зачем массив? Ведь так расходуются ресурсы ПК сильней. Гораздо оптимизированнее будет прописать каждую переменную отдельно и выполнять последовательно операции, т.к. так меньше надо памяти.
или
Цитата Сообщение от Bodulay Посмотреть сообщение
так удобнее.
Ну а после продолжим
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
04.10.2012, 14:41     Где ошибка? #16
Цитата Сообщение от Bodulay Посмотреть сообщение
Ведь так расходуются ресурсы ПК сильней. Гораздо оптимизированнее будет прописать каждую переменную отдельно и выполнять последовательно операции, т.к. так меньше надо памяти.
я тебя уверяю, ты разницы не заметишь, даже если у тебя будет не пятнадцать переменных, а 100500. Зато программу с циклами и массивами вместо кучи переменных:
  • легче читать
  • легче отлаживать
  • легче изменять

Добавлено через 1 минуту
Цитата Сообщение от M128K145 Посмотреть сообщение
т.к. паскаль - это не С/С++, современные компиляторы умеют оптимизировать код и мощность железа далека от той, которая была тогда. Да и после выхода паскаля архитектура ЦП менялась
да и для Паскаля то, что я сказал выше, тоже верно
Bodulay
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 8
04.10.2012, 14:48  [ТС]     Где ошибка? #17
Ввожу все цифры от 1 до 15. Плюс ко всему, циклы и массивы едят больше памяти и приводят к нечитаемости кода, я это уже писал.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
04.10.2012, 15:26     Где ошибка? #18
Цитата Сообщение от Bodulay Посмотреть сообщение
Плюс ко всему, циклы и массивы едят больше памяти
Насколько больше? На 20 байт на программу?

Цитата Сообщение от Bodulay Посмотреть сообщение
и приводят к нечитаемости кода, я это уже писал.
Знаешь, а весь остальной мир считает иначе.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
04.10.2012, 15:38     Где ошибка? #19
Цитата Сообщение от Bodulay Посмотреть сообщение
Плюс ко всему, циклы и массивы едят больше памяти и приводят к нечитаемости кода, я это уже писал.
как раз наоборот. в 5 сообщении я за один взгляд понимаю, что делает код, в первом же мне надо посмотреть переменные, отследить их правильность, необходимо так же скроллить код, так как половину я просто не вижу, а вторую вы вырезали для того, чтобы уменьшить длину листинга
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2012, 16:06     Где ошибка?
Еще ссылки по теме:

C++ Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил)
C++ Где ошибка?
C++ где ошибка

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

Или воспользуйтесь поиском по форуму:
Bodulay
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 8
04.10.2012, 16:06  [ТС]     Где ошибка? #20
Цитата Сообщение от Nameless One Посмотреть сообщение
Насколько больше? На 20 байт на программу?


Знаешь, а весь остальной мир считает иначе.
И где, собственно, Ваш остальной мир? Программисты Индии? И вообще, каждый байт имеет цену. Ваши циклы и массивы - заговор Intel и AMD. Они специально сделали так, что все, такие как Вы, не считали байты и нуждались в более мощных вычислительных системах, которые Intel и AMD охотно предоставляет. А ведь они едят больше электричества. Стоят больше денег. На самом деле, если бы не ваши свистелки и перделки, на подобии циклов и массивов, все бы до сих пор нормально, без проблем, кодили на 4004-ых.
Yandex
Объявления
04.10.2012, 16:06     Где ошибка?
Закрытая тема Создать тему
Опции темы

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