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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2009, 19:30   #1
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию исключение эл-ов из массива

Задание: Дан массив х1,х2,...,х15. Исключить из него третий положительный эл-т считая от конца. Подкиньте идею как выбрать элемент 3ий с конца. Очень прошу.
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)
Arcueid1691 вне форума Ответить с цитированием
Старый 24.09.2009, 19:33   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Да так же как и с начала ) Только ставишь индекс на конец массива и ищешь третий положительный уменьшая индекс. Что сложного-то?
netrino вне форума Ответить с цитированием
Старый 24.09.2009, 19:43   #3
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию

т.е. получается формируем новый массив и вперед?)))
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)
Arcueid1691 вне форума Ответить с цитированием
Старый 24.09.2009, 19:51   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Ну да, в одном цикле находите индекс этого элемента, в другом записываете всё это добро в новый массив, исключая этот элемент )
netrino вне форума Ответить с цитированием
Старый 24.09.2009, 19:53   #5
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию

хм... а я думала что существует еще какой либо способ)))) спасибо большое))
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)
Arcueid1691 вне форума Ответить с цитированием
Старый 24.09.2009, 20:00   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Ну, безусловно существует, но этот я нахожу самым простым )
netrino вне форума Ответить с цитированием
Старый 24.09.2009, 22:33   #7
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию

ммм.. если не затруднит, не могли бы Вы с условием помочь? я не могу придумать как его наложить.
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)
Arcueid1691 вне форума Ответить с цитированием
Старый 24.09.2009, 22:59   #8
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Я тут пересмотрел своё мнение... )) Может без доп. массива и проще будет )
Как пример:
Код:
#include <iostream>
#include <stdlib.h>

int main()
{
    int a[15];
    int i;
	int count = 0;

	for(int i = 0; i < 15; i++) {
		a[i] = rand()%53 - 32;
		std::cout << a[i] << ' ';
	}

	std::cout << std::endl;

    for(i = 14; i >= 0; i--)
        if(a[i] > 0)
            if(++count == 3)
                break;

	for(i; i < 14; i++)
		a[i] = a[i+1];

	for(int i = 0; i < 14; i++) 
		std::cout << a[i] << ' ';

     return 0;
}

Последний раз редактировалось netrino; 24.09.2009 в 23:10. Причина: Небольшая ошибочка была :)
netrino вне форума Ответить с цитированием
Старый 08.10.2009, 20:03   #9
Arcueid1691
Пользователь
 
Аватар для Arcueid1691
 
Регистрация: 31.05.2009
Сообщений: 97
По умолчанию

а если с использованием указателей, не могу написать ту часть где массив сдвигается. если не затруднит подскажите, пожалуйста)
спят подружки вредные безмятежным сном,
Снятся мышкам хлебные крошки под столом, Буратинам - досточки, кошкам - караси,
Всем собакам - косточки, программистам - Си (с)
Arcueid1691 вне форума Ответить с цитированием
Старый 08.10.2009, 20:11   #10
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Да абсолютно так же)
Код:
#include <iostream>
#include <stdlib.h>

int main()
{
    int a[15];
    int i;
	int count = 0;

	for(int i = 0; i < 15; i++) {
		a[i] = rand()%53 - 32;
		std::cout << *(a+i) << ' ';
	}

	std::cout << std::endl;

    for(i = 14; i >= 0; i--)
        if(*(a+i) > 0)
            if(++count == 3)
                break;

	for(i; i < 14; i++)
		*(a+i) = *(a+i+1);

	for(int i = 0; i < 14; i++) 
		std::cout << *(a+i) << ' ';

     return 0;
}
Если нет желания постоянно писать что-то вроде *(a+i) можно определить указатель на массив a со смещением i и увеличивать его, а не индекс
netrino вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу обработать исключение CrazyXaoc C++ Builder 10 17.02.2010 14:56
Исключение (Delphi) VadEr Помощь студентам 2 05.06.2009 15:29
Как обработать исключение? XPAiN БД в Delphi 9 16.05.2008 15:09
Исключение EIdReadTimeout Pedro Работа с сетью в Delphi 1 22.09.2007 22:51
Неуловимое исключение в Apro компонентах Slaveg123 Работа с сетью в Delphi 0 01.07.2007 00:28