![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Neuch |
![]() ![]()
Сообщение
#1
|
Школьник ![]() Группа: Продвинутые Сообщений: 33 Регистрация: 28.10.2009 Город: Красноярск Учебное заведение: ИКИТ Вы: студент ![]() |
Дана задача сформировать массив и поменять местами в нем последний отрицательный элемент и максимальный положительный элемент местами.
Написал прогу, но не могу найти где ошибся......помогите пожалуйста(IMG:style_emoticons/default/smile.gif) #include<stdio.h> #include<conio.h> #include<stdlib.h> main() { const int N=100; //максимальный размер массива int A[N], i, //индекс элемента массива n, d, //количество элементов в массиве imin, //индекс минимального элемента iotr; //индекс отрицательного элемента printf("Vvedite chislo elementov massiva:"); scanf("%d", &n); for (i=0; i<n; i++) { printf ("Vvedite elementi massiva A[%d%s",i,"]="); scanf("%d", &A[i]); imin=0; //предполагаем что первый элемент минимальный } for (i=0; i<(n-1); i++) { //Если текущий элемент массива меньше минимального, то запоминаем его индекс if (A[imin]<A[i]) imin=i; } if (A[n-1]<0) // проверяем, является ли последнее число в массиве отрицательным { iotr=n-1;} d=A[imin]; A[imin]=A[iotr]; A[iotr]=d; printf("otr %d \n",A[iotr]); printf("min %d \n",A[imin]); printf("Posle perestanovki massiv A[]="); for (i=0; i<n; i++) printf("%d", A[i]); getch(); } |
граф Монте-Кристо |
![]()
Сообщение
#2
|
Доцент ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое ![]() |
Какие ошибки при компилляции?
Последний отрицательный элемент - имеется в виду, последний из тех,которые есть в массиве. Необязательно же самый последний элемент будет отрицательным. |
Евгений М. |
![]()
Сообщение
#3
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 199 Регистрация: 6.11.2009 Город: Уфа Вы: студент ![]() |
1. В комментариях вы пишите "Если текущий элемент массива меньше минимального, то запоминаем его индекс".
Код if (A[imin]<A[i]) imin=i; А вы поставили следующее условие: "Если текущий элемент массива больше минимального, то запоминаем его индекс". 2. В этом же цикле нужно запомнить последний отрицательный элемент. Условие, которую вы установили для нахождения "последнего отрицательный элемента", не соответствует требованию задачи, а также может привести к ошибке при выполнении программы. Например: Если пользователь вводит последний элемент положительным, то переменная iotr будет иметь не понятно какое значение. И ваша программа будут ввести себя не предсказуемо при выполнении A[imin]=A[iotr];. 3. Возможен случай, когда пользователь будет вводит только положительные числа или только отрицательные. Вам нужно это учесть. |
Neuch |
![]()
Сообщение
#4
|
Школьник ![]() Группа: Продвинутые Сообщений: 33 Регистрация: 28.10.2009 Город: Красноярск Учебное заведение: ИКИТ Вы: студент ![]() |
Какие ошибки при компилляции? Последний отрицательный элемент - имеется в виду, последний из тех,которые есть в массиве. Необязательно же самый последний элемент будет отрицательным. При компиляции выдает не то что нужно.... не находит самый минимальный положительный элемент, а за место него пишит в переменную отрицательный элемент. И по условию задачи поменять местами ПОСЛЕДНИЙ отрицательный элемент с минимальным положит-м элем-ом... что бы проверить последний элементя я сделал условие if (A[n-1]<0) |
Neuch |
![]()
Сообщение
#5
|
Школьник ![]() Группа: Продвинутые Сообщений: 33 Регистрация: 28.10.2009 Город: Красноярск Учебное заведение: ИКИТ Вы: студент ![]() |
Вроде исправил....
#include<stdio.h> #include<conio.h> #include<stdlib.h> main() { const int N=100; //ìàêñèìàëüíûé ðàçìåð ìàññèâà int A[N], i, //èíäåêñ ýëåìåíòà ìàññèâà n, d, //êîëè÷åñòâî ýëåìåíòîâ â ìàññèâå imin, //èíäåêñ ìèíèìàëüíîãî ýëåìåíòà iotr; //èíäåêñ îòðèöàòåëüíîãî ýëåìåíòà printf("Vvedite chislo elementov massiva:"); scanf("%d", &n); for (i=0; i<n; i++) { printf ("Vvedite elementi massiva A[%d%s",i,"]="); scanf("%d", &A[i]); imin=0; //ïðåäïîëàãàåì ÷òî ïåðâûé ýëåìåíò ìèíèìàëüíûé } for (i=0; i<n-1; i++) //Åñëè òåêóùèé ýëåìåíò ìàññèâà ìåíüøå ìèíèìàëüíîãî, òî çàïîìèíàåì åãî èíäåêñ if (A[i]<A[imin]) imin=i; if (A[i]<0) iotr=i; // ïðîâåðÿåì, ÿâëÿåòñÿ ëè ïîñëåäíåå ÷èñëî â ìàññèâå îòðèöàòåëüíûì printf("otr %d \n",A[iotr]); printf("min %d \n",A[imin]); d=A[iotr]; A[iotr]=A[imin]; A[imin]=d; printf("Posle perestanovki massiv A[]="); for (i=0; i<n; i++) printf("%d", A[i]); getch(); } |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 19:32 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru