Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 14.01.2010
Сообщений: 17

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

14.01.2010, 17:15. Показов 5026. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru