Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Одномерный массив!Помогите дописать код 
:(
    Опции темы
aleksejj
  Дата 9.6.2009, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.6.2009

Репутация: нет
Всего: нет



Друзья,выручайте!Доделать код!
Код
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define max 100
void gen( int k, int h, int j, int x[max]);
void out (int k, int x[max]);
void BubbleSortInd (int k, int x[max]);
void BubbleSort (int k, int x[max]);
void main()
{
int t[max],n,a,b;
do
{
printf ("\nВведите кол-во элементов массива n (n<=50): ");
scanf ("%d",&n);
}
while (n>max);
printf ("Введите a и b: ");
scanf ("%d%d",&a,&b);
gen(n,a,b,t);
printf ("Сгенерированн массив: \n");
out(n,t);
printf("\nПолученный: \n");
BubbleSortInd(n,t);
out(n,t);
}

void gen( int k, int a, int b, int x[max])
{
int i;
srand (time(NULL)*1000);
for (i=0;i<k;i++)
{

x[i]=(rand()*1.0/(RAND_MAX)*(a-b)+b);

}
}

void out (int k, int x[max])
{
int i;
for (i=0;i<k;i++)
printf ("%d ",x[i]);

}

void BubbleSortInd (int k, int x[max])
{
int i,tek,mx,el;
el = 0;
tek=mx=1;
for(i=1; i<=k+1; i++)
if(i==k || x[i]!=x[i-1])
{
if(tek>mx) { mx = tek; el = i-1; }
tek = 1;
}
else tek++;
++k;
for(i=k+1; i>=el+1; i--)
x[i] = x[i-1];
x[el+1] = x[el];
}


Здесь нужно увеличить каждую максимальную серию на один элемент!
Например:
Был массив==>
x[0]=4
x[1]=1
x[2]=9
x[3]=9
x[4]=9
x[5]=6
x[6]=6
x[7]=9
x[8]=9
x[9]=9
А надо:
x[0]=4
x[1]=1
x[2]=9
x[3]=9
x[4]=9
x[5]=9
x[6]=6
x[7]=6
x[8]=9
x[9]=9
x[10]=9
x[11]=9

Добавлено @ 22:29
Помогите пожалуйста!У меня завтра зачёт по программированию,осталась последняя программма!



M
bsa
Пользуйся кнопкой код


Это сообщение отредактировал(а) bsa - 10.6.2009, 17:43
PM MAIL   Вверх
andrew_121
Дата 9.6.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Код отформатируй! Глаза жалко ломать!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
aleksejj
  Дата 9.6.2009, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.6.2009

Репутация: нет
Всего: нет



void BubbleSortInd (int k, int x[max])
{
int i,tek,mx,el;
el = 0;
tek=mx=1;
for(i=1; i<=k+1; i++)
if(i==k || x[i]!=x[i-1])
{
if(tek>mx) { mx = tek; el = i-1; }
tek = 1;
}
else tek++;
++k;
for(i=k+1; i>=el+1; i--)
x[i] = x[i-1];
x[el+1] = x[el];
}
Эта функция отвечает за добавления элементов!Но я не могу сделать,чтобы увеличились все серии и массив увеличился на количество этих элементов

Добавлено через 1 минуту и 10 секунд
void BubbleSortInd (int k, int x[max])
{
int i,tek,mx,el;
el = 0;
tek=mx=1; // tek - длина текущей серии
// mx - максимальная длина
for(i=1; i<=k+1; i++)  // идем до конца массива
 if(i==k || x[i]!=x[i-1])  // если достигли конца массива или
 // текущий элемент не равен предыдущему
     {
 
  if(tek>mx) // если текущая серия длиннее максимальной,
       {
    mx = tek;  // запоминаем длину
    el = i-1;
      }       // и позицию последнего элемента в серии
   
 tek = 1;  // сбрасываем длину текущей серии (т.к. уже  перешли к другой)
  
     }
 else tek++;
 
++k; // увеличиваем размер массива, т.к. сейчас
 // добавим еще один элемент 
  
    for(i=k+1 ; i>=el+1; i--) // идем от конца к последнему элементу самой длинной серии
 x[i] = x[i-1]; // текущий элемент = предыдущему (сдвигаем часть массива вправо)
 x[el+1] = x[el];  // теперь добавляем еще один элемент     
               
   }

PM MAIL   Вверх
andrew_121
Дата 9.6.2009, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Сказал же - отформатируй код! А ты что сделал?!
Давай условие. С утра сделаю.
На С, или С++ ?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
aleksejj
Дата 9.6.2009, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.6.2009

Репутация: нет
Всего: нет



Дан одномерный целочисленный массив,заполненный случайными числами.Серией называется группа подряд идущих элемениов,а их длинной-количество этих элементов(длина может равняться 1 ).Изменить массив,увеличив все серии наибольшей длины на один элемент.

Добавлено через 51 секунду
НА СИ

Добавлено через 1 минуту и 36 секунд
А во сколько ты примерно сделаешь?Просто у меня зачёт в 10.25!Помоги
PM MAIL   Вверх
andrew_121
Дата 9.6.2009, 23:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



На будущее.
Вот что значит форматировать код.
user posted image


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
aleksejj
Дата 10.6.2009, 07:36 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.6.2009

Репутация: нет
Всего: нет



 smile 
PM MAIL   Вверх
zim22
Дата 10.6.2009, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



andrew_121, вы уверены что в вашем коде будут бросаться только стандартные исключения?
я думаю более правильно добавить в конце ещё один catch(...)


--------------------
PM MAIL   Вверх
azesmcar
Дата 10.6.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(zim22 @  10.6.2009,  09:40 Найти цитируемый пост)
я думаю более правильно добавить в конце ещё один catch(...) 

зачем же catch(...) ?
catch(boost::exception&), а уж после этого можно
Код

catch(...)
{
   show_fatal_error_and_die("ух ты!");
}

PM   Вверх
andrew_121
Дата 10.6.2009, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



zim22
azesmcar, Спасибо за замечания. Полностью согласен smile . Но это был пример форматирования кода smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
azesmcar
Дата 10.6.2009, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(andrew_121 @  10.6.2009,  10:00 Найти цитируемый пост)
Но это был пример форматирования кода 

 smile 
 smile 
просто интересно, а что за #endif? В каком #ifdef е функция main?
PM   Вверх
andrew_121
Дата 10.6.2009, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



azesmcar, Это файл реализации некого объекта. Выше есть строка
Код

#ifdef 1
...

Для отладки.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
zim22
Дата 10.6.2009, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



мне вот интересно, в случае использования function-try блока куда return вставлять?
в каждый catch?
Код

int main()
try
{
  // do smth
  return 0;
} catch(exception&) {
  return 0;
} catch(...) {
  return 0;
}



Это сообщение отредактировал(а) zim22 - 10.6.2009, 11:19


--------------------
PM MAIL   Вверх
Soah
Дата 10.6.2009, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 6
Всего: 54



finally c++
Симуляция блока try-finally для С++

Цитата(zim22 @  10.6.2009,  11:18 Найти цитируемый пост)
куда return вставлять?

Код

int main() {
    try {
        // do smth
    } catch(exception&) {
        // ...
    } catch(...) {
        // ...
    }

    return 0;
}


Это сообщение отредактировал(а) Soah - 10.6.2009, 11:47
PM MAIL   Вверх
zim22
Дата 10.6.2009, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Soah, почитал. это всё не то.
Про методику RAII я знаю. Но здесь вопрос не в захвате/освобождении ресурса при выхоже из области видимости, а в том, что функция main должна возвращать статус завершения.
И если в моём блоке try исключения не будет - то последняя строчка (return 0) выполнится. Но если exception будет кинут, то до return 0 мы не дойдём, соответственно необходимо будет сделать return в одном из блоков catch. Вопрос был в том, что если блоков catch несколько - то 
Цитата(zim22 @  10.6.2009,  11:18 Найти цитируемый пост)
 куда return вставлять?в каждый catch?


приведённый в rsdn аналог finally не подходит
Код

#define finally(Saver) \
catch ( ... ) \
{ \
  Saver \
  throw; \
} \
Saver

т.к. он вставляет catch(...)
Но exception может быть перехвачен в блоке catch выше. например в этом случае:
Код

try {throw exception(); }
catch(exeption&){ return -1; }
catch(...){ return -1; }


Приведённый Вами код меня не устраивает. Это не function-try блок и с ним всё проще, return в конце всех catch'ей ставится.
Код

int main() {
    try {
        // do smth
    } catch(exception&) {
        // ...
    } catch(...) {
        // ...
    }

    return 0;
}

function-try блок - это слово try, которое ставится ДО блока кода(открывающейся фигурной скобки), а не внутри него.

он необходимо не так часто, но иногда полезен, например, чтобы перехватывать исключения в constructor initializer list
Standard 15.4
Код

int f( int );
class C {
  int i;
  double d;
public :
  C(int , double );
};
C::C( int ii , double id)
try
: i(f(ii )) , d(id)
{
  / / constructor function body
}
catch (...)
{
  / / handles exceptions thrown from the ctor-initializer
  / / and from the constructor function body
}


Это сообщение отредактировал(а) zim22 - 10.6.2009, 12:08


--------------------
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0925 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.