|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.11.2016, 16:15 | #1 |
Пользователь
Регистрация: 28.01.2015
Сообщений: 13
|
Одномерный массив
Люди помогите лабораторку добить
*********************************** ********* В одномерном массиве, состоящем из n вещественных элементов, вычислить: − номер минимального по модулю элемента массива; − сумму модулей элементов массива, расположенных после первого отрицательного элемента. Сжать массив, удалив из него все элементы, величина которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями. *********************************** ********* проблема заключается в следующем: когда идет поиск минимального элемента то не учитывает что ноль тоже может быть минимальным элементом, а сам элемент превращается из вещественного в целочисленный. и еще почему то в интервале не все элементы зануляются Текст программы: #include <iostream> // поток #include <time.h> //случайные числа using namespace std; int search(float arr[], int n) // поиск минимального элемента { int numbermin = 0;//номер минимального по модулю элемента int min = arr[0]; //минимальный по модулю элемент // загоняет в большой цикл if(arr[0]>0) { min = arr[0]; numbermin = 0; } else { min = -arr[0]; numbermin = 0; } for(int i=1;i<n;i++) { if(arr[i]<0&&-arr[i]<min) { min = -arr[i]; numbermin = i; } else if(arr[i]>0&&arr[i]<min) { min=arr[i]; numbermin = i; } } return(numbermin);//возвращаем значение } int summod(float arr[], int n) // поиск суммы { int sum = 0; // тут будет храниться сумма for (int i=0; i<n; i++) { if (arr[i] < 0) // если первый элемент меньше 0, то начинаем считать { for (int j=i+1;j<n;j++) // т.к. после то прибавляем единицу { sum += abs(arr[j]); // тут мы считаем суммы по модулю } return(sum); } } return(sum); } void compression(float a, float b, float arr[], int n) // сжимаем массив { // удаляем элементы, заменой их на нули for (int i = a-1;i <= b-1;i++) { arr[i] = 0; } // выводим полученный после замены на нули cout<<"\nМассив после замены удаления элементов = "; for (int i=0;i<n;i++) { cout<<" "<<arr[i]; } cout<<endl; // а теперь сдвигаем элементы влево, если слева 0 и на их место пишем 0 for (int i=0;i<n-1;i++) // большой внешний цикл { for (int j=0;j<n-1-i;j++) // маленький внутренний отвечающий за перестановку элементов "рядом стоящих" { if (arr[j] == 0) // элемент равен 0? { arr[j] = arr[j+1]; // Да, сдвигаем влево arr[j+1] = 0; // обнуляем тот, что справо } } } // выводим итоговый cout<<"\nМассив после сдвига ="; for (int i=0;i<n;i++) { cout<<" "<<arr[i]; } } // головная программа int main(void) { srand(time(NULL)); // начальный rand setlocale(LC_ALL, "rus"); // русский текст // объявление переменных int n; //размер массива cout<<"Введите размер массива: "; cin>>n; float *arr=new float[n]; float a,b; // выводим и заполняем массив cout<<"Исходный массив = "; for (int i = 0; i<n; i++) { arr[i]=(3-(rand()%10)*0.3); cout<<" "<<arr[i]; } // вывод cout<<endl; cout<<"\nНомер минимального элемента по модулю = "<<search(arr,n)+1<<endl;//вызываем функцию search cout<<"\nСумма модулей элементов массива, \n"<<"расположенных после первого отрицательного элемента = "<<summod(arr,n)<<endl; cout<<"\nВведите предел a = "; cin>>a; cout<<"Введите предел b = "; cin>>b; compression(a,b,arr,n); cout<<endl; delete [] arr; cin.get(); cin.get(); return 0; } |
21.11.2016, 16:24 | #2 | |||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
Цитата:
Цитата:
Код:
Цитата:
1. По условию надо проверять, что элемент массива находится в интервале 2. Код:
3. вы не контролируете границы 4. ... Последний раз редактировалось p51x; 21.11.2016 в 16:28. |
|||
21.11.2016, 17:23 | #3 |
Пользователь
Регистрация: 28.01.2015
Сообщений: 13
|
спасибо
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив | TheAnnihilyator | Помощь студентам | 1 | 04.06.2014 09:16 |
Найти одномерный массив элементы которого равны минимальным значениям в строках исходной матрицы и одномерный массив элементы... | Richik123 | Microsoft Office Excel | 1 | 16.10.2013 15:45 |
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] | TrueStyle777 | Помощь студентам | 3 | 29.05.2013 21:56 |
Дан одномерный массив, сформировать новый массив по заданному правилу {Delphi} | Nickolai47 | Помощь студентам | 5 | 16.12.2012 14:51 |
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. | Marishkaa | Помощь студентам | 2 | 12.01.2010 16:54 |