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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2013, 06:21   #1
MishkaSh
Пользователь
 
Регистрация: 31.03.2013
Сообщений: 21
По умолчанию Убрать нули после запятой

Ребят помоги убрать ноли после запятой. Если введу 0,300000000000000000000000000000000 0000000 то он пишет что больше 16 символов, а нужно чтобы отбросил нули и принял 0,3. Вот код:
Код:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <locale.h>

void d(char * s)
{
    char * p = s;
    int g = 0;
    while(true)
    { 
       if (*p == '-') 
        {
            ++p;
            g = 1;
            continue;
        }
        if (*p == '0') ++p;
        else break;
    }
    if (g == 0)
        memmove(s, p, strlen(p) + 1);
    else
    {
        --p;
        *p = '-';
        memmove(s, p, strlen(p) + 1);  
    } 
}

int main()

{
setlocale(0,"rus");

double A, Z, U;
char a[256];
char *c=0;
char *p=a;
while(true)
{	
printf("Введите значение числа A(Не более 16 символов)\n");
scanf("%s", a);
d(a);
while(*p=='0')p++;
while(*p==' ')p++;
if (strlen(a)>16)
	{
	printf("\nБольше 16 символов, попробуйте заново\n\n");
    continue;
	}
sscanf(p, "%16s", &a);
if(getchar()==' ')
		{
		fflush (stdin);
		}
fflush (stdin);
A=strtod(a,&c);

			{
			printf("\nA=%.16f \n",A);
			if(!isdigit(c[0]) && c[0]!=0)
				{
				printf("\nОшибка в следующем:%s\n", c);
				printf("\nПопробуй еще раз\n\n");
				continue;
				}
break;
			}
}

while(true)
{
printf("Введите значение числа Z(Не более 16 символов)\n");
scanf("%s", a);
d(a);
while(*p=='0')p++;
while(*p==' ')p++;
if (strlen(a)>16)
	{
	printf("\nБольше 16 символов, попробуйте заново\n\n");
    continue;
	}
sscanf(p, "%16s", &a);
if(getchar()==' ') 
	{
	fflush (stdin);
	}
fflush (stdin);
Z=strtod(a,&c);
			{
			printf("\nZ=%.16f \n",Z);
			if(!isdigit(c[0]) && c[0]!=0)
				{
				printf("\nОшибка в следующем:%s\n", c);
				printf("\nПопробуй еще раз\n\n");
				continue;
				}
break;
			}
}

printf("U=%.16f\n", U=(A*Z*Z)+(((A/2)*(Z*Z))/13.61)-(A*Z));

return 0;
}
MishkaSh вне форума Ответить с цитированием
Старый 05.04.2013, 07:16   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Код:
printf("U=%.1f\n",
Вот так пробовали???
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расцепить 18 столбцов и убрать нули в Excel 2003 явген Microsoft Office Excel 10 17.08.2011 23:46
Как убрать нули??? Егор&Co Microsoft Office Excel 9 24.02.2011 12:39
Разделение чисел на до запятой и после запятой msser Microsoft Office Excel 8 23.10.2009 11:57
как записывать в файл тип риал чтоб после точки эти нули убрать?? ТРОЯН=) Помощь студентам 3 24.04.2009 14:09
Убрать нули!!!) artemavd Общие вопросы Delphi 13 29.07.2008 09:10