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

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

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

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

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

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

Нужно чтобы программа не считала пробел за символ. Когда я ввожу пробелы перед числом то он их отбрасывает, а вот когда после числа то считает их за символы и пишет что введено больше 16 символов. Как сделать чтобы он и после числа пробелы отбрасывал? Вот код:
Код:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <locale.h>

char * d(char * s)
{
    char * p = s;
    while(*p=='0') 
        ++p;
	while(*p==' ') 
        ++p;
    memmove(s,p,strlen(p)+1);
    return s;
}

int main()

{
setlocale(0,"rus");

double A, Z, U;
char a[256];
char *c=0;
char *p=a;
while(true)
{	
puts("Введите значение числа A(Не более 16 символов)");
gets(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)
{
puts("Введите значение числа Z(Не более 16 символов)");
gets(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 вне форума Ответить с цитированием
Старый 04.04.2013, 05:52   #2
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Попробуй работать не с char*, а с ansistring. Тогда можно будет применять функции, описанные ТУТ, в частности Trim, TrimLeft, TrimRight. Ну, или посмотри, как там устроены эти функции и возьми код оттуда.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отбросить дробную часть от числа типа double не выходит! Си apraxie Помощь студентам 3 17.12.2011 00:18
Как убрать в ячеиках типа char(255) после моеи строки пробелы ArtGrek БД в Delphi 4 02.05.2011 09:46
пробелы после каждой буквы KeksK Общие вопросы .NET 3 05.05.2010 12:13
как отбросить целую часть оставив дробную Alex26RusLink Паскаль, Turbo Pascal, PascalABC.NET 1 24.10.2009 11:36
Как округлять числа до целых и как оставить два знака после запятой. bles Помощь студентам 9 19.02.2008 21:53