Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Laser_Head
0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 5
#1

Организовать ручной ввод 80-значных чисел вместо случайного ввода - C++

21.12.2015, 18:10. Просмотров 228. Ответов 6
Метки нет (Все метки)

нужна помощь, как организовать ручной ввод чисел вместо случайного ввода? заранее спасибо
вот код:
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream>
#define N 80
 
using namespace std;
 
// a = b
bool Equal(int a[], int b[])
{
   for (int i=0; i<N; i++)
    if(a[i]!=b[i])
     return 0;
 
   return 1;
}
 
// a > b
bool Larger(int a[], int b[])
{
   for (int i=0; i<N; i++)
    if(a[i] > b[i])
     return 1;
    else
     if (a[i]<b[i])
      return 0;
}
 
// a = a - b
void Minus(int a[], int b[])
{
   for (int i=N-1; i>=0;i--)
   {
      if(a[i]>=b[i])
       a[i] = a[i] - b[i];
      else
      {
        a[i]+=10;
        a[i] = a[i] - b[i];
        a[i-1]--;
      }
   }
}
 
// печать
void Print(int* a)
{
   int curr = 0;
   while (a[curr]==0)
    curr++;
 
   for (int i=curr; i<N; i++)
    cout <<a[i];
   cout << endl;
}
 
// основная функция
void main ()
{
   int A[N];
   int B[N];
 
   // инициализация массивов цифр
   for (int i=0; i<N; i++)
   {
      A[i] = rand%10;
      B[i] = rand%10;
   }
 
   cout << "A = ";
   Print(A);
 
   cout << "B = ";
   Print(B);
 
   // алгоритм Евклида
   while (!Equal(A,B))
   {
     if (Larger(A,B))
       Minus(A,B);
 
     else
       Minus(B,A);
 
     // cout << "A = ";
     // Print(A);
 
     // cout << "B = ";
     // Print(B);
   }
 
   cout << "NOD = ";
   Print(A);
 
   getchar();
   
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2015, 18:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Организовать ручной ввод 80-значных чисел вместо случайного ввода (C++):

Нюансы ввода/вывода: как правильно организовать ввод строки с пробелами? - C++
Доброе время суток. Такой вопрос: у меня есть структура, содержащая ФИО, адрес, телефон, возраст. Хотелось, чтобы была возможность...

Массивы: ручной ввод - C++
Всех с НОВЫМ ГОДОМ!!!!!!!!!!!!!! но НГ,а мне надо завтра сдавать работу.... очень-очень надо.... Помогите сделать ручной ввод...

Ручной ввод элементов - C++
Эта программа сама в случайном порядке пишет элементы в массиве. Помогите, пожалуйста, переделать код так, чтобы можно было самим вводить...

Массивы. Организовать ввод матрицы размера mxn из целых чисел - C++
Составить программу, в которой 1) организовать ввод матрицы размера mxn из целых чисел; 2) вычислить произведение четных элементов...

Организовать ввод в однонаправленный список; подсчитать сумму чисел списка - C++
Организовать ввод в однонаправленный список. Узел списка состоит из двух полей: целое число и указатель. Необходимо подсчитать сумму чисел...

Матрица, ручной ввод элементов - C++
Ещё раз здравствуйте. Встала такая проблема, не получается переделать рандомное заполнение матрицы на ручное. Помогите, либо отошлите в...

6
Dimension
Dimension
571 / 440 / 135
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
21.12.2015, 18:22 #2
считывать в строку ,потом в массив кидать переводя в цифры
0
zss
Модератор
Эксперт С++
6715 / 6277 / 2092
Регистрация: 18.12.2011
Сообщений: 16,376
Завершенные тесты: 1
21.12.2015, 19:00 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int Input(int*A,int N)
{
   int i=0;
   cout<<"Enter long number:";
   for (; i<N; i++)
   {
      A[i] =cin.get();
      if(A[i]>='0' && A[i]<='9')
        A[i]-='0';
      else if( A[i]=='\n')
         break;
      else
        A[i]=0; // считаем, что непередусмотренные символы соответствуют нулям
   }
   return i; // Возвращаем количество цифр в числе
}
0
Laser_Head
0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 5
21.12.2015, 20:13  [ТС] #4
fo
C++
1
2
3
4
5
6
7
8
9
10
11
r (int i=0; i<N; i++)
   {
      A[i] = rand%10;
      B[i] = rand%10;
   }
 
   cout << "A = ";
   Print(A);
 
   cout << "B = ";
   Print(B);
проблема в том, что я не знаю, как организовать в данном куске ручной ввод именно 80-ти значных чисел, вместо автоматического
0
zss
Модератор
Эксперт С++
6715 / 6277 / 2092
Регистрация: 18.12.2011
Сообщений: 16,376
Завершенные тесты: 1
21.12.2015, 20:18 #5
Laser_Head, А чем Вам не угодил предложенный мною вариант?
Не знаете как вызвать функцию?
C++
1
2
3
4
Input(A,N);
Print(A,N);
Input(B,N);
Print(B,N);
0
Laser_Head
0 / 0 / 0
Регистрация: 21.12.2015
Сообщений: 5
21.12.2015, 20:47  [ТС] #6
я не знаю, куда вставить часть кода, предложенного вами)
0
zss
Модератор
Эксперт С++
6715 / 6277 / 2092
Регистрация: 18.12.2011
Сообщений: 16,376
Завершенные тесты: 1
21.12.2015, 20:57 #7
Тик в тик вместо кода написанного Вами в предыдущем сообщении.
Исправьте только функции так, чтобы N передавалось во все функции как параметр.
И уберите #define N 80
а в main вставьте
C++
1
const int N=80;
Итого
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
using namespace std;
int Input(int*A,int N)
{
    int i=0;
    cout<<"Enter long number:";
    for (; i<N; i++)
    {
        A[i] =cin.get();
        if(A[i]>='0' && A[i]<='9')
            A[i]-='0';
        else if( A[i]=='\n')
            break;
        else
            A[i]=0; // считаем, что непередусмотренные символы соответствуют нулям
    }
    return i; // Возвращаем количество цифр в числе
}
 
// a = b
bool Equal(int* a, int* b,int N)
{
    for (int i=0; i<N; i++)
        if(a[i]!=b[i])
            return false;
    return true;
}
 
// a > b
bool Larger(int* a, int* b,int N)
{
    for (int i=0; i<N; i++)
        if(a[i] > b[i])
            return true;
    return false;
}
 
// a = a - b
void Minus(int* a, int* b,int N)
{
    for (int i=N-1; i>=0;i--)
    {
        if(a[i]>=b[i])
            a[i] = a[i] - b[i];
        else
        {
            a[i]+=10;
            a[i] = a[i] - b[i];
            a[i-1]--;
        }
    }
}
 
// печать
void Print(int* a, int N)
{
    int curr = 0;
    while (a[curr]==0 && curr<N)
        curr++;
 
    for (int i=curr; i<N; i++)
        cout <<a[i];
    cout << endl;
}
 
// основная функция
int main ()
{
    const int N=80;
    int A[N];
    int B[N];
 
    // инициализация массивов цифр
    Input(A,N);
    Print(A,N);
    Input(B,N);
    Print(B,N);
 
    // алгоритм Евклида
    while (!Equal(A,B,N))
    {
        if (Larger(A,B,N))
            Minus(A,B,N);
 
        else
            Minus(B,A,N);
 
        // cout << "A = ";
        // Print(A);
 
        // cout << "B = ";
        // Print(B);
    }
 
    cout << "NOD = ";
    Print(A,N);
 
    getchar();
   return 0;
 
}
1
21.12.2015, 20:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2015, 20:57
Привет! Вот еще темы с ответами:

Проверка правильности ввода. Запретить ввод чисел - C++
Здравствуйте форумчане! Хочу сделать в коде проверку типа: если вводить, где положено string -числа, то выходит сообщение &lt;Not...

Нахождение детерминанта матрицы и её ручной ввод - C++
Здравствуйте! Который вот уже день бьюсь! Не могу найти ошибку! Нужно поставить ручной ввод и найти детерминант. Матрица сначала...

Ручной ввод в массив и проверка цепочки - C++
Создать программу на С++, которая будет продуцировать цепочки(слова) в трехсимвольном алфавите с записью их в файл, причем длина L цепочек...

Организовать ввод целых четных значений в одномерный массив с контролем вводимых чисел - C++
Организовать ввод целых четных значений в одномерный массив с контролем чисел вводимых


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

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

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