Re[10]: задачи по Visual C++ 6
От: Кодт Россия  
Дата: 07.10.05 10:59
Оценка:
Здравствуйте, desperado_gmbh, Вы писали:

_>1. Получить с клавиатуры значения n1 и n2.

_>2. Для каждого A из диапазона [n1,n2] выполнить следующие действия:
_>2.1. Найти сумму его делителей B.
_>2.2. Если B принадлежит [n1,n2], то выполнить следующие действия:
_>2.2.1. Для числа B найти сумму его делителей C.
_>2.2.2. Если C=A, то вывести A и B.

_>Кстати, проверить число на принадлежность диапазону можно всего двумя сравнениями, без циклов.


И ещё кстати, если A==B (совершенное число — дружественное самому себе), то нет смысла вычислять C:
Поскольку B=f(A) == A, то C=f(B) == f(A) == B == A.
Эту проверку можно вставить, скажем, сразу после 2.1.
Перекуём баги на фичи!
Re[11]: задачи по Visual C++ 6
От: Radmir Россия  
Дата: 07.10.05 11:00
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Radmir, Вы писали:


R>>поэтому шаг 1

R>>Запросить у пользователя n1 и n2
R>>

R>>теперь нам надо найти суммы делителей для всех A из этого диапазона.
R>>Для хранения этих сумм нам соответственно нужен массив. т.к. для каждого числа суммы делителей разные.
R>>Вохможно два варианта решиения либо динамически выделить память для этого массива либо создать заранее довольно большой массив.
R>>Воспользвумся вторым вариантом т.к. он проще.

К>Массив нам не нужен!

К>Чтобы посчитать сумму делителей, можно находить их по одному и тут же суммировать.
Как я помнь дружественные числа это числа суммы делителей которых равны.
Соответственно проще всего найти суммы делителей всех чисел из диапазона [n1;n2]
А затем найти те у которых суммы равны.
Т.е. проще всего это сделыть с помощю массива.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Лучше спросить дорогу чем заблудиться
Re[11]: задачи по Visual C++ 6
От: Radmir Россия  
Дата: 07.10.05 11:06
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Radmir, Вы писали:


R>>поэтому шаг 1

R>>Запросить у пользователя n1 и n2
R>>

R>>теперь нам надо найти суммы делителей для всех A из этого диапазона.
R>>Для хранения этих сумм нам соответственно нужен массив. т.к. для каждого числа суммы делителей разные.
R>>Вохможно два варианта решиения либо динамически выделить память для этого массива либо создать заранее довольно большой массив.
R>>Воспользвумся вторым вариантом т.к. он проще.

К>Массив нам не нужен!

К>Чтобы посчитать сумму делителей, можно находить их по одному и тут же суммировать.
Блин!
точно ошибся.
Массив нам не нужен.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Лучше спросить дорогу чем заблудиться
Re[11]: задачи по Visual C++ 6
От: desperado_gmbh http://www.livejournal.com/users/tolstopuz
Дата: 07.10.05 11:19
Оценка: :)
Здравствуйте, Кодт, Вы писали:

К>И ещё кстати, если A==B (совершенное число — дружественное самому себе), то нет смысла вычислять C:

К>Поскольку B=f(A) == A, то C=f(B) == f(A) == B == A.
К>Эту проверку можно вставить, скажем, сразу после 2.1.

Да, у нее вначале так и было. Но, как известно, it is easier to make correct code fast than to make fast code correct
Re[12]: задачи по Visual C++ 6
От: Katenok  
Дата: 07.10.05 11:35
Оценка:
а-ааа все вкоруг такие умные.. а я опять затупила.. в первоначальном коде, в чем я напутала???? в воде n1 n2, и в циклах со скобкамит заблудилась??? или там вообще полная бяка??? я счас точно с ума сойду, первые две задачки по сравнению с этой сказка...
Re[13]: задачи по Visual C++ 6
От: Radmir Россия  
Дата: 07.10.05 11:45
Оценка:
Здравствуйте, Katenok, Вы писали:

K>а-ааа все вкоруг такие умные.. а я опять затупила.. в первоначальном коде, в чем я напутала???? в воде n1 n2, и в циклах со скобкамит заблудилась??? или там вообще полная бяка??? я счас точно с ума сойду, первые две задачки по сравнению с этой сказка...

Не отчаивася. прорвемся.
Теперь у нас есть "рабочий" алгоритм от "desperado_gmbh"

Вставляем алогритм в текст программы в виде коментариев и для каждой операции делаем соответствующий код на С++
#include <math.h>
#include <iostream>
using namespace std;
#include <stdio.h>
K>#include <windows.h>

void main ()
{
    int n1, n2;
        //1. Получить с клавиатуры значения n1 и n2.
        CharToOem("Введите значение n1  ",str);
        cout<<str;
        cin>>n1;
        CharToOem("Введите значение n2  ",str);
        cout<<str;
        cin>>n2;
        //2. Для каждого A из диапазона [n1,n2] выполнить следующие действия:
        for (int A=n1; A<=n2; A++)
        {
            //продолжи дальше сама
            //2.1. Найти сумму его делителей B.
            
            //2.2. Если B принадлежит [n1,n2], то выполнить следующие действия:
            //2.2.1. Для числа B найти сумму его делителей C.
            //2.2.2. Если C=A, то вывести A и B.
        }
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Лучше спросить дорогу чем заблудиться
Re[11]: задачи по Visual C++ 6
От: desperado_gmbh http://www.livejournal.com/users/tolstopuz
Дата: 07.10.05 11:53
Оценка: 3 (1) :)
Здравствуйте, Кодт, Вы писали:

К>Массив нам не нужен!


Ну почему же

map(lambda x:[x[0],x[1]],filter(lambda x: (x[0]==x[2])&(x[0]<=x[1]),map(lambda y:[y[0],y[1],sum(filter(lambda x:y[1]%x==0,range(1,y[1])))],filter(lambda x:x[1]<3000,map(lambda y:[y,sum(filter(lambda x:y%x==0,range(1,y)))],range(1,3000))))))
Re[12]: задачи по Visual C++ 6
От: Кодт Россия  
Дата: 07.10.05 13:39
Оценка: 6 (1)
Здравствуйте, desperado_gmbh, Вы писали:

К>>Массив нам не нужен!

_>Ну почему же
_>map(lambda x:[x[0],x[1]],filter(lambda x: (x[0]==x[2])&(x[0]<=x[1]),map(lambda y:[y[0],y[1],sum(filter(lambda x:y[1]%x==0,range(1,y[1])))],filter(lambda x:x[1]<3000,map(lambda y:[y,sum(filter(lambda x:y%x==0,range(1,y)))],range(1,3000))))))

Не пугай девушку! Ты бы ещё на K написал, или на APL.

Впрочем, пугать так пугать!

Фильтровать необязательно. До последнего момента можно пользоваться полноразмерными массивами, заменяя фильтрацию умножением на 0.

В языках APL и K можно выполнять операции скаляр*скаляр, скаляр*вектор, вектор*вектор (поэлементно).
Итак... на некоем псевдоязыке, который легко переводится на реально существующие.
# базовые функции: векторы возрастающих компонентов, векторы одинаковых компонентов
range0(x) = [0..x-1]
rangexy(x,y) = [x..y-1] = range0(y-x) + x
ones(x) = [1,1,...1] x штук

ones1(a) = ones(a-1)          # массив из a-1 единиц
range1(a) = range0(a-1) + 1   # [1..a-1]
ns1(a) = ones1(a)*a           # массив из a-1 чисел a

reminders(a) = ns1(a) mod range1(a)            # остатки от деления a на 1..a-1
maskreminders(a) = reminders(a) == 0           # там, где остатки нулевые, в массиве масок будут 1, остальное - 0
divisors(a) = range1(a) * maskreminders(a)     # тем самым мы оставим ненулевыми только подлинные делители
sumdiv(a) = fold + 0 divisors(a)               # сумма делителей

sumdiv2(a) = sumdiv(sumdiv(a))
friendly(a) = (a == sumdiv2(a)                 # проверка, есть ли у числа a друг

rangenm(nm) = rangexy(nm[0],nm[1]+1)           # nm - массив из двух чисел, n1,n2; результат функции - [n1..n2]
maskfriends(nm) = map friendly rangexy(nm)     # массив, где 1 отмечают позиции дружественных чисел

friends(nm) = rangenm(nm) * maskfriends(nm)    # массив, где ненулевые числа имеют друзей

# можно ещё продолжить, отфильтровав дружественные числа, лежащие вне диапазона n1,n2...

Как видим, каждая из функций является композицией над одним и тем же аргументом. Так что скомбинировать их в одну мега-функцию — труда не составит.
Единственное, что здесь неприятно, это повтор функции sumdiv. В языке APL, насколько я помню, функций высшего порядка нет (банальные комбинаторы map и fold — не в счёт), но можно просто скопировать её формулу несколько раз.
Перекуём баги на фичи!
Re[12]: задачи по Visual C++ 6
От: Katenok  
Дата: 07.10.05 17:30
Оценка:
Хочу вернуться еще к вот этой задачке, я добавила в код флаги, и убрала то что было лишним, но у меня она почему то считает не с первого элемента а с 0, т.е. в последовательности dddRrrr$ первая R находится на 5 месте..

//Задача  В последовательность введенных символов (последний '$') определить порядковый 
//номер первой буквы R (с учетом верхнего/нижнего регистров)

#include<stdio.h>
#include<iostream>
using namespace std;
void main()
{ 
int c, ner=0, r=0, pornr=0;
bool z=false;
puts("Введите последовательность символов, заканчивающуюся '$'"); 
while((c=getchar())!='$')
  switch(c)
{
case 'r':  case 'R': pornr=+ner; z=true;
    break;

default: ner++;
}
printf("\nБыло введено:\nБукв 'R': %3d\n", pornr);}
Re[11]: задачи по Visual C++ 6
От: Katenok  
Дата: 07.10.05 17:48
Оценка:
А это код моей злосчастной задачки.. вот таким он у меня получается

#include <math.h>
#include <iostream>
using namespace std;
#include <stdio.h>
#include <windows.h>

void main ()

{
int n1, n2;
char str[128];
CharToOem("Введи значение n1  ",str);cout<<str;cin>>n1;
CharToOem("Введи значение n2  ",str);cout<<str;cin>>n2;

for (int A=n1; A<=n2; A++)
//2. Для каждого A из диапазона [n1,n2] выполнить следующие действия:
            //продолжи дальше сама
            //2.1. Найти сумму его делителей B.
{
    int res=0;
    int B=0;

    
    {for (int i=1;i<A;i++)
    { if (A%i==0) {B=B+i;}}
  
    {if (B==A) {res=1;}}
    return res;}
 //2.2. Если B принадлежит [n1,n2], то выполнить следующие действия:
    {for (int B=n1; B<=n2; B++)}
    //2.2.1. Для числа B найти сумму его делителей C.
       int C=0;
        {
      for (int i=1;i<B;i++)
    {
        if (B%i==0) {C=C+i;}
    }
      {    if (C==B) {res=1;}
      return res;}
    } }

//2.2.2. Если C=A, то вывести A и B.
{
if (C==A) printf("\nNumber %d drug\n",A,B);
} }
Re[12]: задачи по Visual C++ 6
От: Radmir Россия  
Дата: 08.10.05 03:35
Оценка:
Здравствуйте, Katenok, Вы писали:

K> А это код моей злосчастной задачки.. вот таким он у меня получается


K>
K>#include <math.h>
K>#include <iostream>
K>using namespace std;
K>#include <stdio.h>
K>#include <windows.h>

K>void main ()

K>{
K>int n1, n2;
K>char str[128];
K>CharToOem("Введи значение n1  ",str);cout<<str;cin>>n1;
K>CharToOem("Введи значение n2  ",str);cout<<str;cin>>n2;

K>for (int A=n1; A<=n2; A++)
K>//2. Для каждого A из диапазона [n1,n2] выполнить следующие действия:
K>            //продолжи дальше сама
K>            //2.1. Найти сумму его делителей B.
K>{
K>    int res=0;
K>    int B=0;

K>    {for (int i=1;i<A;i++) // Для чего {
K>    { if (A%i==0) {B=B+i;}}
  
K>    {if (B==A) {res=1;}} // Объясни эту строку
K>    return res;}  // куда ты возвращаешь res ?
K> //2.2. Если B принадлежит [n1,n2], то выполнить следующие действия:
K>    {for (int B=n1; B<=n2; B++)} // Для чего внешние {...}
K>    //2.2.1. Для числа B найти сумму его делителей C.
K>       int C=0;
K>        {
K>      for (int i=1;i<B;i++)
K>    {
K>        if (B%i==0) {C=C+i;}
K>    }
K>      {    if (C==B) {res=1;}
K>      return res;} // куда ты возвращаешь res ?
K>    } }

K>//2.2.2. Если C=A, то вывести A и B.
K>{
K>if (C==A) printf("\nNumber %d drug\n",A,B);
K>} }
K>


Некоторые замечания:
1.
"{...}" называются операторными с помощью них сосдаются так называемые составные операторы
например возмем слеующий код:
int i;
int b;
for ( i=1;i<A;i++)
    B=B+i;
    C=C+i;

в этом случае в цикле будет выполнятся только строка B=B+i;
а стока C=C+i; выполнится только после того как пройдет весь цикл.
для того чтобы в цикле выполнялись обе стоки надо их заключить в операторные скобки:

int i;
int b;
for ( i=1;i<A;i++)
{
    B=B+i;
    C=C+i;
}

теперь внимательно посмотри на свой код и расставть опреаторные скобки правильно.
2. return это точка выхода из функции т.е. если при выполнении функции мы "натыкаемся" на return то это комманда выхода из функции
например
void main ()
{
    int i;
    // ...
    // здесь мы задем зачение i
    //...
    //    если i == 0 то выходим из программы
    if (i == 0)
        return;
    // ...
    // если не равна то работаем дальше
}

следующий момент
Ты можешь только возврящать переменные того типа который указан в качестве возврящаемого параметра
например:
если ты пишешь
  int main()
    {
    //...

то соответственно ты должна возвращать только тип int
если
  void main()
    {
    //...

то соответственно ты не можешь возврашать какие-либо значения то-есть надо писать просто return;

3. Функция main является основной "функцией" программы и если ты внутри нее вызываешь return, то это означает завершение работы программы соответственно возвращаемые тобой значения ни кем не обработаются (по правде они обрабатываются, но пока считай что они ни кем не обрабатываются). Так что записть внутри main return res; не имеет смысла.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Лучше спросить дорогу чем заблудиться
Re[13]: задачи по Visual C++ 6
От: Radmir Россия  
Дата: 08.10.05 04:29
Оценка:
Здравствуйте, Katenok, Вы писали:

K>Хочу вернуться еще к вот этой задачке, я добавила в код флаги, и убрала то что было лишним, но у меня она почему то считает не с первого элемента а с 0, т.е. в последовательности dddRrrr$ первая R находится на 5 месте..


K>
K>//Задача  В последовательность введенных символов (последний '$') определить порядковый 
K>//номер первой буквы R (с учетом верхнего/нижнего регистров)

K>#include<stdio.h>
K>#include<iostream>
K>using namespace std;
K>void main()
K>{ 
K>int c, ner=0, r=0, pornr=0;
K>bool z=false;
K>puts("Введите последовательность символов, заканчивающуюся '$'"); 
K>while((c=getchar())!='$')
K>  switch(c)
K>{
K>case 'r':  case 'R': pornr=+ner; z=true; // напиши pornr=ner так понятнее :)
K>    break;

K>default: ner++;
K>}
K>printf("\nБыло введено:\nБукв 'R': %3d\n", pornr);} // мне кажется должно быть написано "позиция первой буква R ..."
K>

Во первых программисты всегда считают с 0
Во вторых В этом плане в алгоритме работы все правильно. просто выводи pornr+1
но вот в поиске символа закралась ошибка.
попробуй ввести например строку dddRrrrdr$
Ты фраг то выставляешь. Но вот вопрос где ты его проверяешь?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Лучше спросить дорогу чем заблудиться
Re[14]: задачи по Visual C++ 6
От: Katenok  
Дата: 08.10.05 11:38
Оценка:
А-а-аа мне дурно... я зарылась в этих скобочках.. если я правильно поняла то вот так...


//2.1. Найти сумму его делителей B.
K>{
K>    int res=0;
K>    int B=0;

K>    for (int i=1;i<A;i++)  
L>    K>    { if (A%i==0) B=B+i;}
  
K>    {if (B==A) res=1;} // Если В=А то запоминаем этот результат
L>    
K>    return ;}  // в начало цикла?
K> //2.2. Если B принадлежит [n1,n2], то выполнить следующие действия:
K>    for (int B=n1; B<=n2; B++) 
K>    //2.2.1. Для числа B найти сумму его делителей C.
K>       int C=0;
K>        {
K>      for (int i=1;i<B;i++)
K>    {
K>        if (B%i==0) C=C+i; }
K>      {    if (C==B) res=1;
K>      return ;} // в начало этого цикла
K>    } }

K>//2.2.2. Если C=A, то вывести A и B.
K>{
K>if (C==A) printf("\nNumber %d drug\n",A,B);
K>} }
K>


А в другой задаче где ошибка в поиске символа ??? Добавила в выводе выводи pornr+1
и вроде все правильно считает...
Флаг проверяю когда прога найдет R...
Re[15]: задачи по Visual C++ 6
От: Radmir Россия  
Дата: 08.10.05 12:00
Оценка:
Здравствуйте, Katenok, Вы писали:

K>А-а-аа мне дурно... я зарылась в этих скобочках.. если я правильно поняла то вот так...

Да со скобочками у тебя проблема

K>
K>//2.1. Найти сумму его делителей B.
K>>{
K>>    int res=0;
K>>    int B=0;

K>>    for (int i=1;i<A;i++)  // начинается цикл но ГДЕ он заканчивается?
K>    { if (A%i==0) B=B+i;} 
  
K>>    {if (B==A) res=1;} // Если В=А то запоминаем этот результат

K>>    return ;}  // в начало цикла? return выход из программы для перехода на начало цикла continue;
K>> //2.2. Если B принадлежит [n1,n2], то выполнить следующие действия:
K>>    for (int B=n1; B<=n2; B++) // начинается цикл но ГДЕ он заканчивается?
K>>    //2.2.1. Для числа B найти сумму его делителей C.
K>>       int C=0;
K>>        {
K>>      for (int i=1;i<B;i++)
K>>    {
K>>        if (B%i==0) C=C+i; }
K>>      {    if (C==B) res=1;
K>>      return ;} // в начало этого цикла
K>>    } }

K>>//2.2.2. Если C=A, то вывести A и B.
K>>{
K>>if (C==A) printf("\nNumber %d drug\n",A,B);
K>>} }
K>>
K>


для простоты понимания попробуем переформатировать твой код вот так:
void main()
{ 
    int res=0;
    int B=0;

    for (int i=1;i<A;i++)  // начинается цикл но ГДЕ он заканчивается?
    {
        if (A%i==0) B=B+i;
    } 

    {
        if (B==A) res=1;
    } // Если В=А то запоминаем этот результат
    return;
}  // в начало цикла? return выход из программы для перехода на начало цикла continue;
//2.2. Если B принадлежит [n1,n2], то выполнить следующие действия:
for (int B=n1; B<=n2; B++) // начинается цикл но ГДЕ он заканчивается?
//2.2.1. Для числа B найти сумму его делителей C.
int C=0;
{
    for (int i=1;i<B;i++)
    {
        if (B%i==0) C=C+i;
    }
    {
        if (C==B) res=1;
        return ;
    } // в начало этого цикла
}
}
//2.2.2. Если C=A, то вывести A и B.
{
    if (C==A) printf("\nNumber %d drug\n",A,B);
}
}

Может при таком форматировании поможет

K>А в другой задаче где ошибка в поиске символа ??? Добавила в выводе выводи pornr+1

K>и вроде все правильно считает...
K>Флаг проверяю когда прога найдет R...
Ты мой пример попробывала?
работает все правильно?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Лучше спросить дорогу чем заблудиться
Re[16]: задачи по Visual C++ 6
От: Katenok  
Дата: 08.10.05 13:49
Оценка:
R>Ты мой пример попробывала?
R>работает все правильно?

Да с твоим примером работает правильно, а вот в чем фишка не поняла
Re[16]: задачи по Visual C++ 6
От: Katenok  
Дата: 08.10.05 13:54
Оценка:
Вот так получается при упрощенном коде, но ведь у меня так они раньше и стояли??? или опять что-то не то
void main()
{ 
    int res=0;
    int B=0;

   { for (int i=1;i<A;i++)  // начинается цикл но ГДЕ он заканчивается?
    {
        if (A%i==0) B=B+i;
    } 

    {
        if (B==A) res=1;
    } 
    continue;
}  } // вот тут он заканчивается

{for (int B=n1; B<=n2; B++) // начинается цикл но ГДЕ он заканчивается?

int C=0;
{
    for (int i=1;i<B;i++)
    {
        if (B%i==0) C=C+i;
    }
    {
        if (C==B) res=1;
continue;
    }} // вот тут заканчивается этот цикл 
}
}
//2.2.2. Если C=A, то вывести A и B.
{
    if (C==A) printf("\nNumber %d drug\n",A,B);
}
}
Re[15]: задачи по Visual C++ 6
От: Radmir Россия  
Дата: 08.10.05 14:14
Оценка:
Количество открывающихся "{" и закрывающихся "}" скобок должно быть одинаково. У тебя их разное количество.
Давай попробубуем заново написать код программы.
Будем пользоваться следующими правилами:
1. Все "{" и "}" будем комментировать для чего мы их ставим
2. Выравникать каждую "{" и "}"
{
  // блок 1
  {
    // блок 2
    {
       // блок 3
    }
  }

  { 
       // блок 4
  }

}


2. тело цикла должно начинаться с "{" и заканчиваться "}"

т.е. например
for (int i=1;i<A;i++)  
{  //начало тела цикла
   // здесь идет много строк кода
   // ...
   // вложенный цикл
   for (int B=n1; B<=n2; B++) 
   {//начало тела вложенного цикл цикла
      // здесь идет много строк кода
      // выполняющегося во вложенном цикла
   }// конец тела вложенного цикла

}// конец тела цикла

3. тоже самое должно быть и с условиями

if (B%i==0)
{ // начало блока который выполняется если условие верно

  // здесь идет код

} // конец блока условия
else
{// начало блока который выполняется если условие нкеверно

  // здесь идет код

}конец блока else

Попробуй написть свой код используя эти правила должно все получиться


Теперь по поводу задачи с R
посмотрим внимательно твой код:

У тебя все правильно толко надо вставить проверку флага.
Я тебе покажу где
//Задача  В последовательность введенных символов (последний '$') определить порядковый 
//номер первой буквы R (с учетом верхнего/нижнего регистров)
#include<stdio.h>
#include<iostream>
using namespace std;
void main()
{ 
int c, ner=0, r=0, pornr=0;
bool z=false;
puts("Введите последовательность символов, заканчивающуюся '$'"); 
while(((c=getchar())!='$') && (z == false)) // или здесь
  switch(c)
{
case 'r':  case 'R': if (z == false) {pornr=+ner; z=true;} // или здесь
    break;

default: ner++;
}
printf("\nБыло введено:\nБукв 'R': %3d\n", pornr);}


если у тебя не будет проверки флага то в следующей последовательности

"aRaaaaR"
результат будет не 1(если считать с 0) а 5
Лучше спросить дорогу чем заблудиться
Re[16]: задачи по Visual C++ 6
От: Katenok  
Дата: 08.10.05 15:37
Оценка:
Думаю проверку флага надо вставить в первом случае..

а по поводу другой, у меня ошибка только в неправильных скобочках, и нехватке else??
Re[17]: задачи по Visual C++ 6
От: desperado_gmbh http://www.livejournal.com/users/tolstopuz
Дата: 09.10.05 06:39
Оценка:
Здравствуйте, Katenok, Вы писали:

K>а по поводу другой, у меня ошибка только в неправильных скобочках, и нехватке else??


Еще не нужен res и все операции с ним — все равно он вообще нигде не используется. На шаге 2.2 ("ЕСЛИ") почему-то вместо if написан for. Шаг 2.2.2 почему-то стоит не рядом с 2.2.1, а после завершения цикла. Остальную кучку мелких ошибок покажу после исправления крупных.

Но идея писать в комментарии к return, куда надо вернуться, мне нравится. На месте компилятора я бы этот комментарий обязательно прочитал и учел
Re[18]: задачи по Visual C++ 6
От: Katenok  
Дата: 10.10.05 06:18
Оценка:
Вот моя очередная попытка побороть скобки.... мне уже жутко стыдно..

void main ()

{
int n1, n2;
char str[128];
CharToOem("Введите значение n1  ",str);cout<<str;cin>>n1;
CharToOem("Введите значение n2  ",str);cout<<str;cin>>n2;

for (int A=n1; A<=n2; A++)    
    { 
    int B=0;
    for (int i=1;i<A;i++)
        {if (A%i==0) B=B+i;
         else (B==A) printf("\nNumber %d drug\n",A,B);
        }

    for (int B=n1; B<=n2; B++)
        {
        int C=0;
        for (int i=1;i<B;i++)
            {if (B%i==0) C=C+i;
            else (C==A) printf("\nNumber %d drug\n",A,C);
            }
        }
    }      
}
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.