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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2019, 12:14   #1
Nana19
 
Регистрация: 04.12.2018
Сообщений: 4
По умолчанию действия с массивом на языке си

Я только начала изучать программирование поэтому с такими задачами у меня проблемы. Я ее почти сделала, но не совсем понимаю как лучше написать считывание и можно ли какой нибудь фрагмент написать проще? Пожалуйста подскажите.

нам дана функция : y= -x^4+3x^3+2x^2-5x+0.5

1. двигаясь осью x от -4 до 4 (прибавляя по 0,1) обсчитать значение функции и вставить их в двумерный массив, вместе с значениями x.
2. В массиве найти Y максимум и вывести на экран вместе с x, при которой y получает максимальное значение.
3. Вывести все x и y(4 цифры после запятой).

Последний раз редактировалось Nana19; 04.01.2019 в 12:36.
Nana19 вне форума Ответить с цитированием
Старый 04.01.2019, 12:27   #2
Nana19
 
Регистрация: 04.12.2018
Сообщений: 4
По умолчанию

#include<stdio.h>
#include<stdlib.h>

void СЧИТАЕМ(float Masyvas[10][1], float *max, float *x);
void ПЕЧАТАЕМ(float Masyvas[10][1], float max, float x);



void main() {
float ЦИФРЫ[10][1];
float MaКСИМАЛЬНЫЙ[10][1];
float САМЫЙБОЛЬШОЙ;
float КООРДИНАТА;
char answer;

printf("КАКУЮ ФУНКЦИЮ ХОТИТЕ ИСПОЛЬЗОВАТЬ? A - обсчитать , B - вывести на экран? \n");
scanf("%c", &answer);
switch (answer)
{
case 'A': СЧИТАЕМ(ЦИФРЫ, &САМЫЙБОЛЬШОЙ, &КООРДИНАТА);
break;
case 'B': СЧИТАЕМ(ЦИФРЫ, &САМЫЙБОЛЬШОЙ, &КООРДИНАТА);; ПЕЧАТАЕМ(ЦИФРЫ, САМЫЙБОЛЬШОЙ, КООРДИНАТА);
break;
default: printf("плохо выбрали!");
};


}


void СЧИТАЕМ(float Masyvas[10][1], float *max, float *x) {
float c = -999;
for (int i = -4; i < 4; i++) {
for (int j = 0; j < 1; j++) {
Masyvas[i][j] = (-i) * (i) * (i) * (i)+3 * (i * i * i) + 2 * i * i - 5 * i + 0.5;
//pow(-i, 4) + (3 * pow(i, 3)) + (2 * pow(i, 2)) + 5 * i + 0.5;
// (-i) * (i) * (i) * (i) + 3 * (i * i * i) + 2 * i * i - 5 * i + 0.5;
if (c < Masyvas[i][j]) {
*x = i+1;
c = Masyvas[i][j];
}
*max = c;
}
}
printf("обсчитали! \n");
}
void ПЕЧАТАЕМ(float Masyvas[10][1], float max, float x) {

printf("результат \n");
for (int i = -4; i < 4; i++)
for (int j = 0; j < 1; j++)
printf("%3.4f\n", Masyvas[i][j]);

printf(" Y максимум %3.4f, когда x %3.4f \n", max, x);

}
Nana19 вне форума Ответить с цитированием
Старый 04.01.2019, 12:47   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,759
По умолчанию

Сначала программу исправьте:
Зачем вам двумерный массив, если вы его двумерность не используете?
Зачем вы эмулируете одномерный массив двумерным?
Почему первый размер 10, если беглый подсчет говорит, что элементов 80 будет?
Массивы нумеруются с 0. Да трюки с a[-4] проходят, но я абсолютно уверен, что вы не знаете как это работает, и это не то, что вы хотели.
Выбирать для начального значения максимума/минимума число с потолка не лучшая идея.
Почему вы не выводите, как требуется в условии и х, и у?
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
действия с массивом на языке си Nana19 Помощь студентам 3 04.12.2018 22:39
Паскль,Дан массив A(n), разработать программу, которая позволяет выполнить с массивом следующие действия икше Помощь студентам 1 01.12.2012 20:07
Задача на языке Pascal, с массивом Bonni Помощь студентам 1 05.05.2011 19:45
Действия над двумерным массивом Chrome-kz C++ Builder 0 08.04.2011 17:44
Программа на русском языке в Windows XP на другом языке... Как? 29bit Свободное общение 4 01.02.2008 17:24