Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Массивы,замена символа.


Автор: mogtar 6.11.2013, 22:35
Код

void zam()
{   char ar[100]={},br[100]={};
    int size1,size2,sizeall;
    char i,a;
    cout <<"Введiть розмiр фамiлiї ";  cin >> size2;
    cout <<"Введiть вашу фамилию: ";
    for(int i=0;i<size2;i++)
    {cin>>br[i];}
    cout <<"Введiть кiлькiсть елементiв масиву: ";  cin >> size1;
    cout<<"Введiть текст масиву: ";
    for(int i=0;i<size1;i++)
    {cin>>ar[i];}
    cout<<"Утворений масив: ";
    for(int i=0;i<size1;i++)
    {cout << ar[i] <<" ";}
    cout <<"Введiть символ який потрiбно замiнити: "; cin >> a;
    sizeall=size1;                //переменная для размера выходящего масива.начальное значение размер масива.
    i=0;
    for(int z=sizeall-2;z>=0;z--) //z=размер масива -2(нумерация масива начинается с 0)(просмотр символ+1).
    {
        if(ar[z]==a && ar[z+1]==a ){sizeall=sizeall+size2-2; //условие, если символ==а и последующий==а тогда продолжить.
            for(int g=sizeall-1;g>=z;g--) {ar[g]=ar[g-2];} //сдвиг вправо, размер при єтом уже увеличен.
            for(int h=z;h<=z+size1;h++) {ar[h]=br[i];i++;}} //єлементу h который равен перменной самого первого цикла присвоить первый элемент масива br.
    }
    cout<<"Утворений масив: ";
    for(int i=0;i<sizeall;i++)
    {cout << ar[i] <<" ";}
}

Такая вот программа, если какой либо символ встречается 2 раза, то вместо него вставляется выбранная фамилия.
Не работает до конца, выводит все верно до окончания фамилии, дальше просто пустое пространство. Консоль ниже, прикрепленным файлом.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)