Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 03.07.2018, 20:32   #1
DowL_HH4
Пользователь
 
Регистрация: 23.03.2018
Сообщений: 10
Репутация: 10
По умолчанию Палиндром удалением

Приветствую, нужно написать палиндром удалением, никак не могу понять, как это адекватно сделать.
Условие: Ввод, вывод и обработка данных должны быть реализованы с помощью функций. Везде, где есть возможность нужно использовать локальные переменные и передачу параметров.
Задача: Какое число нужно убрать, чтобы последовательность стала симметричной? В ответе нужно указать место числа. Если так сделать нельзя, то вывести 0.
Вот имею палиндром вставкой по нужному условию, как переделать в удаление?
Код:

#include <iostream>
#include <iomanip>
using namespace std;
 
int input(int m[100]){
    int i=1,n;
    cout<<"Input:"<<endl;
    cout<<"Size: "; cin>>n;
    cout<<"Elements:"<<endl;
    for(i;i<=n;i++){cin>>m[i];}
    return  n;
}
 
void palindrome(int m[100], int n, int &p, int &a){
    int i,c;
    c=n/2;
    for(i=1;i<=c;i++){
        if(m[i]!=m[n-i+1]){
            a=i;
            p++;
        }
    }
}
 
void output(int m[100],int n,int p,int i){
    cout<<"Answer: ";
    if((i>0)&&(p==1)) cout<<m[i]<<"->"<<m[n-i+1]<<endl;
    else cout<<0<<endl;
}
 
int main(){
    int m[100],n,i=0,p=0;
    n=input(m);
    palindrome(m,n,p,i);
    output(m,n,p,i);
}

DowL_HH4 вне форума   Ответить с цитированием
Старый 03.07.2018, 21:17   #2
2Lui
Форумчанин
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 67
Репутация: 0
По умолчанию

Это вы писали код или в интернете нашли?
Удаление: можешь создать еще один массив тогда когда захочешь "удалить" просто переписываешь все в другой за исключение того элемента который якобы хочешь удалить (плохой вариант если большой массив), можешь так же это провернуть с родным массивом просто когда будешь что то удалять нужно будет менять n то есть количество_элементов -1

Последний раз редактировалось 2Lui; 03.07.2018 в 23:25.
2Lui вне форума   Ответить с цитированием
Старый 03.07.2018, 23:56   #3
DowL_HH4
Пользователь
 
Регистрация: 23.03.2018
Сообщений: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от 2Lui Посмотреть сообщение
Это вы писали код или в интернете нашли?
Это я писал код, это палиндром вставкой. Т.е. мне только работать с циклом старого палиндрома? Или создавать новый?
DowL_HH4 вне форума   Ответить с цитированием
Старый 04.07.2018, 00:38   #4
2Lui
Форумчанин
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 67
Репутация: 0
По умолчанию

Цитата:
Сообщение от DowL_HH4 Посмотреть сообщение
Это я писал код, это палиндром вставкой. Т.е. мне только работать с циклом старого палиндрома? Или создавать новый?
Ну если вам нужно сделать удаление элемента сделайте отдельную функцию в которую передаете массив и номер элемента который нужно удалить.

Ну а если вам нужно
Код:

переделать в удаление

тогда переделывайте.

Конкретно опишите что и откуда вам нужно удалить? если опишите напишу вам функцию.

Последний раз редактировалось 2Lui; 04.07.2018 в 01:08.
2Lui вне форума   Ответить с цитированием
Старый 04.07.2018, 10:33   #5
DowL_HH4
Пользователь
 
Регистрация: 23.03.2018
Сообщений: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от 2Lui Посмотреть сообщение
что и откуда вам нужно удалить?
Нужно чтобы примерно выглядело так: я ввожу: 1 2 3 4 2 1, в ответе выходит 3, правда я даже не знаю, нужно ли потом будет выводить и палиндром, который получился или же только место удаленного числа.
Можно конечно и не переделывать все это и сделать отдельную функцию, но для меня это будет сложновато.
DowL_HH4 вне форума   Ответить с цитированием
Старый 04.07.2018, 11:28   #6
2Lui
Форумчанин
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 67
Репутация: 0
По умолчанию

Я так понял вам ничего удалять не нужно только вывести, вот вашу переправил.

Код:

void output(int m[100], int n, int p, int i) {
	cout << "Answer: ";
	for (int j = 1; j <= n; j++)
		if (j != i) cout << m[j];
	cout << endl;
	if ((i>0) && (p == 1)) cout << "m["<<i<<"]"<<"= "<<i<< endl;
	else cout << 0 << endl;
}

2Lui вне форума   Ответить с цитированием
Старый 05.07.2018, 12:05   #7
DowL_HH4
Пользователь
 
Регистрация: 23.03.2018
Сообщений: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от 2Lui Посмотреть сообщение
Я так понял вам ничего удалять не нужно только вывести, вот вашу переправил.
Данный алгоритм тоже не всегда работает(Input
Size: 5
Elements:
1
1
1
2
1
Answer: 1121
m[2]= 2)
Куда копать?
DowL_HH4 вне форума   Ответить с цитированием
Старый 05.07.2018, 12:55   #8
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 23,899
Репутация: 5228
По умолчанию

такой вариант устроит?

Код:

#include <iostream>
#include <iomanip>
using namespace std;
 
int input(int m[100]){
    int i=1,n;
    cout<<"Input:"<<endl;
    cout<<"Size: "; cin>>n;
    cout<<"Elements:"<<endl;
    for(i;i<=n;i++){cin>>m[i];}
    return  n;
}

 
int ispalindrome(int array_full[100], int n, int ignore_index){
    int i, c, m[100];
    c = 1;
    for(i=1;i<=n;i++){
      if(i != ignore_index)	
        m[c++] = array_full[i];
    }
    c=(n-1)/2;
    for(i=1;i<=c;i++){
        if(m[i]!=m[n-i]){
            return 0;
        }
    }
    return 1;
}
 
int find_delited_pozition(int m[100], int n){
	int i;
	for(i=1;i<=n;i++){
    		if(ispalindrome(m,n,i))
    			return i;
	}
	return -1;
}

void out_result(int m[100], int n, int del_pozition){
	if(del_pozition <0)
		cout<<"No solution! Not found deleted index for palindrom"<<endl;
	else{
		cout<<"Deleted element at index "<<del_pozition<<endl;
		cout<<"Elements: ";
		for(int i=1;i<=n;i++){
			if(i!=del_pozition)
				cout<<m[i]<<" ";
		}
		cout<<endl;
	}
	
	
}
 
int main(){
    int m[100],n;
    n=input(m);
    out_result( m, n, find_delited_pozition(m, n));
    return 0;
}


p.s. Вот только я не понял, зачем Вы нумерацию сделали от 1? Массивы прекрасно индексируются от нуля.
я, конечно, сохранил эту вашу затею, но я её крайне не одобряю!
Serge_Bliznykov вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Палиндром на С# L_i_l Помощь студентам 0 06.06.2013 22:58
палиндром DmuS Assembler 4 31.03.2011 06:45
Палиндром JokerWCC Помощь студентам 4 12.10.2010 15:02
Палиндром shark2010 Помощь студентам 11 23.04.2010 03:07


13:56.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru