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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2010, 07:37   #1
anybkarnak
Пользователь
 
Аватар для anybkarnak
 
Регистрация: 27.11.2009
Сообщений: 12
По умолчанию Программа работает, но на выходе выдаёт в строке никому не нужные символы

Подскажите пожалуйста, что с этим делать. Код рабочий, если не учитывать символы программа работает.
задание такое:
Дано целое число n и строка. Разработать программу, которая будет выполнять преобразование заданной строки в строку длины n следующим образом: если длина заданной строки больше числа n, то отбрасываются первые символы, если длина строки меньше числа n, то в ее начало добавятся символы точка «.».

вот код. первая часть, с обрезанием строки работает.
Код:
// l3.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
int main()
{
 int  a, q;
 //Отводим место под строку символов
 int maxlen=999;
 char *string=new char[maxlen];
 cout<<"Input String: ";
 gets(string);
 a = strlen(string);
 cout<<a<<'\n';
	 cout<<"please enter n>0: \n";
 cin>>q;
 if (a>q)
 {
	 char * lastw = new char [a-q+1];

// запись одного диапазона в массив		
	for(int i =0; i<(a-q); i++)	lastw[i] = string[(a-q-1)+i+1];
	printf("%s",lastw);
	cout<<'\n';
 delete[] string;
 }
 else if (q>a)
	{
	 int c=q-a, i;
	 char *vmeste=new char[a+q];
	 char *tochki=new char[c];
	 for (int i=0; i<c; i++)
	 tochki[i]='.';
	 printf("%s",tochki,'\n');
	vmeste=strcat(tochki,string);
	printf("%s",vmeste,'\n');
	delete[] tochki;
	delete[] string;
	delete[] vmeste;
	
 }
 getch();
 return 0;
}

Последний раз редактировалось anybkarnak; 04.03.2010 в 07:41.
anybkarnak вне форума Ответить с цитированием
Старый 04.03.2010, 08:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю такую реализацию:
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
int main()
{
 int  a, q;
 //Отводим место под строку символов
 const int maxlen=999;
 char s[maxlen];
 cout<<"Input String: ";
 gets(s);
 a = strlen(s);
 cout<<a<<'\n';
	 cout<<"please enter n>0: \n";
 cin>>q;
 if(a<q){
  for(int i=a;i<q;i++) cout<<'.';
  for(int i=0;i<strlen(s);i++) cout<<s[i];
 } else {
  for(int i=(a-q);i<a;i++) cout<<s[i];
 }
 getch();
 return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на VBA выдаёт ошибки. vfrc Microsoft Office Excel 7 06.11.2009 12:30
удалить в строке все одинаковые символы Михаил70 Помощь студентам 5 09.09.2009 18:35
оч прошу посмотрите!! она работает, но ответ не такой выдаёт Neznakomka Помощь студентам 3 27.05.2009 22:27
Вирус, при печатании появляются не нужные символы. Alex91 Безопасность, Шифрование 4 06.01.2009 18:37