0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 23
|
|
1 | |
задачи на C++, на массивы11.04.2009, 22:13. Показов 9615. Ответов 59
Метки нет (Все метки)
дана такая задача:
дан линейный массив А, состояий из N элементов. Составить прорграмму удаления в массиве всех элементов, значения которых равны нулю. В преобразованном линейном массиве найти макс и мин по значению элементы, считая что такие элементы единственные. Элементы, расположенные между макс и мин, переместить в начало массива с одновременным удалением с исходных мест. Найденные значения и преобразованный линейный массив выдать на экран в строку. у меня конечно есть мысли..но как соединить все это в кучу пока не получется)... ну во-первых, массив из N элементов нужно создавать с помощью указателя: int n; double *A; cout << "Vvedite razmer massiva: "; cin >> n; A=new double [n]; ??????... можно ли здесь использовать метод splice для удаления элементов??? для того чтобы "Элементы, расположенные между макс и мин, переместить в начало массива" нужно навена узнать номера(расположение) этих элементов в массиве???...и можно ли использовать пузырьковый метод????. строго не судите я в этом деле новичок))))...пытаюсь как могу)...
0
|
11.04.2009, 22:13 | |
Ответы с готовыми решениями:
59
Массивы - задачи Задачи на массивы. Задачи на массивы Задачи на массивы |
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
|
11.04.2009, 22:27 | 2 |
я бы сделал так:
1. посчитал бы кол-во нулей в масиве 2. создал бы новый массив размером = прошлый размер - кол-во нолей 3. переписал бы в него все ненулевые элементы 4. удалил бы первый и указателю присвоил бы адрес второго 5. работал дальше
0
|
829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
||||||
12.04.2009, 04:06 | 3 | |||||
Попробуй этот код, но работоспособность не гарантирую(среда что-то глючила)
0
|
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 12
|
|
12.04.2009, 05:58 | 4 |
Я бы удивился бы еслиб этот код работал, нельзя так обьявлять массивы. Компилятор не знает сколько памяти под нево выделить. Если ты хочеш вводить с клавы размер массива, то под такой массив нада память динамически выделять с помощью нью, маллок и т.д.
"но даже если n сделать константой - оно пишет туже ошибку" - попробуй обьектный код удалить и пересобрать)
0
|
829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
||||||
12.04.2009, 11:52 | 5 | |||||
Вот я выделяю память для массивов, но теперь как с ним работать(указатели не догоняю:'()
0
|
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
||||||||||||||||
12.04.2009, 12:09 | 6 | |||||||||||||||
два варианта:
1. через адресную арифметику
p.s: удалять лучше так
0
|
829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
|
12.04.2009, 15:00 | 7 |
Все равно оно как-то по-корявому работает
0
|
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
|
12.04.2009, 15:11 | 8 |
всмысле? то что написал я - есть динамическое создании матрицы.... двумерного массива..другого варианта нет! я же не знаю что ты хочешь сделать
0
|
829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
|||||||||||
12.04.2009, 16:14 | 9 | ||||||||||
Вот немного исправленный код
Код
1>c:\myprojects\mac\mac\mac.cpp(23) : error C2061: синтаксическая ошибка: идентификатор "darray1" 1>c:\myprojects\mac\mac\mac.cpp(24) : warning C4552: <: оператор не имеет результата; требуется оператор с побочным действием 1>c:\myprojects\mac\mac\mac.cpp(24) : error C2143: синтаксическая ошибка: отсутствие ";" перед ")" 1>c:\myprojects\mac\mac\mac.cpp(24) : error C2143: синтаксическая ошибка: отсутствие ";" перед ")" 1>c:\myprojects\mac\mac\mac.cpp(29) : error C2061: синтаксическая ошибка: идентификатор "darray1" 1>c:\myprojects\mac\mac\mac.cpp(29) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{" 1>c:\myprojects\mac\mac\mac.cpp(32) : error C2061: синтаксическая ошибка: идентификатор "darray" 1>c:\myprojects\mac\mac\mac.cpp(32) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{" 1>c:\myprojects\mac\mac\mac.cpp(37) : error C2143: синтаксическая ошибка: отсутствие ";" перед ">" 1>c:\myprojects\mac\mac\mac.cpp(37) : warning C4390: ";": обнаружен пустой контролируемый оператор; это правильно? 1>c:\myprojects\mac\mac\mac.cpp(37) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{" 1>c:\myprojects\mac\mac\mac.cpp(45) : error C2143: синтаксическая ошибка: отсутствие ";" перед "<" 1>c:\myprojects\mac\mac\mac.cpp(45) : warning C4390: ";": обнаружен пустой контролируемый оператор; это правильно? 1>c:\myprojects\mac\mac\mac.cpp(45) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{" Полностью убрал динамику и сделал с костантой
Код
1>c:\myprojects\mac\mac\mac.cpp(37) : error C2143: синтаксическая ошибка: отсутствие ";" перед ">" 1>c:\myprojects\mac\mac\mac.cpp(37) : warning C4390: ";": обнаружен пустой контролируемый оператор; это правильно? 1>c:\myprojects\mac\mac\mac.cpp(37) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{" 1>c:\myprojects\mac\mac\mac.cpp(45) : error C2143: синтаксическая ошибка: отсутствие ";" перед "<" 1>c:\myprojects\mac\mac\mac.cpp(45) : warning C4390: ";": обнаружен пустой контролируемый оператор; это правильно? 1>c:\myprojects\mac\mac\mac.cpp(45) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
0
|
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
|||||||||||
12.04.2009, 16:44 | 10 | ||||||||||
вот часть рабочего кода.. дальше справишься?
вот финальный рабочий код.. разбирайтесь
1
|
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 23
|
|
13.04.2009, 10:27 [ТС] | 11 |
хм....пытаюсь разобраться в написанном..но что-то пока плохо получатся...
попробовала...код не работает... и еще...простите за наверное очнь глупый вопрос, но не понимаю для чего здесь #include "stdafx.h" и setlocale(LC_ALL,".1251");
0
|
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
|
13.04.2009, 10:37 | 12 |
это заголовочный файл в среде Visual C++ 2005-2008. Для других компиляторов и сред он не нужен. Если вы компилируете например в C++ Builder или Visual C++ 6, эту директиву можно удалять смело.
это директива (она не во всех компиляторах работает) включает поддержку русского текста. В программе, как вы заметили, в cout используются русские буквы. Это директива позволяет их выводить. у меня код работает 100%... какие ошибки выдает?
0
|
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 23
|
|
13.04.2009, 11:33 [ТС] | 13 |
"системе не удается найти указанный путь"....
0
|
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
|
13.04.2009, 11:44 | 14 |
у вас компилятор по-русски разговаривает?
код рабочий. Путей в программе нет. Поэтому либо у вас сбиты настройки среды, либой вы что-то не так делаете. В какой среде вы программируете?
0
|
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 23
|
|
13.04.2009, 11:54 [ТС] | 15 |
поторопилась)......работает....тока после "заполнения массива" окно закрывается(....
и еще вопрос...можно ли сделать так чтобы комп сам задавал массив???.... ну например так: { int A[N]; A[N]=rand (); cin>> N\n; ............. }
0
|
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
||||||
13.04.2009, 12:11 | 16 | |||||
0
|
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 23
|
|
13.04.2009, 12:33 [ТС] | 17 |
слушай да ты гений
тока вот смотри в усл задачи было "элементы, расположенные между макс и мин, переместить в начало(!!!) массива"...а там получается несколько иначе.. напр задан массив [0] [1.5] [3] [9.5] [5] [2.5] мин - [1.5] макс - [9.5] я думаю должен выдать: [3] [1.5] [9.5] [5] [2.5] а выдает тоже самое что и было тока без 0: [1.5] [3] [9.5] [5] [2.5] или может я ошибаюсь????
0
|
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
|||||||||||
13.04.2009, 12:42 | 18 | ||||||||||
0 нет, потому-что в условии сказано удалить их... вот он и удален
насчет переноса... по-моему так... просто роисходит перенос включительно минимальный и максимальный... если включать их не надо, тогда замени:
0
|
0 / 0 / 0
Регистрация: 11.04.2009
Сообщений: 23
|
|
13.04.2009, 13:20 [ТС] | 19 |
пасиб!......очень помог!).... тока вот стыдно)..чувствую себя дурой мне б такого репетитора)... P.S.: у меня еще 4 подобных задачки)))..
0
|
829 / 352 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
|
|
13.04.2009, 14:47 | 20 |
Я не понял, почему это вся слава перешла другому.
Кариша, а ты задачки пиши - чем сможем - поможем)))
0
|
13.04.2009, 14:47 | |
13.04.2009, 14:47 | |
Помогаю со студенческими работами здесь
20
2 задачи на массивы Задачи на массивы С++ Задачи на массивы Задачи на массивы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |