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

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

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

Работа с длинными числами (непонятное поведение при выводе второго массива символов) - C++

22.04.2012, 12:18. Просмотров 357. Ответов 0
Метки нет (Все метки)

Необходимо составить программу,которая будет работать с длинными числами.
Кратко опишу: записываем в программу цифры(в виде строки), после переносим их в конец массива для удобства выполнения мат. операций, потом вывожу введённые числа для проверки правильности.
Проблема заключается в том,что 2-й массив выводит неправильно: иногда может вывести все нолики, а иногда вначале ноли,а потом 1234567... Фишка в том,что если в подпрограмме Vivod в цикле поменять i=0(то есть,чтоб выводило все 300 элементов),то сами элементы,как и должно быть находятся в конце массива и выводится так: 00000000000.... и цифры которые я ввёл. В чем проблема?

ps как можно с помощью atoi приводить к виду int только заданный элемент в массиве(например str[299]). Надо для того,чтобы с конца соответствующие элементы складывать,то есть str[299]+str[299].
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
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void Vvod(char str[],int& index,int temp);
void Vivod(char str[],int& index,int temp);
void SwapToEnd(char str[],int& index);
void Reset(char str[],int& index);
//void Plus(char str1[],char str2[],char str3[],int temp);
void main(){
clrscr();
char strA[300],strB[300],strC[300];
int indexA,indexB,indexC,temp,n;
Vvod(strA,indexA,temp);
SwapToEnd(strA,indexA);
Reset(strA,indexA);
Vivod(strA,indexA,temp);
Vvod(strB,indexB,temp);
SwapToEnd(strB,indexB);
Reset(strB,indexB);
Vivod(strB,indexB,temp);
Reset(strC,indexC);
cout<<"indexA - "<<indexA<<"  indexB - "<<indexB;
getch();
}
void Vvod(char str[],int& index,int temp) {
    cout<<"\nVvodite zna4enie strsiva\n";
    cout<<"Key 'Enter' - konec vvoda\n";
    int i;
    index=0;
    for (i=0; i<300; i++) {
        temp=getch();
        if(temp==13){                           //  если нажат enter - конец ввода
            break;
        }
        str[i]=temp;
        index+=1;                               // кол-во введённых цифр
        cout<<temp-48<<"";                      // т.к. выводит код нажатой кнопки, то отнимаем 48,чтоб знать какую цифру нажали
    }
}
void Vivod(char str[],int& index,int temp) {
    cout<<endl;
    int i;
    temp=300-index;
    for(i=temp; i<300; i++)
        cout<<str[i]<<" ";
    cout<<endl;
    }
void SwapToEnd(char str[],int& index){
    int i,j=300;
    if(str[j]==str[index]);
    else {
        for(i=index;i>=0;i--){                  //Перемещение элементов в конец
            str[j]=str[i];
            j--;
        }
    }
}
void Reset(char str[],int& index){
    int i;
    for(i=0;i<300-index;i++) 
    str[i]=48;                                  //Обнуление элементов
}
/*void Plus(char str1[],char str2[],char str3[],int temp){
    int i;
    for(i=299;)
} */
Добавлено через 17 часов 37 минут
Никто не знает или всем лень разбираться в коде? Он вроде лёгкий, да и комменты есть.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2012, 12:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с длинными числами (непонятное поведение при выводе второго массива символов) (C++):

Работа с длинными числами - C++
Мне нужно прочитать из файла 22-х значные целые числа для количественного сравнения. int и long int не сохраняют полную длину числа. Какой...

Работа с длинными числами - C++
Здравствуйте! На программировании в вузе дали индивидуальную задачу которая предусматривает работу с большими числами: 1 &lt;= N &lt;=...

Функция с++ (работа с длинными числами - вывод результата в файл) - C++
У меня есть проэкт с++ который использует динамическую библиотеку для работы с длинными числами. В проэкте я перегружаю операторы +,-,...

Отображаются лишние символы при выводе массива символов - C++
#include &lt;iostream.h&gt; #include &lt;string.h&gt; // для функций str* /////////////////////////////////////////////////////////// ...

Действия с длинными числами - C++
Ребята, нужна помощь. Информации нигде нет. Задача такова. Нужно провести арифметичексие действия с целыми числами не превышающие 30 цифр....

Класс для работы с длинными числами - C++
Необходимо реализовать класс для работы с длинными числами. Подскажите алгоритм реализации следующих пунктов: 1) Ввод/вывод числа 2)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2012, 12:18
Привет! Вот еще темы с ответами:

Непонятное поведение - C++
Всем привет! В книге &quot;Прата - Язык программирования C++. Лекции и управжения 2011&quot; нашёл вот такой пример: const free_throws &amp;clone(...

Действия над многорозряднымии числами(очень длинными) - C++
Помогите пожалуйста: 1. Задачи: - Введение многоразрядного числа с клавиатуры. - Выведение многоразрядного числа на экран. -...

Длинная арифметика. Класс работы с длинными числами. - C++
// модул_умнож.cpp : main project file. #include &quot;stdafx.h&quot; #include &quot;vector&quot; #include &lt;algorithm&gt; #include &quot;stdio.h&quot; #include...

Операции с длинными числами - неправильно выводится результат - C++
Здравствуйте, помогите с операцией умножение неправильно выводит рез-тат, например 555 * 3 = 555


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

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

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