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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2010, 18:24   #1
kate311893
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 18
По умолчанию задача с символами с++

Удвоить каждый символ в строке x.

Помигите, пожалуйста, исправить программу. Она последний символ не удваивает.

Код:
#include<iostream.h>                                    
#include<conio.h>
#include<stdio.h>
#include<string.h>

void main()
{clrscr();

char *x;
int n;
cout<<"Vvedite kol-vo elementov:";
cin>>n;
x=new char[n];
for(int i=0;i<n-1;i++)
{cout<<"Vvedite simb:";
cin>>x[i];
}
x[n-1]='\0';

cout<<"Naha ctroka:"<<x;
cout<<endl;

char *y;
y=new char[n];


for(i=0;i<=n/2;i++)
{y[2*i]=x[i];
 y[2*i+1]=x[i];}

for(i=0;i<n;i++)
x[i]=y[i];

cout<<"Naha ctroka:"<<x;
cout<<endl;
getch();
}

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

А так?:
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
// к - счетчик цикла, и по совместительству счетчик символов в новой строк
	int k,n=5;
// Создаем строку на n символов
	char *s=new char[n];
// и строку где может поместится вдвое больше символов
	char *s2=new char[n*2];
// вводим исходную
	cin>>s;
// в цикле
	for(k=0;k<=strlen(s);k++) {
//помещаем символ в новую строку на четную и нечетную позицию через 2
		s2[k*2+1]=s[k];
		s2[k*2]=s[k];
	}
// завершаем строку ASCIIZ терминатором - это 0
    s2[k*2+1]='\0';
// Выводим удвоенную строку
	cout<<'\n'<<s2;
	system("pause");
	return 0;
}
Может не сильно суразно, но работает
I'm learning to live...

Последний раз редактировалось Stilet; 18.09.2010 в 20:44.
Stilet вне форума Ответить с цитированием
Старый 18.09.2010, 18:58   #3
kate311893
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 18
По умолчанию

можешь объяснить, пожалуйсто, что тут что значит. А то я ниочень понимаю
kate311893 вне форума Ответить с цитированием
Старый 18.09.2010, 20:45   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не вопрос. Я закоментил код, см. выше.
А кросспостов не создавай - удалю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.09.2010, 19:23   #5
kate311893
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 18
По умолчанию

а как сделать, чтобы конечный результат именно в первой строке сохранился?
kate311893 вне форума Ответить с цитированием
Старый 19.09.2010, 19:46   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
именно в первой строке
Это что за бзик умолишенного прохвессора? Зачем такие сложности?
Для этого как минимум придется писать это:
Код:
char *s=new char[n*2];
и это:
Код:
s=s2;cout<<'\n'<<s;
Либо уж если преподаватель действительно прохвессор то специально для него придется писать такое:
Код:
for(k=0;k<strlen(s2);s[k]=s2[k++]);s[k]='\0';
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.09.2010, 20:11   #7
kate311893
Пользователь
 
Регистрация: 18.05.2010
Сообщений: 18
По умолчанию

спасибо) всё работает)
kate311893 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с символами.Паскаль Андрюха74 Помощь студентам 2 10.06.2010 16:08
OnKey с русскими символами Aiden Microsoft Office Excel 2 01.02.2010 17:30
Рисование символами. (*_*) Общие вопросы C/C++ 2 04.03.2009 23:03
Работа с русскими символами... Sota Помощь студентам 5 31.05.2008 18:44