Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 20.12.2022
Сообщений: 24
1

Одномерные массивы: сложение полиномов

03.01.2023, 23:25. Показов 2043. Ответов 47

Author24 — интернет-сервис помощи студентам
Заданы порядки и коэффициенты двух полиномов. Сформировать
массив, содержащий коэффициенты суммы полиномов. Максимальный порядок исходных полиномов – 10.
Помогите с решением задачи
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.01.2023, 23:25
Ответы с готовыми решениями:

Переделать программу на одномерные массивы через указатели и динамические массивы
Переделать программу на одномерные массивы через указатели и динамические массивы. Обязательные...

Одномерные массивы
Для одномерных массивов VV, MN, KL, GH, состоящие из 5 элементов действительного типа, округлить...

Одномерные массивы
Одномерные массивы

Одномерные массивы
Помогите с задачками, пожалуйста 1. Найти в массиве элемент, который повторяется максимальное...

47
0 / 0 / 0
Регистрация: 20.12.2022
Сообщений: 24
06.01.2023, 13:00  [ТС] 21
Author24 — интернет-сервис помощи студентам
Вы мне очень помогли, Фантом, помогите пожалуйста и с этой задачей, просто я первокурсник , для меня все это новое, (тем более что в шк мы никакой язык не изучали, а сдать нужно все в сроки((
6. Функции
Целью работы является закрепление теоретических знаний и
приобретение практических навыков объявления и реализации функций
языка C, передачи параметров и возвращаемого значения при их вызове.
6.1. Задание
Требуется выполнить реализацию задачи в соответствии с инди-
видуальным заданием(задача выше которая), выданным преподавателем по теме «Одномер-
ные массивы», с использованием функций для обработки массивов.
6.2. Методические рекомендации
В виде отдельных функций должны быть реализованы операции
над массивами в целом (ввод, вывод, обработка элементов массива, ко-
пирование содержимого из одного массива в другой и т.п.). При этом
массивы и другие необходимые значения должны передаваться в функ-
ции только посредством формальных параметров, а использование гло-
бальных переменных для передачи каких-либо значений в функции или
из них считается недопустимым.
При реализации функций следует обеспечить их наибольшую
универсальность и возможность применения при решении других задач.
Для этого необходимо, во-первых, выполнить реализацию алгоритма, не
имеющую явных ограничений на размер обрабатываемого массива. В
этом случае обычно в числе параметров передается количество обраба-
тываемых элементов массива или сам массив содержит соответствую-
щий признак, например нуль-терминатор в конце строки, определенная
закономерность числового ряда и т.п. Во-вторых, нумерация элементов
массива всегда должна начинаться с нуля.
6.3. Содержание отчета
Отчет по лабораторной работе должен содержать:
– перечень операций над массивом, которые будут реализованы в виде
отдельных функций;
– общую блок-схему алгоритма решения задачи с использованием
подпрограмм;
– блок-схемы алгоритмов подпрограмм;
– обоснование выбора количества и типов параметров функций и воз-
вращаемого значения.
0
1470 / 1049 / 544
Регистрация: 17.03.2022
Сообщений: 3,299
06.01.2023, 13:08 22
Нет уж, давайте сами. Помочь с правкой кода - помогу (и не только я), но вам надо что-то написать самому, иначе вы ничему не научитесь.
0
0 / 0 / 0
Регистрация: 20.12.2022
Сообщений: 24
06.01.2023, 15:20  [ТС] 23
Смотрите задание немного изменилось,я правильно внес под одну общую функцию ваш код?
#include<stdio.h>

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
int main()   // Ввод порядка и коэффициентов полинома
{
  int enterpoly(float a[p],char* s);
  int n;
  const int p=11;
  float a[p], b[p], c[p]; 
  int na=enterpoly(a,"perviy");
  int nb=enterpoly(b,"vtoroi");
  int nc=(na>nb) ? na : nb;
  printf("Vvodim %s polinim\n",s);
  printf("Vvedite stepen: ");
  scanf("%d",&n);
  for(int i=0;i<=n;++i)
  {
    printf("%d-bl koefficent: ",i);
    scanf("%f",&a[i]);
    for(int i=0;i<p;++i) c[i]=a[i]+b[i]; 
    printf("Rezultat\n");
    for(int i=nc;i>0;--i) if(c[i]) printf("%7.3f*x^%d + ",c[i],i);  
    printf("%7.3f\n",c[0]);   
  }
    for(int i=0;i<p;++i)
    { 
    c[i]=a[i]+b[i]; 
    printf("Rezultat\n");
    }
   
  for(int i=nc;i>0;--i) 
   {
    if(c[i]) 
    printf("%7.3f*x^%d + ",c[i],i);
    printf("%7.3f\n",c[0]); 
    }
  return n;
  
}
0
1470 / 1049 / 544
Регистрация: 17.03.2022
Сообщений: 3,299
06.01.2023, 15:22 24
Цитата Сообщение от Smartboy Посмотреть сообщение
Смотрите задание немного изменилось
И на что же?
Цитата Сообщение от Smartboy Посмотреть сообщение
я правильно внес под одну общую функцию ваш код?
Нет.
0
0 / 0 / 0
Регистрация: 20.12.2022
Сообщений: 24
06.01.2023, 15:28  [ТС] 25
нужно ту же задачу решить только использовав одну функцию ( короче гооворя,задачу с которой вы мне помогли внести в одну функцию)

Добавлено через 19 секунд
Цитата Сообщение от Pphantom Посмотреть сообщение
Нет.
что же неверно?

Добавлено через 3 минуты
одну ошибку заметил- for неправильно оформил
0
1470 / 1049 / 544
Регистрация: 17.03.2022
Сообщений: 3,299
06.01.2023, 15:30 26
Для чего нужна строка 3? Что происходит в строках 7 и 8? Что делает цикл строки 17 там, где он находится? Где вводятся данные о втором полиноме?

P.S. И, уж простите, вы чем думаете, когда все это пишете? Обычно к моменту усвоения основ синтаксиса C люди все-таки хоть немного начинают понимать происходящее.
0
0 / 0 / 0
Регистрация: 20.12.2022
Сообщений: 24
06.01.2023, 17:11  [ТС] 27
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<stdio.h>
const int p=11;
int main()
{
  float a[p], b[p], c[p];
  int n,k,i;
  int j,u,t;
  printf("vvodim perviy polinim\n");
  printf("vvedite stepen: ");
  scanf("%d",&n);
  for( i=0;i<=n;++i)
  {
    printf("%d-koefficent: ",i);
    scanf("%f",&a[i]);
  }
  printf("vvodim vtoroi polinim\n");
  printf("vvedite stepen: ");
  scanf("%d",&k);
  for( u =0;u<=k;++u)
  {
    printf("%d-koefficent: ",u);
    scanf("%f",&b[u]);
  }
  for(t=0;t<p;++t) 
  {
   c[t]=a[i]+b[u];
  }
  printf("resultat\n");
  if(a[i]>b[u])
    j = a[i];
  else if(a[i]<b[u])
    j = b[u];
  for(t=j;i>0;--i) 
  {
  if(c[t]) 
  printf("%7.3f*x^%d + ",c[t],t);  
  printf("%7.3f\n",c[0]);} 
  system("pause");
  return 0;
   }
Добавлено через 2 минуты
я знаю что там много ошибок,я заметил это,только когда уже его закинул.(я про пред. сообщение)
0
1470 / 1049 / 544
Регистрация: 17.03.2022
Сообщений: 3,299
06.01.2023, 17:23 28
Теперь на вид нормально, только можно было бы сначала найти порядок многочлена-суммы,а уже потом считать его коэффициенты (с суммированием до него, а не по всем массивам целиком).
0
0 / 0 / 0
Регистрация: 20.12.2022
Сообщений: 24
06.01.2023, 17:26  [ТС] 29
Смотрите,как поступить с суммой(она вообще не отображаетсяв )?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7788 / 4613 / 2828
Регистрация: 22.11.2013
Сообщений: 13,111
Записей в блоге: 1
06.01.2023, 17:42 30
Цитата Сообщение от Smartboy Посмотреть сообщение
внес под одну общую функцию
У вас в задании-то совсем по-другому, не заметили, или, что еще более вероятно, даже и не читали:
6.2. Методические рекомендации

В виде отдельных функций должны быть реализованы операции над массивами в целом (ввод, вывод, обработка элементов массива, копирование содержимого из одного массива в другой и т.п.). При этом массивы и другие необходимые значения должны передаваться в функции только посредством формальных параметров, а использование глобальных переменных для передачи каких-либо значений в функции или из них считается недопустимым.

При реализации функций следует обеспечить их наибольшую универсальность и возможность применения при решении других задач.

Для этого необходимо, во-первых, выполнить реализацию алгоритма, не имеющую явных ограничений на размер обрабатываемого массива. В этом случае обычно в числе параметров передается количество обрабатываемых элементов массива или сам массив содержит соответствующий признак, например нуль-терминатор в конце строки, определенная закономерность числового ряда и т.п.

Во-вторых, нумерация элементов массива всегда должна начинаться с нуля.
Добавлено через 3 минуты
Вот у вас так и напрашиваются отдельные функции:
1) ввод коэффициентов полинома,
2) суммирование коэффициентов полиномов,
3) вывод полинома
и их вызов из main() с соответствующими параметрами.
0
0 / 0 / 0
Регистрация: 20.12.2022
Сообщений: 24
06.01.2023, 17:45  [ТС] 31
Цитата Сообщение от Pphantom Посмотреть сообщение
Смотрите задание немного изменилось
.Я же написал,что задание изменилось...

Добавлено через 3 минуты
Цитата Сообщение от bormant Посмотреть сообщение
Вот у вас так и напрашиваются отдельные функции:
1) ввод коэффициентов полинома,
2) суммирование коэффициентов полиномов,
3) вывод полинома
и их вызов из main() с соответствующими параметрами.
По-моему код,который прислал Фантом,соответсвует этому описанию(правда там не отдельная функция для каждого массива
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7788 / 4613 / 2828
Регистрация: 22.11.2013
Сообщений: 13,111
Записей в блоге: 1
06.01.2023, 18:58 32
Вот вам как пример для затравочки:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int pRead(double *p, int n) {
  int k;
  do {
    printf("max power [1..%d]: ",n-1);
    scanf(" %d",&k);
  } while (k<1 || k>=n);
  printf("coefficients\n");
  for (int i=k+1; i-->0) {
    printf(" for x^%d: ",k);
    scanf(" %lf",p+k);
  }
  return k+1;
}
 
void pWrite(double *p, int n) {
  int k=0;
  for (int i=n-1; i>0 && p[i]; --i)
    if (p[i])
      printf("%s%g x^%d",k++||p[i]<0?p[i]<0?" -":" +":"",fabs(p[i]),i);
  if (p[0])
    printf("%s%g",k++||p[0]<0?p[0]<0?" -":" +":"",fabs(p[0]));
}
Добавлено через 17 минут
Осталось дописать п.2 и main().
0
1470 / 1049 / 544
Регистрация: 17.03.2022
Сообщений: 3,299
06.01.2023, 19:09 33
Цитата Сообщение от Smartboy Посмотреть сообщение
Смотрите,как поступить с суммой(она вообще не отображаетсяв )?
Сосчитать в нужном месте.
0
0 / 0 / 0
Регистрация: 20.12.2022
Сообщений: 24
06.01.2023, 19:59  [ТС] 34
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<stdio.h>
const int p=11;
int main()
{
  float a[p], b[p], c[p];
  int n,k,i;
  int j,u,t;
  printf("vvodim perviy polinim\n");
  printf("vvedite stepen: ");
  scanf("%d",&n);
  for( i=0;i<=n;++i)
  {
    printf("%d-koefficent: ",i);
    scanf("%f",&a[i]);
  }
  printf("vvodim vtoroi polinim\n");
  printf("vvedite stepen: ");
  scanf("%d",&k);
  for( u = 0;u<=k;++u)
  {
    printf("%d-koefficent: ",u);
    scanf("%f",&b[u]);
  }
  printf("resultat\n");
  if(a[i]>b[u])
    j = i;
  else if(a[i]<b[u])
    j = u;
    for(t=0;t<p;++t) 
  {
   c[t]=a[i]+b[u];
  }
  for(t=j;t>0;--j) 
  {
  if(c[t]) 
  printf("%7.3f*x^%d + ",c[t],t);  
  printf("%7.3f\n",c[0]);}
  system("pause");
  return 0;
   }
Добавлено через 1 минуту
теперь хоть что то воводит,но не правильно,можете поправить что не правильно.(или хотяб сказать)
0
1470 / 1049 / 544
Регистрация: 17.03.2022
Сообщений: 3,299
07.01.2023, 00:37 35
Зачем написаны строки 25-28? Почему строка 31 написана именно в таком виде?
0
0 / 0 / 0
Регистрация: 20.12.2022
Сообщений: 24
07.01.2023, 01:11  [ТС] 36
Все,получилось)внес некоторые измениния и заработало).

Добавлено через 3 минуты
Цитата Сообщение от Pphantom Посмотреть сообщение
Зачем написаны строки 25-28? Почему строка 31 написана именно в таком виде?
Нужны для понятия длины массива-суммы

Вот уже без недочетов )

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<stdio.h>
const int p=11;
int main()
{
  float a[p], b[p], c[p];
  int n,k,i;
  int j,u,t;
  printf("vvodim perviy polinim\n");
  printf("vvedite stepen: ");
  scanf("%d",&n);
  for( i=0;i<=n;++i)
  {
    printf("%d-koefficent: ",i);
    scanf("%f",&a[i]);
  }
  printf("vvodim vtoroi polinim\n");
  printf("vvedite stepen: ");
  scanf("%d",&k);
  for( i = 0;i<=k;++i)
  {
    printf("%d-koefficent: ",i);
    scanf("%f",&b[i]);
  }
  printf("resultat\n");
  if(n>k)
    j = n;
  else if(n<k)
    j = k;
  for(int i=0;i<p;++i) c[i]=a[i]+b[i]; 
  printf("resultat\n");
  for(int i=j;i>0;--i) if(c[i]) printf("%7.3f*x^%d + ",c[i],i);
  printf("%7.3f\n",c[0]); 
  system("pause");
  return 0;
   }
Добавлено через 2 минуты
Смотрите,ту задачу сказали надо все таки сделать.(которую я кидал).Посмотрите правильно ли я разбил на функции задачу( которую вы скидывали выше)?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include<stdio.h> 
const int p=11;
int vvod_elementov(float a[p],char* s)   
{
  int n;
  int i;
  printf("vvodim %s polinim\n",s);
  printf("vvedite stepen: ");
  scanf("%d",&n);
  for(int i=0;i<=n;++i)
  {
    printf("%d-koefficent: ",i);
    scanf("%f",&a[i]);
  }
  return n;
}
    int F(int i,float a[i],float b[i],float c[i])  
 { 
  for(int i=0;i<p;++i) c[i]=a[i]+b[i];
}
  int vblvod(int i,float a[i],float b[i],float c[i]) 
  {
  int j,n,k;
  if(n>k)
    j = n;
  else if(n<k)
    j = k;
  printf("resultat\n");
  for(int i=j;i>0;--i) if(c[i]) printf("%7.3f*x^%d + ",c[i],i);
  printf("%7.3f\n",c[0]);
}
int main()
{
  float a[p], b[p], c[p]; 
  int na=vvod_elementov(a,"perviy");
  int nb=vvod_elementov(b,"vtoroy");
  int F(int i,float a[i],float b[i],float c[i]);
  int vblvod(int i,float a[i],float b[i],float c[i]);
  system ("pause");
  return 0; 
}
0
1470 / 1049 / 544
Регистрация: 17.03.2022
Сообщений: 3,299
07.01.2023, 01:12 37
Да, теперь правильно. Только незачем было переписывать аж в четыре строки тернарный оператор, ну и количество заведенных целочисленных переменных (а также их названия, не то что бессмысленные - даже вводящие в заблуждение) слишком велико.
0
0 / 0 / 0
Регистрация: 20.12.2022
Сообщений: 24
07.01.2023, 01:14  [ТС] 38
Посмотрите пожалуйста последнее сообщение)
0
1470 / 1049 / 544
Регистрация: 17.03.2022
Сообщений: 3,299
07.01.2023, 01:14 39
Цитата Сообщение от Smartboy Посмотреть сообщение
Посмотрите правильно ли я разбил на функции задачу( которую вы скидывали выше)?
Знаете, в таком виде код нечитаем. Разберитесь с отступами, сделайте функциям нормальные имена (почему, например, сумма - это F?) и начните все-таки писать комментарии.
0
0 / 0 / 0
Регистрация: 20.12.2022
Сообщений: 24
07.01.2023, 01:27  [ТС] 40
Хорошо,сейчас сделаю.

Добавлено через 12 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include<stdio.h> 
const int p=11;
int vvod_elementov(float a[p],char* s)    // Ввод порядка и коэффициентов полинома
 {
        int n;
        int i;
        printf("vvodim %s polinim\n",s);
        printf("vvedite stepen: ");              
        scanf("%d",&n);
        for(int i=0;i<=n;++i)
         {
                printf("%d-koefficent: ",i);          
                scanf("%f",&a[i]);
         }
    return n;
 }
 
int SUM(int i,float a[i],float b[i],float c[i])    //Будущий массив(сумма коэффицентов)
  { 
        for(int i=0;i<p;++i) c[i]=a[i]+b[i];
  }
 
int vblvod(int i,float a[i],float b[i],float c[i])  
  {
        int j,n,k;                                                    // Определение порядка будущего массива
        if(n>k)
            j = n;
        else if(n<k)
            j = k;
        printf("resultat\n");
        for(int i=j;i>0;--i) 
         {  
            if(c[i]) printf("%7.3f*x^%d + ",c[i],i); //Вывод :)
            printf("%7.3f\n",c[0]);
         }
}
 
int main()
{
        float a[p], b[p], c[p]; 
        int na=vvod_elementov(a,"perviy");
        int nb=vvod_elementov(b,"vtoroy");
        int SUM(int i,float a[i],float b[i],float c[i]);
        int vblvod(int i,float a[i],float b[i],float c[i]);
        system ("pause");
        return 0; 
}
0
07.01.2023, 01:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2023, 01:27
Помогаю со студенческими работами здесь

Одномерные массивы
1) Дан массив целых чисел. Найти количество отрицательных элементов 2) Дан целочисленный массив....

Одномерные массивы
Ребят, помогите пожалуйста с задачкой. В трех одномерных массивах А,В,С-целых чисел от 0 до 15. ...

Реализовать одномерные массивы
В одномерном массиве, состоящем из n целых элементов необходимо найти количество элементов массива...

Динамические одномерные массивы
Помогите пожалуйста, НЕ объяснили как делать такого типа задания Выполнить следующие операции с...

Одномерные массивы и указатели
Дан массив A. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – целая...

Задача на одномерные массивы
Даны три одномерные массивы, каждый из которых имеет произвольное количество элементов. Для каждого...

Выполните задания - одномерные массивы
Имеются данные прогноза погоды в городе К. каждый день в течение 2 недель (14 дней). Температура -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru