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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2010, 19:06   #1
Inna_L
Пользователь
 
Регистрация: 22.06.2010
Сообщений: 13
Печаль Строки

Показать на экран с m по n символов строки, введенной пользователем и записать данный отрезок в другой массив. (m и n также вводятся пользователем)
Ни как не пойму, почему при выводе строки на экран появляется "мусор"?
Код:
#include <string.h>
#include <stdio.h>
#include <iostream>
using namespace std;

void main ()
{
    int k=0,i=0,l=0,size=0;
	           
	char *x1 = new char[50];
	char *x2 = new char[50];
	
    int m=0,n=0;
	               
	puts( "Input string :(max 49 elements)\n Massiv x1: ");// Запрос на ввод оригинального массива
	gets_s(x1,49);
	cout<<"Enter m: ";//начало диапазона 
    cin>>m;
    cout<<"Enter n: ";//конец диапазона для удаления
    cin>>n;
                  
	size = strlen(x1); /* вычисляем рельную длину оригинального массива*/
    l=(size+1)-n+m;

	if (m<=n)
	{
	for(i=0; i<size+1; i++)// цикл поэлементно перебирает оригинальный массив
	{
	  if((i>=(m-1))&&(i<=(n-1)))//удаляем значения в границах диапазона
	    {
		 *(x2+k)=*(x1+i);
		k++;
		}
	}
	  cout <<endl;
	}
	else
		 cout <<"Error vvoda diapazona ! ";
	puts(x2);
	delete [] x1;
	delete [] x2;
}
Inna_L вне форума Ответить с цитированием
Старый 01.10.2010, 19:34   #2
Farrel
Форумчанин
 
Аватар для Farrel
 
Регистрация: 21.04.2010
Сообщений: 144
По умолчанию

Код:
#include <string.h>
#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;

void main ()
{
    int k=0,i=0,l=0,size=0;
	           
	char *x1 = new char[50];
	char *x2 = new char[50];
	
    int m=0,n=0;
	               
	puts( "Input string :(max 49 elements)\n Massiv x1: ");// Запрос на ввод оригинального массива
	gets_s(x1,49);
	cout<<"Enter m: ";//начало диапазона 
    cin>>m;
    cout<<"Enter n: ";//конец диапазона для удаления
    cin>>n;
                  
	size = strlen(x1); /* вычисляем рельную длину оригинального массива*/
    l=(size+1)-n+m;

	if (m<=n)
	{
	for(i=0; i<size+1; i++)// цикл поэлементно перебирает оригинальный массив
	{
	  if((i>=(m-1))&&(i<=(n-1)))//удаляем значения в границах диапазона
	    {
		 *(x2+k)=*(x1+i);
		k++;
		}
	  if(i>n)  //чтобы puts корректно вывел строку, её надо закрыть \0
	  {
		  *(x2+k)='\0';
		  break; //как только строка закрыта, цикл можно прервать
	  }
	}
	  cout <<endl;
	}
	else
		 cout <<"Error vvoda diapazona ! ";
	puts(x2);
	getch();
	delete [] x1;
	delete [] x2;
}
Farrel вне форума Ответить с цитированием
Старый 01.10.2010, 20:51   #3
Inna_L
Пользователь
 
Регистрация: 22.06.2010
Сообщений: 13
По умолчанию

Спасибо, очень помогли. Я протупила...
Inna_L вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Знак переноса строки в конце строки. Kalika Microsoft Office Access 2 12.09.2010 11:27
Дбавление новой строки, после строки с подходящими параметрами RailOS Microsoft Office Excel 5 18.08.2010 10:12
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27