С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
sSTUDENTUSs
-10 / 1 / 2
Регистрация: 05.10.2014
Сообщений: 26
1

Найти и вывести номер элемента, для которого сумма разностей с соседними элементами максимальна

19.10.2014, 12:24. Просмотров 959. Ответов 11
Метки нет (Все метки)

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

Простенькая программа, но она не работает, не понятно, почему...

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
48
49
50
51
52
53
54
55
#include <stdio.h>
#define MAX 100
 
int t;
int getline(char s[], int lim)
{
    int i=0, f;
    char c;
    for (i=0; (i<(lim-1)) && ((c=getchar()) != EOF) && (c != '\n'); i++)
        s[i]=c;
    t=i;
    return i;
}
 
void main (void)
{
 
char line[MAX];
int dif1, dif2;
int num1=1, num2; //num1 текущий элемент; num2 искомый элемент
int sum, max;
int i;
 
printf("Enter string:\n");
getline(line, MAX);
 
 
max=0;
for (i=1; i<t; i++)
{
dif1= (line[i]- '0') - (line[i+1]- '0');
dif2= (line[i-1]- '0') - (line[i]- '0');
sum = dif1+dif2;
if (sum> max)
{max = sum;
num2 = num1;}
num1++;
}
 
dif1= (line[0]- '0') - (line[1]- '0');
dif2= (line[t]- '0') - (line[0]- '0');
sum = dif1+dif2;
if (sum> max)
{max = sum;
num2=0;}
 
dif1= (line[t-1]- '0') - (line[t]- '0');
dif2= (line[t]- '0') - (line[0]- '0');
sum = dif1+dif2;
if (sum> max)
{max = sum;
num2=t;}
 
printf("number= %d %d", num2, max);
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2014, 12:24
Ответы с готовыми решениями:

Найти номер столбца, сумма элементов которого максимальна
Найти номер столбца сумма элементов которая максимальна.

Получить номер столбца, сумма элементов которого максимальна
я ваще в большом затруднение...как составить прогу на эту задачу на турбо Си??...

Матрица (элемент, для которого сумма его четырех ближайших соседей максимальна)
люди помогите!срочно нужна помощь. Составить программу,которая в матрице...

Найти два соседних элемента массива, сумма которых максимальна
Дан массив размера N. Найти два соседних элемента, сумма которых максимальна, и...

Найти в массиве индекс элемента для которого сумма элементов, которые стоят до него
Задан массив, который состоит из n элементов. Найти в нём индекс элемента для...

11
Jewbacabra
Эксперт PHP
3587 / 2977 / 1323
Регистрация: 24.04.2014
Сообщений: 9,036
19.10.2014, 15:18 2
Лучший ответ Сообщение было отмечено sSTUDENTUSs как решение

Решение

Цитата Сообщение от sSTUDENTUSs Посмотреть сообщение
массив вещественных чисел
в коде не увидел

Добавлено через 16 минут
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
#include <stdio.h>
 
float getDiff(float* arr, int size, int pos) {
    if (pos == 0) {
        return 2*arr[0] - arr[1] - arr[size-1];
    } else if (pos == size-1) {
        return 2*arr[size-1] - arr[size-2] - arr[0];
    } else {
        return 2*arr[pos] - arr[pos-1] - arr[pos+1];
    }
}
 
int main(void) {
    float arr[] = {1, 2, 100, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    int max = 0;
    for (int i=1; i < size; ++i) {
        if (getDiff(arr, size, max) < getDiff(arr, size, i)) {
            max = i;
        }
    }
    printf("%d %f", max, getDiff(arr, size, max));
    return 0;
}
1
_Ivana
3237 / 1870 / 235
Регистрация: 01.03.2013
Сообщений: 5,111
Записей в блоге: 5
19.10.2014, 16:04 3
Jewbacabra, понимаю, что ловля блох, но почему бы не завести еще одну переменную maxDiff вместо двойного вызова функции в цикле?
1
Jewbacabra
Эксперт PHP
3587 / 2977 / 1323
Регистрация: 24.04.2014
Сообщений: 9,036
19.10.2014, 16:34 4
_Ivana, да, так лучше будет. Но пусть TC сам это доделает.
1
sSTUDENTUSs
-10 / 1 / 2
Регистрация: 05.10.2014
Сообщений: 26
19.10.2014, 18:13  [ТС] 5
спасибо

Добавлено через 48 минут
кстати Ваша программа тоже работает неправильно.
должно быть 3 а выдает 2.
и Diff у Вас равен 194.
Скажите, пожалуйста, почему так всё
0
_Ivana
3237 / 1870 / 235
Регистрация: 01.03.2013
Сообщений: 5,111
Записей в блоге: 5
19.10.2014, 18:24 6
Цитата Сообщение от sSTUDENTUSs Посмотреть сообщение
должно быть 3 а выдает 2.
Выдается на 1 меньше чем надо - комиссия за работу программы.
Цитата Сообщение от sSTUDENTUSs Посмотреть сообщение
Скажите, пожалуйста, почему так всё
Законы рыночной экономики, против них не попрешь.
0
sSTUDENTUSs
-10 / 1 / 2
Регистрация: 05.10.2014
Сообщений: 26
19.10.2014, 18:33  [ТС] 7
экономика для девочек я тут программы стараюсь писать...

Добавлено через 1 минуту
вообще не понимаю в чем загвоздка (что в моей программе что в этой)
0
_Ivana
3237 / 1870 / 235
Регистрация: 01.03.2013
Сообщений: 5,111
Записей в блоге: 5
19.10.2014, 18:34 8
Поэтому и удивляешься, получая 2 вместо 3. Экономикой нельзя пренебрегать, это важно.

Добавлено через 58 секунд
Я ж тебе написал в чем - программа берет комиссию за свою работу.
0
sSTUDENTUSs
-10 / 1 / 2
Регистрация: 05.10.2014
Сообщений: 26
19.10.2014, 18:37  [ТС] 9
не второй раз не смешно. сорри за оффтоп.
0
_Ivana
3237 / 1870 / 235
Регистрация: 01.03.2013
Сообщений: 5,111
Записей в блоге: 5
19.10.2014, 18:38 10
Ну если ты ни с первого ни со второго раза не понял, то что еще остается?
1
sSTUDENTUSs
-10 / 1 / 2
Регистрация: 05.10.2014
Сообщений: 26
19.10.2014, 19:14  [ТС] 11
нда... извиняюсь за свою тупость. экономика рулит.
1
_Ivana
3237 / 1870 / 235
Регистрация: 01.03.2013
Сообщений: 5,111
Записей в блоге: 5
19.10.2014, 19:30 12
Плюс тебе за адекватное восприятие критики и экономики
0
19.10.2014, 19:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2014, 19:30

Определить номер строки матрицы, сумма элементов которой максимальна
Задача: Написать программу, которая определяет номер строки прямоугольной...

Массив: Найти индекс элемента, для которого сумма элементов, стоящих до него наименее отличается от суммы элементов, стоящих после.
Задан массив неотрицательных чисел. Найти в нём индекс элемента для которого...

Определить три последовательных элемента массива, сумма которых максимальна
Определить три последовательных элемента, сумма которых максимальна, в числовом...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru