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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.02.2012, 13:49   #1
Тёрн
Новичок
Джуниор
 
Регистрация: 29.02.2012
Сообщений: 2
По умолчанию (C++)Непрямоугольная матрица и поиск палиндромов в ней

Доброго времени суток!
Дали задание на лабораторную, притом, что на лекциях мы проходим какую-то общую теорию и никакой конкретики.
Из всего написали, как делать ввод и всё.

Собственно, задание:

Цитата:
Из входного потока вводится непрямоугольная матрица целых чисел [a[i,j]], i=1, ...,m, j=1, ..., n(i)). Значения m и n(i) заранее не известны и вводятся из входного потока.
Сформировать новую матрицу, поместив в её i-ю строку элементы из i-й строки исходной матрицы, являющиеся палиндромами.
Исходную и полученную матрицы вывести в выходной поток с необходимыми комментариями.
Матрицы вводятся динамически.
Палиндром - выражение, читающееся одинаково с обоих сторон (выражения, типа: "А роза упала на лапу Азора")

Всё, что я смог написать - это списать из тетрадки ввод и подумать над выводом(Вывод надо как-то писать по аналогии с вводом, видимо):

Код:

#include <iostream>
using namespace std;
 
//Для задания непрямоугольной матрицы
struct Line{
        int n;
        double *ar;
Line *matr;
};
 
//Функция ввода
istream&input(int&a){
        while(!(cin>>a)){
                if(cin.eof())
                        break;
                cin.clear();
                cin.ignore();
        }
        return  cin;
}
 
//Ввод количества строк
int input(){
        int n;
        const char*pr="";
        do{
                cout<<pr<<endl;
                pr="error!!!";
                cout<<"enter number of int:";
                input(n);
        }while(n<=0);
        return n;
}
 
//Ввод матрицы
int input(Line*&p){
        int m=input();
        p=new Line[m];
        for(int i=0;i<m;++i){
                p[i].n=input();
                p[i].ar=new double[p[i].n];
                for(int j=0;j<p[i].n,++j)
                        input(p[i].ar[j]);
        }
        return m;
}
 
//Это я начал что-то с выводом предполагать
void output(Line*&p){
        for(int i=0;i<m;++i){
                for(int j=0;j<p[i].n;++j)
                        cout<<p[i].n<<endl;
        }
 
int main(){
От Си осталась программа определения палиндрома, выписал из неё функции определения палиндрома, может, как-то поможет (но там ,к тому же использовалась библиотека String.h (Здесь ничего подобного, вроде, не нужно использовать):

Вроде, cin удаляет все пробелы и табуляторы перед словом, поэтому функция проверки на них не нужна.

Код:
 
//Переворот строки
void reverse (char *from, char *to){
 int i=strlen(from);
 strcpy(to,"");
 while(i -->0)
  strncat(to,&from[i],1);
}
 
//Отвечает, палиндром или нет
int isapal(char *str){
 char tmp1[80],tmp2[80];
 strcpy(tmp1,str);
 compress(str,tmp1);
 reverse (tmp1,tmp2);
 return !strcmp(tmp1,tmp2);
}
Помогите пожалуйста. Желательно с пояснениями, чтобы дальше я хоть мог предположить, как следующие программы делать.
Тёрн вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица m*n и числа по возрастанию в ней BotoBot Паскаль, Turbo Pascal, PascalABC.NET 3 01.06.2009 01:49
Матрица, операции с ней jorjinho10 Паскаль, Turbo Pascal, PascalABC.NET 0 30.04.2009 18:58
Поиск палиндромов в тексте. DELPHI JuliaBelochka Помощь студентам 7 26.04.2009 14:57