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

Пожалуйста : небольшая ошибка в цикле! - C++

Восстановить пароль Регистрация
 
web-raised
6 / 6 / 0
Регистрация: 25.03.2013
Сообщений: 73
05.11.2013, 12:17     Пожалуйста : небольшая ошибка в цикле! #1
Доброго утра!
Помогите, пожалуйста. Вот код:
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 <stdio.h>
#include <iostream.h>
#include <conio.h>
int main()
{
    int k,i,j,n,tmp,score,score1,score2,tmp_score1,tmp_score2,h,w,tmp_score;
    cin>>k;
    score1=score2=tmp_score1=tmp_score2=0;
    n=1;
    score=k*k;
    for (i=1;i<k/2;i++) {
        for (j=n;j<=k;j++) {
            h=i;
            w=j;
            tmp_score1=abs(h-w);
            tmp_score2=k-(h*w);
            tmp_score=tmp_score1+tmp_score2;
            if (tmp_score<score) {
                                 score=tmp_score;
                                 cout<<h<<" "<<w<<"   ";
                                 }            
        }
        n++;
    }
    cout<<score;
    getch();
}
Проблема в том, что во втором цикле числа почему-то не начинаются с i , а с i+2.
Ввод: 11
Вывод:1 1 2 2 2 3 2 5 2 6 2 7 2 8 2 9 2 10 2 11 3 6 (!!!, почему не 3 3 3 4?) 3 7 ....3 11 4 8(!!!, почему не 4 4 4 5)
Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2013, 12:17     Пожалуйста : небольшая ошибка в цикле!
Посмотрите здесь:

Совсем небольшая ошибка C++
небольшая ошибка в чем дело? C++
C++ Ошибка в цикле
Ошибка в цикле C++
C++ Ошибка в цикле
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
web-raised
6 / 6 / 0
Регистрация: 25.03.2013
Сообщений: 73
05.11.2013, 12:20  [ТС]     Пожалуйста : небольшая ошибка в цикле! #2
Вот фото вывода:
Миниатюры
Пожалуйста : небольшая ошибка в цикле!  
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
05.11.2013, 12:40     Пожалуйста : небольшая ошибка в цикле! #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
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
    int k,score, tmp_score;
    cin>>k;
    score=k*k;
    for (int i=1;i<k/2;i++) {
        for (int j=i;j<=k;j++) {
            tmp_score=k + abs(i-j) - (i*j);
            if (tmp_score<score)
            {
                score=tmp_score;
                cout << i << " " << j << " ";
            }
        }
    }
    cout << score << endl;
    system("pause");
    return 0;
}
А вот теперь хотелось бы узнать, что вы вычисляете так как мне увы ничего не понятно...
web-raised
6 / 6 / 0
Регистрация: 25.03.2013
Сообщений: 73
05.11.2013, 12:42  [ТС]     Пожалуйста : небольшая ошибка в цикле! #4
Задача Mcode Маємо К квадратних плиток. Із них потрібно викласти прямокутник висотою H та шириною W плиток. Варіантів, як ви розумієте, чимало. Але кожен прямокутник має свій код. Цей код вираховується як сума двох величин:

Квадратоподібність=| H-W |

Економічність=К-H*W

Потрібно знайти мінімально можливий код прямокутника.

Технічні умови. Програма Mcode читає з пристрою стандартного введення (клавіатури) єдине число К (1 ≤ K ≤ 106 ). Програма виводить на пристрій стандартного виведення (екран) єдине число – мінімально можливий код прямокутника.

Приклади

Введення


Виведення


Коментар

11


2


Прямокутник 3*3

2


1


Прямокутник 2*1

20


1


Прямокутник 4*5
web-raised
6 / 6 / 0
Регистрация: 25.03.2013
Сообщений: 73
05.11.2013, 12:44  [ТС]     Пожалуйста : небольшая ошибка в цикле! #5
Сверху задача.
cout << i << " " << j << " "; это для проверки
Миниатюры
Пожалуйста : небольшая ошибка в цикле!  
web-raised
6 / 6 / 0
Регистрация: 25.03.2013
Сообщений: 73
05.11.2013, 12:47  [ТС]     Пожалуйста : небольшая ошибка в цикле! #6
Ilot, Там некоторое лишнее. Например n++ после первого цикла это для експеримента. пробовал заменять , чтобы не j=i , а паралельно i++ вести n++ и уже j=n.
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
05.11.2013, 12:49     Пожалуйста : небольшая ошибка в цикле! #7
Так-с смотрите при i = 3 j = 11 score = -14...
при i = 4 j = 7 score = -14...
и только при i = 4 j = 8 score = -17
Т.е. tmp_score<score. Какие вопросы?
Цитата Сообщение от web-raised Посмотреть сообщение
Ilot, Там некоторое лишнее. Например n++ после первого цикла это для експеримента. пробовал заменять , чтобы не j=i , а паралельно i++ вести n++ и уже j=n.
Уже убрал...
web-raised
6 / 6 / 0
Регистрация: 25.03.2013
Сообщений: 73
05.11.2013, 12:51  [ТС]     Пожалуйста : небольшая ошибка в цикле! #8
Там много лишнего:
n++
cout<<h<<" "<<w<<" ";
Всё для проверки.
Первая задача на рисунке.
Миниатюры
Пожалуйста : небольшая ошибка в цикле!  
web-raised
6 / 6 / 0
Регистрация: 25.03.2013
Сообщений: 73
05.11.2013, 12:54  [ТС]     Пожалуйста : небольшая ошибка в цикле! #9
Ilot, Сума i+j не должна выходить за K плиток. Ошибочка. Код только додатний.
Поставить чтобы делалось вычисление кода в условии (if (i+j)<=k) {} ) ?
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
05.11.2013, 12:59     Пожалуйста : небольшая ошибка в цикле! #10
Сперва был дан код, а об условиях задачи ничего не говорилось.
Вы бы не могли перевести сей трактат на великий могучий, а то я в иностранных языках как енот полоскун в квантовой электродинамике...
SatanaXIII
05.11.2013, 13:11
  #11
 Комментарий модератора 
web-raised, пункт 5.5 Правил: Нельзя дублировать темы.

Во-вторых (пункт 1.4) официальными языками форума являются русский и английский языки. Вы конечно вольны писать и каком-либо другом языке, но это существенно снижает вероятность ответа на заданный в теме вопрос.
web-raised
6 / 6 / 0
Регистрация: 25.03.2013
Сообщений: 73
05.11.2013, 18:43  [ТС]     Пожалуйста : небольшая ошибка в цикле! #12
Имеем К квадратных плиток. Из них нужно выложить прямоугольник высотой H и шириной W плиток. Вариантов , как вы понимаете , немало. Но каждый прямоугольник имеет свой ​​код. Этот код вычисляется как сумма двух величин :

Квадратоподибнисть = | H - W |

Экономичность = К - H * W

Нужно найти минимально возможное код прямоугольника .

Технические условия. Программа Mcode читает с устройства стандартного ввода (клавиатуры ) единственное число K ( 1 ≤ K ≤ 106). Программа выводит на устройство стандартного вывода (экран) единственное число - минимально возможный код прямоугольника .
Ввод и вывод уже ясны.

Добавлено через 55 секунд
Ilot, Прямокутник=Прямоугольник

Добавлено через 46 минут
up!

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

Добавлено через 21 минуту
Помогите же!
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
06.11.2013, 09:47     Пожалуйста : небольшая ошибка в цикле! #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream.h>
 
int main()
{
int k;
cin >> k;
 
int squaresidb4vsllvbls, economy, code=k;
 
for(int i=k; i>0; i--)
  {
  if(!(k%i))
    {
    squaresidb4vsllvbls = abs(i-k/i);
    economy = k - i * k/i;
    if(code > squaresidb4vsllvbls + economy)
      code = squaresidb4vsllvbls + economy;
    }
  }
cout << "Min code = " << code << endl;
cin.ignore(2);
return 0;
}
С вас пиво.
web-raised
6 / 6 / 0
Регистрация: 25.03.2013
Сообщений: 73
06.11.2013, 10:27  [ТС]     Пожалуйста : небольшая ошибка в цикле! #14
SatanaXIII, Простите , но задача поменяна в корне и решена не верно. У меня она верна, а нужно всего лишь устранить ошибку в циклах. Там нужно вот (на картинке):
Миниатюры
Пожалуйста : небольшая ошибка в цикле!  
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
06.11.2013, 10:40     Пожалуйста : небольшая ошибка в цикле! #15
Цитата Сообщение от web-raised Посмотреть сообщение
задача поменяна в корне
Вот хотелось бы услышать формулировку.
Цитата Сообщение от web-raised Посмотреть сообщение
но задача поменяна в корне и решена не верно
Решена неверно или не подходит под нынешнее условие?
Цитата Сообщение от web-raised Посмотреть сообщение
Там нужно вот (на картинке)
Это ни разу непонятно как именно нужно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2013, 12:04     Пожалуйста : небольшая ошибка в цикле!
Еще ссылки по теме:

Небольшая ошибка в коде C++
Небольшая ошибка в программе C++
C++ Ошибка в цикле while

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

Или воспользуйтесь поиском по форуму:
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
06.11.2013, 12:04     Пожалуйста : небольшая ошибка в цикле! #16
ТС вам бы сперва научится формулировать задачи иначе их будет очень тяжело решать не только вам (это не важно), но и тем кто все-таки решит вам помочь.
Не уверен, что вам на самом деле нужно, но вот эта программа выводит последовательность как указанно вами на скрине:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using std::cin;
using std::cout;
int main()
{
    int k;
    cin>>k;
    for (int i=1;i<k/2;i++)
        for (int j=i;j<=k;j++)
            cout << i << " " << j << " ";
    system("pause");
    return 0;
}
Yandex
Объявления
06.11.2013, 12:04     Пожалуйста : небольшая ошибка в цикле!
Ответ Создать тему
Опции темы

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