Консультация № 70984
15.01.2007, 08:10
0.00 руб.
0 3 3
Проверьте, пожалуйста, правильно ли написана программа:

Определить размер массива в начале выполнения программы как случайное число в диапазоне 50 - 200. Выделить под него динамически память и заполнить его случайными значениями из диапазона -60 - 60. Заменить все вхождения минимальных значений на максимальное значение в массиве.

Приложение:
#include <stdio.h>#include <stdlib.h>int main(){ int n,i,max,min; randomize(); n=random(150)+51; int *a=new int [n]; for(i=0;i<n;i++) { a[i]=random(121)-60; printf("%d ",a[i]); } puts(""); min=a[0]; max=a[0]; for(i=0;i<n;i++) { if (max<a[i]) max=a[i]; if(min>a[i]) min=a[i]; } for(i=0;i<n;i++) if (a[i]==min) a[i]=max; for(i=0;i<n;i++) printf("%d ",a[i]); delete a;}

Обсуждение

Неизвестный
15.01.2007, 08:26
общий
это ответ
Здравствуйте, Snowball!
В принципе, все написано правильно, но есть пара недочетов.

1. Раз память выделяется оператором new[], то и высвобождать ее нужно соответствующим оператором delete[], а не просто delete.

2. Функция int main() должна возвращать значение типа int. Поэтому в конце программы желательно написать что-нибудь вроде return 0;
Неизвестный
15.01.2007, 09:34
общий
это ответ
Здравствуйте, Snowball!
В дополнение к тому что написал Терсков Сергей.
На мой взглад второй цикл (где ищуться минимальный и максимальный элементы) лучше переписать так (обрати внимание на то что начальное значение переменной i - еденица):

for(i=1;i<n;i++)
{ if (max<a[i])
max=a[i];
else
if(min>a[i])
min=a[i];
}
Неизвестный
15.01.2007, 21:03
общий
это ответ
Здравствуйте, Snowball!
Для проверки своего кода нужно его откомпилировать!
В основном правильно.
Держи (см. приложение)! Удачи


Приложение:
#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){ int n,i,max,min; srand((unsigned)time( NULL ) );//âìåñòî randomize(); n=(rand()*150)/RAND_MAX+51; //âìåñòî n=random(150)+51 int *a=new int [n]; for(i=0;i<n;i++) { a[i]=(rand()*121)/RAND_MAX-60; printf("%d ",a[i]); } puts(""); min=a[0]; max=a[0]; for(i=0;i<n;i++) { if (max<a[i]) max=a[i]; if(min>a[i]) min=a[i]; } for(i=0;i<n;i++) if (a[i]==min) a[i]=max; for(i=0;i<n;i++) printf("%d ",a[i]); delete a;}
Форма ответа