![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 30.10.2009
Сообщений: 56
|
![]()
Здравствуйте, коллеги! помогите пожалуйста студенту! я пишу тут массив и не получается несколько вещей
Во первых он не всегда выводит правельное кол-во отрицательных элементов! Во вторых считает неправельно сумму после мин по модулю отрицательного элемента И не знаю как сделать сортировку элементов по возрастанию по модулю(( Пишу в Visual Studio 2008 помогите плз! задание я прикрепил ![]() вот мой код Код:
Последний раз редактировалось Stilet; 27.11.2009 в 17:22. |
![]() |
![]() |
![]() |
#2 | ||
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
![]() Цитата:
т.е это как-то так: Код:
Цитата:
Правильно: Код:
Код:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 27.11.2009 в 17:52. |
||
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 30.10.2009
Сообщений: 56
|
![]()
спасибо щас вобью попробую!)
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 30.10.2009
Сообщений: 56
|
![]()
#include <stdafx.h>
#include <conio.h> #include <stdio.h> #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { float a[100]; int n,i,summ=0,min=0,k=0,q,w,bufer; //k-кол-во отриц элементов printf("Enter n "); scanf("%i",&n); for (i=1;i<=n;i++) { printf("\n a[%i]= ",i); scanf("%f",&a[i]); } min=a[1]; for (i=0;i<n;i++) { { if(a[i]<0) //количество отрицательных элементов массива; { k++; } if(fabs(a[i])<fabs(a[min])) //находим номер минимального по модулю элемента. { min=i; } } for(i=0;i<n;i++) { for(int i=min+1;i<n;i++) //сумму модулей элементов массива, расположенных после минимального по модулю элемента. { summ=+a[i]; } for(int n=0;i<n;i++) { a[i]*=a[i]; //Заменить все отрицательные элементы массива их квадратами printf("Zamena otricatelnich elementov ih qvadratami %f \n",a[i]); } for(q=0;q<n;q++) { for(w=0;w<n;w++) { if(abs(a[i])<abs(a[i+1])) { bufer=a[i]; a[i]=a[i+1]; a[i+1]=bufer; } } } } } printf("Kol-vo otricatelnich elementov= %i \n",k); printf("Summa modulei massiva posle min po moduly el= %i \n",summ); getch(); return 0; } вот аткой код получится должен? всё равно проблемы 1) отрицательные элементы выводит 1 даже если я сделаю так что их будет много 2) я не врубаю как он считает сумму их модулей! вообще неясно как он при всех отрицательных числах массива выдаёт ответ -2! хотя ответ должен быть положителен! 3) вот я вставил ваш цикл! я так понял q это тоже самое что i ? а тогда w что это? |
![]() |
![]() |
![]() |
#5 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
![]()
Я немного подправил ваш код, теперь, вроде бы, все правильно (если я правильно понял задание). Еще я заменил Сишные функции ввода на Сиплюсплюсные (printf на cout и scanf на cin) (просто мой компилятор на них что-то бузил,а разбираться с ними желания не было, если нужно, можете вернуть все как было). К стати, у вас в конце убийственная ошибка была, вы сумму выводили не правильно (там всегда выводился ноль, даже если сумма была посчитана другая).
Так же я немного "причесал" код, ибо ваш код читать очень трудно. (рекомендую "причесывать" свой ко примерно так же, тогда он будет более читабельным и наглядным.) Кроме того у вас были ошибки с лишними скобками (виною тому отсутствие отступов, как у меня в "при чесаном" коде.) P.S. Особого желания писать комментарии у меня не было, если что-то не понятно - спросите. Код:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 28.11.2009 в 00:05. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 30.10.2009
Сообщений: 56
|
![]()
спасибо!
ошибку в цикле понял! но так и не понял как возвести отрицательные элементы масива в квадрат и вывести на экран в порядке возрастания все элементы =( он же не выводит элементы массива |
![]() |
![]() |
![]() |
#7 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
![]() Цитата:
Если исходный массив больше нигде не нужен, то будем в нем работать, иначе копируем его в другой и работаем с "другим" массивом. Код:
сортируем по возрастанию Код:
и выводим: Код:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 28.11.2009 в 00:14. |
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 30.10.2009
Сообщений: 56
|
![]()
буду очень благодарен!
|
![]() |
![]() |
![]() |
#9 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
![]()
Ма-а-аленькая ошибочка, мы посчитали сумму элементов после минимального по модулю, а надо сумму модулей элементов после минимального по модулю.
Цитата:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 30.10.2009
Сообщений: 56
|
![]()
Спасибо!)
а как выводить в порядке возрастания элементы массива? это ведь через эту вроде надо делать? for(q=0;q<(n-1);q++) { for(w=(n-1);w>=0;w--) { if(a[i])<a[i+1]) { bufer=a[i]; a[i]=a[i+1]; a[i+1]=bufer; } } } а не выводит ничего((( |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Двумерный массив, одномерный массив. | Branbal | Помощь студентам | 14 | 18.11.2009 12:40 |
Массив | Skrip | Общие вопросы Delphi | 3 | 15.10.2009 14:03 |
Массив | Paul Oakenfold | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 24.04.2009 19:31 |
Массив | Walter | Помощь студентам | 3 | 02.01.2009 17:21 |
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. | TheVenny | Помощь студентам | 3 | 26.11.2008 15:06 |