Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2012, 21:47   #1
FrozenHurt
Новичок
Джуниор
 
Регистрация: 21.01.2012
Сообщений: 2
По умолчанию Откуда нуль??

Привет всем. Надо написать программу-калькулятор для чисел в 13ричной системе счисления. Проблема в том, что на выделенном участке программы, программа находит 0, которого там не должно быть. Как можно исправить?

Код:
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int charToInt(char s)
    {
       switch(s)
        {
        case '0': return 0;
        case '1': return 1;
        case '2': return 2;
        case '3': return 3;
        case '4': return 4;
        case '5': return 5;
        case '6': return 6;
        case '7': return 7;
        case '8': return 8;
        case '9': return 9;
        case 'A': return 10;
        case 'B': return 11;
        case 'C': return 12;
        }
    }
    char intToChar(int n)
    {
       char nums[14]={"0123456789ABC"};
        if(n<0 || n>14)
                return '0';
        return nums[n];
    }

    void add(char* number1, char* number2,char* result)
    {
        int len=10;
		int osnova=13;
        bool up=false;
        for(int i=len-1;i>=0;i--)
        {
                int n1=charToInt(number1[i]);
                int n2=charToInt(number2[i]);
                int res=n1+n2;
                if(up)
                        res++;
                if(res>=osnova) 
                {
                        res-=osnova; 
                        up=true;                
                }
                else
                        up=false;              
                
                result[i]=intToChar(res);
        }
    }
    
    void del(char* number1, char* number2,char* result)
    {
        int len=10;
		int osnova=13;
        bool zaem=false;
        for(int i=len-1;i>=0;i--)
        {
                int n1=charToInt(number1[i]);
                int n2=charToInt(number2[i]); 
                int res=n1-n2;
                if(zaem)
                        res--;
                if(res<0)
                {
                        res+=osnova;
                        zaem=true;
                }
                else
                        zaem=false;
                
                result[i]=intToChar(res);
        }
    }

int _tmain(int argc, _TCHAR* argv[])
{ 
	char n1[10], n2[10];
	char select[]=" ";
	char sum[11], de[11], sumo[11], deo[11], temp[6];
	sum[10]=0, de[10]=0, sumo[10]=0, deo[10]=0, temp[5]=0;
	printf("Select the action. + = summa, - = raznost'\n");
	scanf("%s", select);
	if (strcmp(select, "+")==0)
	{
		printf("Enter a number1 (less 10 digits):  ");
		scanf("%s", n1);
		printf("Enter a number2 (less 10 digits):  ");
		scanf("%s", n2);
		add(n1,n2,sum);
		strrev(sum);
		for (int i=0; i<=4; i++)
		{
			temp[i]=sum[9-i];
			if (temp[i]='0')
			{
				temp[i]=0;
			}
		}
		/*for (int i=0; i<=5; i++)
			{
				sum[4+i]=temp[i];
				if (sum[4+i]='0')
				{
					sum[4+i]=NULL;
				}
		}*/
		printf("Summa = %s\n", temp);
	}
	else
	{
		printf("Enter a number1 (less 10 digits):  ");
		scanf("%s", n1);
		printf("Enter a number2 (less 10 digits):  ");
		scanf("%s", n2);
		del(n1,n2,de);
		for (int i=0; i<=9; i++)
			{ 
				deo[i]=de[9-i];
		}
		printf("Razn = %s\n", deo);
	}
}

Последний раз редактировалось ACE Valery; 21.01.2012 в 22:43.
FrozenHurt вне форума Ответить с цитированием
Старый 21.01.2012, 22:00   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

В if'е вместо = надо ==.
Somebody вне форума Ответить с цитированием
Старый 21.01.2012, 22:04   #3
FrozenHurt
Новичок
Джуниор
 
Регистрация: 21.01.2012
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
В if'е вместо = надо ==.
Огромнейшее спасибо!) на таком пустяке завис
FrozenHurt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Show Window возвращает нуль. Ibanez Wizard Win Api 1 26.03.2011 23:39
Как правильно делить на нуль? Utkin Свободное общение 55 21.12.2010 13:01
Деление на нуль при запуске Pababop Паскаль, Turbo Pascal, PascalABC.NET 0 12.12.2010 16:43
убрать null (нуль) символы в строке Kib Общие вопросы Delphi 7 25.06.2010 14:22
как поставить ограничение на число нуль а не на символ нуль??? Dr.Swat Помощь студентам 0 12.06.2010 20:35