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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2012, 15:52   #1
Chelovekpredel
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 33
По умолчанию Проблема с программой. Си

Код:
// Замена 16-ричной строки на целое число.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <stdio.h>
int perevod(char s[]);

int perevod(char s[])
{
	int i=0,k=0,j,p=0;
	while (s[i]!='\0')
	{
		if ((s[i]=='0') || (s[i]=='1') || (s[i]=='2') || (s[i]=='3') || (s[i]=='4') || (s[i]=='5') || (s[i]=='6') || (s[i]=='7') || (s[i]=='8') || (s[i]=='9'))
			s[i]=s[i]-48;
		if (s[i]=='a' || s[i]=='b' || s[i]=='c' || s[i]=='d' || s[i]=='e' || s[i]=='f')
			s[i]=s[i]-87;
		++i;
	}
	for (j=i-1;j>=0;--j)
	{
		k=k+s[j]*p;
		p=p*16;
	}
	return p;
}


int _tmain(int argc, _TCHAR* argv[])
{
	char c,s[1000];
	int i=0;
	while ((c=getchar())!='\n')
	{
		s[i]=c;
		++i;
	}
	s[i]='\0';
	printf("%d\n",perevod(s));
	getchar();
	return 0;
}
Задача по переводу из 16-ричной в десятичную систему. В чем ошибка?
Мне выводит постоянно 0.
Chelovekpredel вне форума Ответить с цитированием
Старый 09.06.2012, 16:52   #2
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Возвращает не результат и p всегда равно 0.

Код:
#include <stdio.h>

int perevod(char s[])
{
	int i=0,k=0,p=1;
	while (s[i]!='\0')
	{

		if ((s[i]>='0') && (s[i]<='9'))
			s[i]=s[i]-'0';
		else if (s[i]>='a' &&  s[i]<='f')
			s[i]=s[i]-'a'+10;
		else if (s[i]>='A' &&  s[i]<='F')
			s[i]=s[i]-'A'+10;
		else 
			return -1;
		++i;
	}
	for (int j=i-1;j>=0;--j)
	{
		k+=s[j]*p;
		p=p*16;
	}
	return k;
}


int main()
{	
	char *s=new char[10];
	gets(s);
	printf("res:\t%d\n",perevod(s));
	return 0;
}
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 09.06.2012, 17:51   #3
Chelovekpredel
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 33
По умолчанию

Все понял. Большое спасибо)
Chelovekpredel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с программой Alex_12Proxy Паскаль, Turbo Pascal, PascalABC.NET 4 02.02.2012 23:07
проблема с программой crazyW Помощь студентам 0 17.01.2012 20:15
Проблема с программой тузлук Помощь студентам 1 21.04.2011 16:05
Проблема с программой kamil83 Помощь студентам 1 25.02.2011 07:58
Проблема с программой. elDiablo Паскаль, Turbo Pascal, PascalABC.NET 2 17.08.2010 21:59