0 / 0 / 0
Регистрация: 14.01.2010
Сообщений: 17

Вопрос по азам C++

14.01.2010, 17:15. Показов 4988. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сам по себе вопрос немного глуповат и звучит по-детски, но он для меня очень важен!
Уже вторую неделю не могу в универе защитить лабу по информатике! Задание заключается в том, чтобы вывести на экран все автоморфные числа из интервала от 1 до 1000!
Слово 'автоморфные' в самом задании расшифровано вот как:
'“Автоморфным” называется число, которое содержится в младших разрядах квадрата этого числа. Примеры “автоморфных” чисел 52 = 25 и 252 =625.'
Вообщем все автоморфные числа в этом интервале - это числа:
1
5
6
25
625

Я сделал цикл, высчитывающий эти результаты вот так:
for(s=0,i=1;i<1000;i++)
{
unsigned long int s,t,ch,n;
s=i*i;
t=s;
for(n=10;n<1000;n=n*10)
{
ch=t%n;
if (ch*ch==t && pow(ch%n,2)==t%(n*10))
cout<<endl<<'Pri i='<<i<<' Kvadrat raven = '<<t;
}
}

Но прога работает несовсем правильно, естественно, что затык именно в условии записанном в if(...)
Помогите, кто-нибудь, плиз, как его правильно записать!!!
Спасибо, зараннее!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2010, 17:15
Ответы с готовыми решениями:

Хелп по азам openGL
Сделал как описано в https://www.cyberforum.ru/opengl/thread178167-page2.html всё скачал, позакидал по папкам пытался и пустом,...

Теоретические вопросы по азам С++
1. в каких случаях надо писать конструктор по умолчанию? Если нету своего констуктора с аргументами. 2. когда нужно реализовать самому...

НУжна информация по азам проектирования
Пытаюсь разработать проект в Rational Rose. От чего отталкиваться при разработке классов, а затем и обьектов в диаграмме состояний...

33
0 / 0 / 0
Регистрация: 14.01.2010
Сообщений: 17
17.01.2010, 15:31  [ТС]
Студворк — интернет-сервис помощи студентам
Все, разобрался, нужно было переменной ch присвоить тип не int, a long int, в неразбитой функции так и было!
Спасибо!
0
0 / 0 / 0
Регистрация: 14.01.2010
Сообщений: 17
17.01.2010, 21:08  [ТС]
Итак, надеюсь, пока что последний вопрос!
Новое задание на сортировку массива!
Вот текст из задания:
'Задан массив из М действительных чисел (М может быть задано не более 25 ).
Отрицательные числа в заданном массиве упорядочить по убыванию их значений.
Взаимное расположение отрицательных и положительных чисел сохранить.'

Поясню. Положительные члены массива трогать не нужно, нужно отсортировать между собой только отрицательные члены массива, при этом взаимное расположение отрицательных и положительных членов массива необходимо оставить неизменным! Пример:
Вводим массив, например, из 7 членов:
5 -4 0 -6 7 -2 1
После сортировки он должен выглядить вот как:
5 -2 0 -4 7 -6 1

Программу надо решить для статического и динамического распределения памяти! Для статики я записал ко вот так:
Code
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
#include<iostream.h>
#include<conio.h>
void vvod(int,int*);
void analiz(int,int*);
void vivod(int,int*);
int main()
{
const int n=25;
int a[n];
int kol;
char otv;
do
  {
  clrscr();
  cout<<'Vvedite kollichestvo elementov massiva (max=25)'<<endl;
  cin>>kol;
  if (kol>n) {cout<<'Previshenie razmerov massiva!'<<endl; continue;}
 
  vvod(kol,a); //vvod elementov massiva
  analiz(kol,a); //analiz i sortirovka
  vivod(kol,a); //vivod otsortirovannih elementov
  cout<<endl<<'Continue?: ';
  cin>>otv;
  }
while(otv=='y');
getch();
return 1;
}
 
void vvod(int kol, int a[])
{
for (int i=0;i<kol;i++) cin>>a[i];
}
 
void analiz(int kol, int a[])
{
int i;
 for (i=0;i<kol;i++)
   {
   int imax=i;
   if (a[i]>=0) continue;
    for (int j=i;j<kol;j++)
     {
     if (a[j]>=0) continue;
     if (a[j]>a[imax]) imax=j;
     }
   int b=a[i];
   a[i]=a[imax];
   a[imax]=b;
   }
}
 
void vivod(int kol, int a[])
{
for (int i=0;i<kol;i++) cout<<a[i]<<' '
}
А как реализовать ту же прогу но при динамическом распределении памяти? Преподша сказала, что изменится функция main и функция ввода элементов массива, но я сделал прогу так (изменился только main), может я что то упустил?:
Code
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
#include<iostream.h>
#include<conio.h>
void vvod(int,int*);
void analiz(int,int*);
void vivod(int,int*);
int main()
{
char otv;
do
  {
  clrscr();
  const int n=25;
  cout<<'Vvedite kollichestvo elementov massiva (max=25): ';
  int kol;
  cin>>kol;
    if (kol>n)
      {
      cout<<'Previshenie razmerov massiva!'<<endl;
      continue;
      }
  int *a=new int[kol];
  vvod(kol,a); //vvod elementov massiva
  analiz(kol,a); //analiz i sortirovka
  vivod(kol,a); //vivod otsortirovannih elementov
  cout<<endl<<'Continue?: ';
  cin>>otv;
  }
while(otv=='y');
getch();
return 1;
}
 
void vvod(int kol, int a[])
{
for (int i=0;i<kol;i++) cin>>a[i];
}
 
void analiz(int kol, int a[])
{
int i;
 for (i=0;i<kol;i++)
   {
   int imin=i;
   if (a[i]>=0) continue;
    for (int j=i;j<kol;j++)
     {
     if (a[j]>=0) continue;
     if (a[j]<a[imin]) imin=j;
     }
   int b=a[i];
   a[i]=a[imin];
   a[imin]=b;
   }
}
 
void vivod(int kol, int a[])
{
for (int i=0;i<kol;i++) cout<<a[i]<<' '
}
0
maXmo
22.01.2010, 13:00
забыл за собой почистить
cin>>otv;
delete[] a;
0 / 0 / 0
Регистрация: 14.01.2010
Сообщений: 17
22.01.2010, 20:11  [ТС]
Спасибо! А подскажите, как оформить передачу параметров и обращение к функции при использовании двумерных массивов! Спасибо заранее
0
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
22.01.2010, 21:15
Вообще-то под каждый вопрос в форумах принято заводить новую тему. Если ответ на вопрос найден, то тема считается закрытой. По поводу передачи многомерных массивов, например целых чисел (int) используется int*

Например,
Code
1
2
3
4
5
6
7
8
9
void print_myij(int* m, int dim1, int dim2)
{
    for (int i = 0; i < dim1; i++) {
        for (int j = 0; j < dim2; j++)
            cout << m[i*dim2 + j] << '  '
        cout << '
'
    }
}
Для вызова этой функции используется следующий код:
Code
1
2
3
4
5
6
7
8
int main()
{
    int v[3][5] =
        {{0,1,2,3,4},
         {10,11,12,13,14},
         {20,21,22,23,24}};
    print_mij(&v[0][0], 3, 5);
}
Хотел бы сразу отметить, что код полностью взят из книги Бьерна Страуструпа 'Язык программирования С++'. Настоятельно рекомендую купить эту книгу и держать под рукой.

Удачи, Владимир

P.S. В нормальной жизни обчно нет необходимости работать с массивами, используется STL шаблон vector.
0
0 / 0 / 0
Регистрация: 14.01.2010
Сообщений: 17
22.01.2010, 23:06  [ТС]
Спасибо.... но вот опять проблема... (как всегда )
Итак нужно написать программу, которая для введенной с клавиатуры матрицы, запишет на место отрицательных элементов нули, а на место положительных единицы. И выведет нижнюю треугольную матрицу.

То есть вводим матрицу:

1 2 3 4
5 6 7 8
9 0 -9 -8
-7 -6 -5 -4
Она преобразуется в:
1 1 1 1
1 1 1 1
1 1 0 0
0 0 0 0
Далее выведет нижнюю треуголную матрицу (я рассматриваю основную диагональ, поэтому результат будет выглядеть вот так):
1
1 1
0 0 0
--------
Я реализовал эту задачу так:
Code
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
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
//void vvod(int,int,int(*)[]);
//void analiz(int,int,int(*)[]);
//void vivod(int,int,int(*)[]);
void main()
{
char otv;
do
  {
  clrscr();
  const int nstr=10, nstb=10;
  int matr[nstr][nstb];
  int i,j;
  cout<<'Vvedi koli4estvo strok i stolbcov massiva: ';
  int ustr, ustb;
  cin>>ustr>>ustb;
    if (ustr>nstr || ustb>nstb)
     {
     cout<<'Nepravilnii diapozon znachenii';
     continue;
     }
  cout<<'Vvedi elementi massiva:'<<endl;
   for (i=0;i<ustr;i++)
    for (j=0;j<ustb;j++)
    cin>>matr[i][j];
   cout<<endl<<'--------------------'<<endl;
   for (i=0;i<ustr;i++)
    {
    for (j=0;j<ustb;j++)
    cout<<setw(4)<<matr[i][j]<<' '
    cout<<endl;
    }
   cout<<endl<<'--------------------'<<endl;
   for (i=0;i<ustr;i++)
    for (j=0;j<ustb;j++)
     {
     if (matr[i][j]<0) matr[i][j]=0;
     else if (matr[i][j]>0) matr[i][j]=1;
     }
 
   for (i=0;i<ustr;i++)
    {
    for (j=0;j<ustb;j++)
    cout<<setw(4)<<matr[i][j]<<' '
    cout<<endl;
    }
    int n;
   cout<<endl<<'--------------------'<<endl;
   for (i=1;i<ustr;i++)
    {
     for (j=0,n=j;n<i;n++)
     cout<<setw(4)<<*(*(matr+i)+n)<<' '
    cout<<endl;
    }
 
  cout<<'Continue? (y/n): ';
  cin>>otv;
  }
while (otv=='y');
getch();
}
На практике же нужно функцию main разбить на 3 функции - функцию ввода, вывода элементов матрицы и функцию, реализующую поставленную задачу!
У меня не получается, то ли дело в параметрах, то ли дело в обращении к функции, но не работает!
Даже после твоего совета, вроде процесс компиляции проходит успешно, но вот при попытке запустить программу linker выдет ошибку:
undefined symbol vvod(int,int,...и т.д.)
и так для каждой функции. Что мне делать?

P.s. Задачу нужно решить для статического и динамического распределния памяти. В данном случае, прошу прибегать только к синтаксисам статики! Опять же спасибо, зараннее
0
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
22.01.2010, 23:48
Ты никогда не пробовал дебаггер для отладки программы, иногда ооочень помогает выявить ошибку в логике?
0
0 / 0 / 0
Регистрация: 14.01.2010
Сообщений: 17
23.01.2010, 10:52  [ТС]
Блин, если бы я еще знал, что это такое...
0
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
23.01.2010, 20:52
Дебаггер = debugger, если правильно переводить, то это отладчик, обычно любая современная (и не очень) среда разработки предложений содержит в себе отладчик и возможность запускать программу в отладочном режиме, где ты сможешь пошагово пройтись по программе и просмотреть состояние переменных в любой момент времени. Готов спорить, товоя среда тоже содержит поддержку режима отладки (debug mode) и точко останова на интересующем тебя операторе (breakpoints).
0
0 / 0 / 0
Регистрация: 14.01.2010
Сообщений: 17
23.01.2010, 21:59  [ТС]
Да это то я понимаю, вроде еще не полнуй дурак ))
Но вот как его заюзать и т.д.... бррр... попытаюсь разобраться, но пока что то не очень
0
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
23.01.2010, 22:27
Я бы тебе мог конечно рассказать как пользоваться отладчиком в средах Visual C++, Borland Builder, Delphi, Visual Basic, Eclipse, Netbeans и многих других, но думаю это тебе вряд ли поможет.
0
0 / 0 / 0
Регистрация: 14.01.2010
Сообщений: 17
23.01.2010, 23:18  [ТС]
Возможно, да и вообще, проще мне книгу найти такую, чем тебя загружать
0
7 / 7 / 12
Регистрация: 13.02.2007
Сообщений: 1,255
23.01.2010, 23:43
Слова не юноши, а мужчины!

Так в последнее время любят издеваться надо мной мои старые друзья, указывая на существенный сдвиг в моем мировозрении.

По-моему, эти слова неплохо подходят к ситуации.
0
0 / 0 / 0
Регистрация: 14.01.2010
Сообщений: 17
24.01.2010, 16:01  [ТС]
=))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.01.2010, 16:01

Что относится к азам программирования?
Расскажите пожалуйста, чтобы было хоть какое то правильное представление.

Запросы (нормальное слово в фильтре) по азам
Всю жизнь был далек от вэб-технологий, но пришло время и любопытство взяло свое, захотелось немножко просветиться в этой области. Только...

Консультация по формам и азам графики для написания курсовой
Кто-нибудь дайте консультацию по поводу написания курсовой, дайте направление, как это можно сделать. Формы и азы графики на C#. Просто...

Вопрос по SetParent (поэтому, наверное, это вопрос к NickStaves)
Есть набор форм, назовём их 'интерфейсными'. Есть отдельная форма, назовём её 'хранилищем'. Сама по себе она нигде не используется: лишь...

VBulletin [ВОПРОС]: Меню и вопрос при регистрации
Помогите пожалуйста. У меня vbulletin 4.0.7 и после установки в верхнем меню есть лишняя навигация. Например: Главная Форум Blogs ...


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

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

Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru