Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
13Tre
0 / 0 / 0
Регистрация: 24.09.2014
Сообщений: 21
1

Функция деления двух строк

24.05.2015, 14:57. Просмотров 224. Ответов 0
Метки нет (Все метки)

Доброго времени суток, прошу помочь разобраться в чем проблема.
Суть задания в создании функции, которая на вход получает две строки, производит деление первой на вторую и в ответе выдает тоже строку.
Вот результат моей деятельности, по всей видимости бесполезной:
Мэйн, для теста функции

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
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#include <conio.h>
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char Num1[BUFSIZ],
         Num2[BUFSIZ];
    printf("\nФункция тестирования деления двух строк друг на друга.\n"
           "Введи делимое: ");
    gets(Num1);
    printf("\nВведи делитель: ");
    gets(Num2);
 
    char* Division(char*, char*);
    char *resDivision = (char*) malloc(((strlen(Num1)-strlen(Num2))+1)*sizeof(char));
    resDivision = Division(Num1, Num2);
    if(resDivision == NULL)
        printf("\nОшибка ввода!");
    else
       puts(resDivision);
    getch();
    return 0;
}

Сама функция

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
#include <stdlib.h>
#include <string.h>
 
char *Division(char *Num1, char *Num2)
{
    /**Целочисленное деление**/
    /**Проверка, нет ли деления на ноль**/
    if ((Num2[0] - '0') == 0)
        return NULL;
    int len;
    char *result;
 
    /**Проверка длинны строк, если делимое больше делителя, то результат меньше нуля**/
    if((strlen(Num1) - strlen(Num2)) >= 0 ){
        len = (strlen(Num1) - strlen(Num2)+1);
        result = (char*) malloc(len*sizeof(char));
    }
    else
        return NULL;
 
    int j = 0;
    int i, len2 = strlen(Num2),
        resInt = 0, ///промежуточный результат
        Num3 = 0,///Рабочая переменная, как при делении столбиком, часть делителя,
///которая в данный момент делится.
        Num4 = 0;///Делитель, целочисленный
 
///Заполнение "делимого" и делителя для первого деления
    for (i = 0; i < len2; i++){
        Num3 *= 10;
        Num4 *= 10;
        Num3 += Num1[i] - '0';
        Num4 += Num2[i] - '0';
    }
///сам цикл деления
    do{
        resInt = (int) (Num3 / Num4); 
        Num3 = Num3 - resInt * Num4;
        Num3 = Num3*10 + (Num1[i] - '0');
        result[j] = resInt + '0';
        i ++;
        j ++;
    }while (i != len-1);
    return result;
}

Дебаггер ругается на эту строку Division'а:
C
1
        result[j] = resInt + '0';
но по-моему корень зла выше, но глаза замылены и не могу понять, где именно проблема.
За любые советы/пинки в нужном направлении/указания на ошибки буду очень благодарен.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2015, 14:57
Ответы с готовыми решениями:

Функция обмена двух заданных строк матрицы
2) Функция обмена двух заданных строк матрицы

Дан двумерный массив из двух строк и пятнадцати столбцов. Найти минимальную сумму элементов в двух соседних столбцах
Помогите решить пожалуйста: Дан двумерный массив из двух строк и пятнадцати столбцов. Найти...

Рекурсивная функция root(f, a, b, eps): нахождение корня уравнения методом деления пополам
Описать рекурсивную функцию root(f, a, b, eps), которая методом деления отрезка пополам находит с...

Рекурсивная функция root: нахождение корня уравнения методом деления отрезка пополам
Помогите пожалуйста описать рекурсивную функцию root(f,a,b,eps), которая методом деления отрезка...

Дан двумерный массив из двух строк и пятнадцати столбцов. Найти номера двух соседних столбцов, сумма элементов в которых
решите плз

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2015, 14:57

Функция поэлементного деления двух массивов
Есть два одномерных массива: mass1(n) и mass2(n). Длина массива не постоянна и равно количеству...

Функция деления двух чисел с плавающей запятой
Нужно описать функцию деления двух чисел с плавающей запятой, обработайте ошибку деления на ноль...

Функция конкатенации двух строк
Здравствуйте, помогите сделать функцию сложения двух строк, примерно так: void add(char *str1,...


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

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

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