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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2015, 15:02   #1
Aleksey68
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 26
Восклицание Прошу помочь с этой задачкой.

Составить описание класса для определения одномерных массивов строк фиксированной длины. Предусмотреть контроль выхода за пределы массива, возможность обращения к отдельным строкам массива по индексам, выполнения операций поэлементного сцепления двух массивов с образованием нового массива, слияния двух массивов с исключением повторяющихся элементов, а так же вывод на экран элемента массива по заданному индексу и всего массива. Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.
Aleksey68 вне форума Ответить с цитированием
Старый 01.12.2015, 15:07   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

и чаво? хде проблема?
p51x вне форума Ответить с цитированием
Старый 01.12.2015, 15:16   #3
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Язык какой ?
spectrum988 вне форума Ответить с цитированием
Старый 01.12.2015, 15:59   #4
Aleksey68
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 26
По умолчанию

язык С++. есть код
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <cstdio>
#include <iomanip>
#include <math.h>
#include <locale>
using namespace std;
class Massiv
{
 int *a,*d,n,min;
 public:
 void Sozd();
 void Vvod_Sl();
 void Form(int n1, int n2);
 void Form_2(int n3, int n4);
 void Print();
 void Print_2(int number);
 void Print_3(int rec, int field);
};
void Massiv :: Sozd() //Создание массива строк
{
int m;
 cout<<"Количество строк=";cin>>n;
 int min=0;
 for (int i=0;i<n;i++)
 {
 cout<<"Количество элементов "<< i+1 <<" в строке= ";
 cin>>m;
 *(d+i)=m;
 if (min<m) min=m;
 }
 a=(int*)malloc(sizeof(int)*n*min);
}
void Massiv::Vvod_Sl()// Ввод случайных чисел в массив строк
{
 Sozd();
 for(int i=0;i<n;i++)
 for (int j=0; j<*(d+i); j++)
 {
 *(a+i+j)=rand()%100;
 }
}
void Massiv :: Print()//Ввывод всех строк
{
 for(int i=0;i<n;i++)
 {
 for (int j=0; j<*(d+i);j++)
 {
 cout<<setw(6)<<*(a+i+j);
 }
 cout<<endl;
 }
}
void Massiv :: Print_2(int number)//Ввывод строк по индексу
{
 for(int i=0;i<n;i++)
 {
 for (int j=0; j<*(d+i);j++)
 {
 if (i==number) cout<<setw(6)<<*(a+i+j);
 }
 cout<<endl;
 }
}
 
void Massiv :: Print_3(int rec, int field)//Ввывод конкретного елемента конкретной строки
{
 for(int i=0;i<n;i++)
 {
 for (int j=0; j<*(d+i);j++)
 {
 if ((i==rec)&&(j==field)) cout<<"Даный элемент= "<<setw(6)<<*(a+i+j);
 else "Массив с такими даннымы не найден!";
 }
 cout<<endl;
 }
}
void Massiv :: Form(int n1,int n2)//Сцепление двух массивов
{
 int m1,m2,k,j,l,p;
 int c[20];
 m1=*(d+n1);
 m2=*(d+n2);
 int m3=m1+m2;
 k=0;
 for (l=0;l<m3;l++)
 if(l<m1)
 {c[l]=*(a+n1+l);
 cout<<setw(6)<<c[l];
 }
 else if((l>=m1)&&(l<m3))
 {
 c[l]=*(a+n2+k);
 cout<<setw(6)<<c[l];
 k++;
 }
}
void Massiv :: Form_2(int n3,int n4)//Слияние двух массивов
{
 int m1,m2,k,j,l,p,l1;
 int c[20],f[20];
 m1=*(d+n3);
 m2=*(d+n4);
 int m3=m1+m2;
 k=0;
 for (l=0;l<m3;l++)
 {
 if(l<m1)
 {c[l]=*(a+n3+l);
 }
 else if((l>=m1)&&(l<m3))
 {
 c[l]=*(a+n4+k);
 k++;
 }
 }
 l1=0;
 f[l1]=c[l1];
 cout<<setw(6)<<f[l1];
 for(p=1;p<m3;p++)
 if(f[l1]!=c[p])
 { l++;
 f[l1]=c[p];
 cout<<setw(6)<<f[l1];
 }
}

Последний раз редактировалось Stilet; 01.12.2015 в 16:45.
Aleksey68 вне форума Ответить с цитированием
Старый 01.12.2015, 15:59   #5
Aleksey68
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 26
По умолчанию

продолжение
Код:
void main()
{
setlocale(LC_ALL,"Russian");
 Massiv a,b;
 int number,punkt,rec,field,kol,n1,n2,n,n3,n4;
  cout<<"1 - Создание массива ";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt;
 while (punkt!=7) //Меню
 {
 switch(punkt)
 {
 case 1: {
 a.Vvod_Sl();
 cout<<endl;
 a.Print();
 cout<<endl;
 cout<<"1 - Создание массива";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt;
 }
 break;
 case 2: {
 a.Print();
 cout<<endl;
 cout<<"1 - Создание массива";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt; }
 break;
 case 3: {
 cout<<"Введите номер массива (нумерация начинаеться с 0!): ";cin>>number;
 cout<<endl;
 a.Print_2(number);
 cout<<"1 - Создание массива";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt;
 }
 break;
 case 4: {
 cout<<"Введите номер 1-го массива (нумерация начинаеться с 0!!!): ";cin>>n1;cout<<endl;
 cout<<"Введите номер 2-го массива (нумерация начинаеться с 0!!!): ";cin>>n2;cout<<endl;
 a.Form(n1,n2);
 cout<<endl;
 cout<<"1 - Создание массива";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt;}
 break;
 case 5: {
 cout<<"Введите номер 1-го массива (нумерация начинаеться с 0!!!): ";cin>>n3;cout<<endl;
 cout<<"Введите номер 1-го массива (нумерация начинаеться с 0!!!): ";cin>>n4;cout<<endl;
 a.Form_2(n3,n4);
 cout<<endl;
 cout<<"1 - Создание массива";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt;}
 break;
 
 case 6: {
 cout<<"Введите номер строки массива(нумерацыия начинаеться с 0!): ";cin>>rec;
 cout<<endl;
 cout<<"Введите номер столбца: ";cin>>field;
 cout<<endl;
 a.Print_3(rec,field);
 cout<<"1 - Создание массива";cout<<endl;
 cout<<"2 - Вывод всех строк";cout<<endl;
 cout<<"3 - Вывод строки по индексу";cout<<endl;
 cout<<"4 - Сцепление двух массивов";cout<<endl;
 cout<<"5 - Слияние двух масивов";cout<<endl;
 cout<<"6 - Вывод конкретного элемента конкретной строки";cout<<endl;
 cout<<"7 - Выход";cout<<endl;
 cout<<"Выберете пункт в меню: "; cin>> punkt;}
 break;
 case 7:
 break;
 }
 }
 }
 но при указании количества символов в строке выдает ошибку. 	
Необработанное исключение в "0x00412862" в "*****.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcccccccc". указывает на строку  *(d+i)=m;

Последний раз редактировалось Stilet; 01.12.2015 в 16:46.
Aleksey68 вне форума Ответить с цитированием
Старый 01.12.2015, 16:10   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

И правильно выдает - память выделять кто будет?
p51x вне форума Ответить с цитированием
Старый 01.12.2015, 16:32   #7
Aleksey68
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 26
По умолчанию

ну я не силен в программирование. самые самые азы. подскажи как выделить память? я так понимаю под массив который я создаю?
Aleksey68 вне форума Ответить с цитированием
Старый 01.12.2015, 16:36   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

http://lmgtfy.com/?q=c%2B%2B+%D1%80%...B0%D0%BC%D0%B8
p51x вне форума Ответить с цитированием
Старый 01.12.2015, 16:44   #9
Aleksey68
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 26
По умолчанию

оригинально. если бы я еще понимал что куда
Aleksey68 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помочь с задачкой на Си logas83 Помощь студентам 5 09.10.2013 16:59
Алгоритмы. Не прошу решить. Прошу помочь! pascaluser Паскаль, Turbo Pascal, PascalABC.NET 2 12.10.2012 08:45
Си(не с++)просьба помочь с задачкой МихаилК Общие вопросы C/C++ 1 10.04.2012 20:49
Просьба помочь с задачкой:) ssnnqq Паскаль, Turbo Pascal, PascalABC.NET 2 31.03.2012 21:29
Можете помочь с задачкой? Fitness Паскаль, Turbo Pascal, PascalABC.NET 2 26.12.2007 17:46