Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2013, 16:44   #1
jula939393
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 36
По умолчанию Написать программу на Си и на Си++(динамическое распределение памяти)

Дан динамический целый массив x1, x2, … xn и динамическая символьная
переменная ch. Если значение ch равно ’+’, найти максимальный элемент массива, иначе -
минимальный.
Освободить память от массива и записать найденное значение как динамическую
переменную.

Последний раз редактировалось jula939393; 21.03.2013 в 16:49.
jula939393 вне форума Ответить с цитированием
Старый 21.03.2013, 16:47   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Не знаю, кто такие "соответствующие адреса" и почему надо писать две программы, но...
Какого рода помощь Вам требуется? Какую часть задания Вы уже выполнили самостоятельно?
Abstraction вне форума Ответить с цитированием
Старый 21.03.2013, 16:50   #3
jula939393
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 36
По умолчанию

Не знаю вообще как выполнить....
jula939393 вне форума Ответить с цитированием
Старый 21.03.2013, 17:06   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Не знаете, как найти максимальный элемент массива? Тогда для начала напишите функцию, которая принимает два целых числа и возвращает максимальное из них.
Abstraction вне форума Ответить с цитированием
Старый 21.03.2013, 17:24   #5
jula939393
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 36
По умолчанию

int n,m, /* n - число строк, m - число столбцов матрицы */
i,j; /* Индексы массива */
int *mp; /* mp - указатель, который позволит работать с динамическим массивом*/
printf("\nВведите число строк и столбцов матрицы: ");
scanf("%d%d",&n,&m);
mp=(int *)calloc(n*m,sizeof(int)); /* Выделение памяти под массив */
printf("\nВведите целую матрицу (%d*%d) построчно: \n",n,m);
/* Первый способ ввода матрицы */
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",mp+i*m+j); /* Этот оператор можно записать: scanf("%d",&mp[i*m+j]); */
/* Второй способ ввода матрицы */
for(i=0;i<n*m;scanf("%d",mp+i++);


Что-то наподобии этого?..
jula939393 вне форума Ответить с цитированием
Старый 21.03.2013, 17:50   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Тогда для начала напишите функцию, которая принимает два целых числа и возвращает максимальное из них.
Где Вы что-то про "матрицу" увидели здесь или в Вашем задании?
Правило ноль: не пытайтесь копировать фрагменты кода, которых не понимаете. Вероятность того, что они сразу будут работать как надо - процентов десять; вероятность того, что после пары правок наугад их будет легче заставить работать как надо, чем переписать с нуля - процента три.

Функцию. Два аргумента, тип каждого аргумента - int. Тип возвращаемого значения - int. Функция должна возвращать максимальный из своих аргументов.
Abstraction вне форума Ответить с цитированием
Старый 21.03.2013, 19:41   #7
Wishmaster1504
Пользователь
 
Аватар для Wishmaster1504
 
Регистрация: 09.10.2012
Сообщений: 11
По умолчанию

Примерно так...
Код:
#include<conio.h>
#include<iostream>
using namespace std;

int main() {
int min, max,cnt,i;
int *mas;
char ch;
setlocale(LC_ALL,"Russian");

cout<<"Введите количество переменных"<< endl;
cin >> cnt;
mas = new int[cnt];
//ввод данных ручками
for(i=0;i<cnt;i++) {cout<<"элемент № " << i+1 <<"  : "; cin >> mas[i]; cout << endl;}
cout <<"Для нахождения максимума нажмите +" << endl;
cout <<"Для нахождения минимума  нажмите -" << endl;
cin >> ch;
switch(ch){

case '+':
	max = mas[0];
	for(i=1;i<cnt;i++){
		if(mas[i] > max){max = mas[i];};
	}
	cout <<"Max = " << max << endl;

break;			
 	
case '-':
	min = mas[0];
	for(i=1;i<cnt;i++){
				if(mas[i] < min) {min = mas[i];};
				}
	cout <<"Min = " << min << endl;
	break;
};
getch();
return 0;
};
Wishmaster1504 вне форума Ответить с цитированием
Старый 21.03.2013, 19:45   #8
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Wishmaster1504 просто и со вкусом...........
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 21.03.2013, 19:48   #9
Wishmaster1504
Пользователь
 
Аватар для Wishmaster1504
 
Регистрация: 09.10.2012
Сообщений: 11
По умолчанию

только забыл концовку условия про освобождение памяти и т.д., ну ничего доделает...
Wishmaster1504 вне форума Ответить с цитированием
Старый 21.03.2013, 19:55   #10
jula939393
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 36
По умолчанию

Спасибо большое!
jula939393 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распределение памяти. Динамическое выделение памяти с++ Tolian92 Помощь студентам 8 14.05.2012 21:44
Динамическое распределение памяти d1mka_ Помощь студентам 0 16.04.2012 18:31
Динамическое распределение памяти. Freewill Общие вопросы C/C++ 5 11.02.2012 09:11
Динамическое распределение памяти. Олександр93 Visual C++ 2 06.02.2012 23:33
Динамическое распределение памяти ManU Общие вопросы Delphi 0 13.10.2009 10:24