Есть ответ 👍

В файле unit1.cpp напишите функцию int DeleteDuplicates(int r[], int n){
которая удаляет дубликатные значения из несортированного массива r длиной n.
Функция возвращает длину результирующего массива
//---------------------------------------------------------------------------
/* УДАЛИТЬ ДУБЛИКАТЫ В НЕСОРТИРОВАННОМ МАССИВЕ */
#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}

#define DIGIT 0
#define COMMA 2
#define DEFIS 3
#define BLANK 4
#define OTHER 5
//---------------------------------------
static short SymClass(char z){
// для ParsePages
if(z>='0' && z<='9'){
return DIGIT;
}
if(z==','){
return COMMA;
}
if(z=='-'){
return DEFIS;
}
if(z==' '){
return BLANK;
}
return OTHER;
}

//-------------------------------------------
int StringToIntArray(AnsiString p, int *r){
int k,p1=-1,p2=-1;
char *s;
char buf[20];
short sClass;
int i=0; // номер символа набираемого числа
int n=0; // число страниц (текущая длина p)
int LastPunkt=-1; // последний символ из DEFIS или COMMA
// -1 значит никакого

if(p.IsEmpty()){
return 0;
}
for(s=p.c_str(); *s!='\0'; s++){
sClass=SymClass(*s);
switch(sClass){
case DIGIT:
buf[i++]=*s;
break;
case COMMA:
buf[i]='\0';
if(LastPunkt==-1 || LastPunkt==COMMA){
p1=atoi(buf);
r[n++]=p1;
}
if(LastPunkt==DEFIS){
p2=atoi(buf);
if(p1==-1 || p2==-1){
return -1;
}
if(p2 return -1;
}
for(k=p1;k<=p2;k++){
r[n++]=k;
}
p1=p2=-1;
}
i=0;
LastPunkt=COMMA;
break;
case DEFIS:
buf[i]='\0';
p1=atoi(buf);
p2=-1;
LastPunkt=DEFIS;
i=0;
break;
case BLANK:
break;
default:
return -1;
} // switch
}
buf[i]='\0';
if(LastPunkt==-1 || LastPunkt==COMMA){
p1=atoi(buf);
r[n++]=p1;
}
if(LastPunkt==DEFIS){
p2=atoi(buf);
if(p1==-1 || p2==-1){
return -1;
}
for(k=p1;k<=p2;k++){
r[n++]=k;
}
}
return n;
}

//===========Не удаляйте и не изменяйте эту строку
int DeleteDuplicates(int r[], int n){
// ФУНКЦИЯ, КОТОРУЮ ВЫ ДОЛЖНЫ НАПИСАТЬ
// удалить дубликатные значения из
// несортированного массива r длиной n.
// Функция возвращает длину результирующего массива
return n;
}
//===========Не удаляйте и не изменяйте эту строку

//---------------------------------------------------------------------------
void __fastcall TForm1::btnClick(TObject *Sender){
int r[1024];
int n= StringToIntArray(edt1->Text, r);
int k=DeleteDuplicates(r,n);
AnsiString s="", Comma="";
for(int i=0; i s=s+Comma+r[i];
Comma=",";
}
edt2->Text=s;
}

203
327
Посмотреть ответы 1

Ответы на вопрос:

буля4
4,5(65 оценок)

Нет это может быть опасно

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS