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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2011, 16:51   #1
ordinary_smile
Пользователь
 
Регистрация: 15.05.2011
Сообщений: 25
По умолчанию Не пойму в чем проблема

Привет.У меня задача создать массив найти в нем последнее негативное и максимальное значение,их суму установить в начале массива и вывести новый массив на экран.Я вот не пойму почему у меня сумму не правильно считает(( Помогите плиз.и теоретически хоть объясните как расширить массив.
Вот мой код

Код:
# include <stdio.h>
#include <math.h>

int main () {
int k,i,indneg;
float M[11],y, sum,M_nov[11],o;
for(k=0;k<11;k++)
{

M[k]=(fabs(cos(k*k-0.8)))*35-12;
printf ("%6.2f\n",M[k]);
}

for (i=11 - 1;i >= 0 ;i--)
{
if (M[i] < 0)
{
printf ("index ostann'ogo negatuvnogo=%d\n",i);
printf ("ostanne negatuvne=%6.2f\n",M[i]);
break;
}

M[i]=o;
}

float max= 0;
for (i = 0; i < 11; i++)
{
if (max > M[i])
max = max;
else
max = M[i];

}
printf("maxsumalne znachenna= %6.2f\n", max);

sum=o+max;
printf("suma= %6.2f\n", sum);

return 0;
}
Заранее спасибо)

Последний раз редактировалось ACE Valery; 17.05.2011 в 02:11.
ordinary_smile вне форума Ответить с цитированием
Старый 15.05.2011, 18:38   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Неправильно считает потому что нигде не инициализируется переменная o )
Son Of Pain вне форума Ответить с цитированием
Старый 15.05.2011, 18:43   #3
ordinary_smile
Пользователь
 
Регистрация: 15.05.2011
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Son Of Pain Посмотреть сообщение
Неправильно считает потому что нигде не инициализируется переменная o )
но я ж ей присвоила значение
M[i]=o;
этож то что выводит последнее негативное...
ordinary_smile вне форума Ответить с цитированием
Старый 15.05.2011, 18:46   #4
Spawn™Production®
Форумчанин
 
Аватар для Spawn™Production®
 
Регистрация: 06.05.2011
Сообщений: 287
По умолчанию

Это Вы присвоили значение элементу массива M, а переменная o у Вас только объявлена как переменная вещественного типа:
Код:
float M[11],y, sum,M_nov[11],o;
Строчки вида
Код:
o = 0;
например, нету нигде.
Spawn™Production® вне форума Ответить с цитированием
Старый 15.05.2011, 18:49   #5
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию


Ты присвоила значение наоборот, должно быть o=M[i];
И написано это должно быть перед строчкой с break, иначе будет выполняться при каждом повторении цикла.
Son Of Pain вне форума Ответить с цитированием
Старый 15.05.2011, 19:06   #6
ordinary_smile
Пользователь
 
Регистрация: 15.05.2011
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Son Of Pain Посмотреть сообщение

Ты присвоила значение наоборот, должно быть o=M[i];
И написано это должно быть перед строчкой с break, иначе будет выполняться при каждом повторении цикла.
ой спасибо большое)
теперь я поняла.
А что насчет второго вопроса?
Хоть примерно можете объяснить как это реализовать?
ordinary_smile вне форума Ответить с цитированием
Старый 15.05.2011, 19:10   #7
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Вместо 11 написать любую другую цифру, или константу сделать )
Или что значит "расширить массив"?
Son Of Pain вне форума Ответить с цитированием
Старый 15.05.2011, 19:24   #8
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

чтобы дополнительно выделить память для массива ,нужно сделать примерно такие действия
Код:
int *arr;   //наш массив
int *temp;//переменная для промежуточного хранения
int size =50 ;//начальный размер

arr = new int [size];

//вдруг кончилась память

temp = arr;//сохраняем указатель

arr = new int [size * 2];//выделяем в два раза больше памяти

for(int i=0;i<size;i++)
       arr[i] = temp[i];//копируем старый массив к новому
Hemul вне форума Ответить с цитированием
Старый 15.05.2011, 20:06   #9
ordinary_smile
Пользователь
 
Регистрация: 15.05.2011
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Son Of Pain Посмотреть сообщение
Вместо 11 написать любую другую цифру, или константу сделать )
Или что значит "расширить массив"?
ну мне нужно сумму которую мы нашли установить в начале массива.
ordinary_smile вне форума Ответить с цитированием
Старый 15.05.2011, 20:10   #10
ordinary_smile
Пользователь
 
Регистрация: 15.05.2011
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Hemul Посмотреть сообщение
чтобы дополнительно выделить память для массива ,нужно сделать примерно такие действия
Код:
int *arr;   //наш массив
int *temp;//переменная для промежуточного хранения
int size =50 ;//начальный размер

arr = new int [size];

//вдруг кончилась память

temp = arr;//сохраняем указатель

arr = new int [size * 2];//выделяем в два раза больше памяти

for(int i=0;i<size;i++)
       arr[i] = temp[i];//копируем старый массив к новому
спасибо буду пробовать)
ordinary_smile вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal не пойму в чем проблема Biggie Smalls Помощь студентам 23 22.12.2010 00:58
не пойму в чем проблема Нике Общие вопросы C/C++ 2 24.09.2010 17:55
не пойму в чем ошибка Анастасия123456789 Помощь студентам 3 23.03.2009 15:53
Не пойму в чем ошибка Machete PHP 2 08.12.2008 10:09