Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Bodulay
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 8
#1

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

04.10.2012, 13:38. Просмотров 909. Ответов 25
Метки нет (Все метки)

Программе подаются значения 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 писал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2012, 13:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Где ошибка? (C++):

Вывести на экран количество слов где первая и последняя буквы одинаковы (не понимаю где ошибка)
задан текст нужно вывести на экран количество слов где первая и последняя буквы...

Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил)
написать универсальный тип, который представляет точку на плоскости в...

Укажите где ошибка (ошибка во время выполнения программы)
Здравствуйте, помогите пожалуйста найти ошибки в коде которые возникаю при...

Ошибка при компиляции. Где ошибка? (Работа с классом)
Уважаемые форумчане! При компиляции проекта возникает ошибка &quot; undefined...

В чём ошибка.В коде там где коментарий там ошибка поучается.
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; class...

Где ошибка?
Программа не моя,но нужно запустить ее и показать что она работает. Но в том то...

25
David Sylva
1293 / 955 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
04.10.2012, 13:48 #2
для начала переменные сделай так
int q1, q2, q3;

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

Ввод делай так
cin >> q1 >> q2 >> q3;
Зачем? Так удобочитаемость кода падает.
0
David Sylva
1293 / 955 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
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; 
     
}
0
Герц
524 / 341 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
04.10.2012, 13:58 #6
Зачем? Так удобочитаемость кода падает.
Но ведь её не было изначально?) А как бы ты поступил, если бы тебе надо было 100 чисел ввести и сделать те же действия?
0
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> само собой, он есть в оригинальной программе, я его просто не перепечатывал.
Зачем создавать цикл? Зачем массив? Ведь так расходуются ресурсы ПК сильней. Гораздо оптимизированнее будет прописать каждую переменную отдельно и выполнять последовательно операции, т.к. так меньше надо памяти.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
04.10.2012, 14:02 #8
Цитата Сообщение от Герц Посмотреть сообщение
если бы тебе надо было 100 чисел ввести и сделать те же действия?
Зачем? В исходном варианте копипастить легче!


Добавлено через 1 минуту
Цитата Сообщение от Bodulay Посмотреть сообщение
Ведь так расходуются ресурсы ПК сильней.
Читать МакКоннелла го марш!
2
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
04.10.2012, 14:02 #9
Bodulay, 15 переменных это нифига не критично и даже 100000. Поэтому, просто не заморачивайся.
0
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. Поэтому, просто не заморачивайся.
Программа тупо не работает. Я не знаю почему. Все перепробовал.
0
David Sylva
1293 / 955 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
04.10.2012, 14:14 #11
Вот не ожидал я, что эта программа вызовет столько споров.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
04.10.2012, 14:17 #12
Цитата Сообщение от Bodulay Посмотреть сообщение
После все выводится.
Ну так ты вывод всего не написал же! Потому и не работает.
0
M128K145
Эксперт JavaЭксперт С++
8320 / 3540 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
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;
0
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;": пробовал, но у меня почему-то идет "Ошибка переполнения". Да и к тому же, так удобнее.
0
M128K145
Эксперт JavaЭксперт С++
8320 / 3540 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
04.10.2012, 14:37 #15
Цитата Сообщение от Bodulay Посмотреть сообщение
пробовал, но у меня почему-то идет "Ошибка переполнения".
а какие данные вы вводите?
Цитата Сообщение от Bodulay Посмотреть сообщение
Насчет "q *= 1.5;": пробовал, но у меня почему-то идет "Ошибка переполнения". Да и к тому же, так удобнее.
так вы определитесь,
Цитата Сообщение от Bodulay Посмотреть сообщение
Зачем создавать цикл? Зачем массив? Ведь так расходуются ресурсы ПК сильней. Гораздо оптимизированнее будет прописать каждую переменную отдельно и выполнять последовательно операции, т.к. так меньше надо памяти.
или
Цитата Сообщение от Bodulay Посмотреть сообщение
так удобнее.
Ну а после продолжим
0
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
04.10.2012, 14:41 #16
Цитата Сообщение от Bodulay Посмотреть сообщение
Ведь так расходуются ресурсы ПК сильней. Гораздо оптимизированнее будет прописать каждую переменную отдельно и выполнять последовательно операции, т.к. так меньше надо памяти.
я тебя уверяю, ты разницы не заметишь, даже если у тебя будет не пятнадцать переменных, а 100500. Зато программу с циклами и массивами вместо кучи переменных:
  • легче читать
  • легче отлаживать
  • легче изменять

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

Цитата Сообщение от Bodulay Посмотреть сообщение
и приводят к нечитаемости кода, я это уже писал.
Знаешь, а весь остальной мир считает иначе.
0
M128K145
Эксперт JavaЭксперт С++
8320 / 3540 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
04.10.2012, 15:38 #19
Цитата Сообщение от Bodulay Посмотреть сообщение
Плюс ко всему, циклы и массивы едят больше памяти и приводят к нечитаемости кода, я это уже писал.
как раз наоборот. в 5 сообщении я за один взгляд понимаю, что делает код, в первом же мне надо посмотреть переменные, отследить их правильность, необходимо так же скроллить код, так как половину я просто не вижу, а вторую вы вырезали для того, чтобы уменьшить длину листинга
0
Bodulay
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 8
04.10.2012, 16:06  [ТС] #20
Цитата Сообщение от Nameless One Посмотреть сообщение
Насколько больше? На 20 байт на программу?


Знаешь, а весь остальной мир считает иначе.
И где, собственно, Ваш остальной мир? Программисты Индии? И вообще, каждый байт имеет цену. Ваши циклы и массивы - заговор Intel и AMD. Они специально сделали так, что все, такие как Вы, не считали байты и нуждались в более мощных вычислительных системах, которые Intel и AMD охотно предоставляет. А ведь они едят больше электричества. Стоят больше денег. На самом деле, если бы не ваши свистелки и перделки, на подобии циклов и массивов, все бы до сих пор нормально, без проблем, кодили на 4004-ых.
0
04.10.2012, 16:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2012, 16:06
Привет! Вот еще темы с решениями:

Где ошибка ?
Даны числа x и n . Вычислить S=sin(x)+sin(sin(x))+.....+sin(sin....sin(x)). ...

Где ошибка?!
Сортировка массива. Создаю функцию swap... Загоняю в него 9 элементов, а он мне...

Где ошибка? С++
Задание на картинке #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace...

Где ошибка?
Прошу помочь, очень мало времени! Я новичок. #include &quot;stdafx.h&quot; #include...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru