Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
83 / 3 / 1
Регистрация: 14.11.2011
Сообщений: 68

Вычислить сумму элементов массива между первым и последним положительным числом

28.05.2012, 15:59. Показов 1452. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1.минимальный элемент массива
2.вычислить сумму элементов массива между первым и последним положительным числом
3.преобразовать массив таким образом,чтобы сначала располагались все элементы равные нулю

первое задание сделал,остальные не получаются
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>
#include <stdlib.h>
#include <conio.h>
 
void main()
{
        int i,j,min=20,mini,minj,a,b,k;
        const int n=5,m=5;
 
        FILE*newfile;
        newfile=fopen("Result.txt","a");
 
        printf("A i B:\n");
        scanf("%d%d",&a,&b);
        fprintf(newfile,"N=%d,M=%d\nA=%d,B=%d",n,m,a,b);
        int mas[n][m];
        k=0;
        for (i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            {
                mas[i][j]=rand()%10-5;
                printf("%4d",mas[i][j]);
                if(mas[i][j]<min)
                {
                    min=mas[i][j];
                    mini=i;
                    minj=j;
                }
                if (mas[i][j]>=a && mas[i][j]<=b)
                {
                    k=k++;
                }
                if 
                printf("%4d",mas[i][j]);
            }   
            printf("\n");
        }
        printf("min=%d\n",min);
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2012, 15:59
Ответы с готовыми решениями:

Вычислить минимум и сумму элементов массива, расположенных между первым и последним положительным элементами
В одномерном массиве, состоящем из п вещественных элементов, вычислить: - минимальный элемент массива; - сумму элементов массива,...

Найти сумму элементов размещенных между первым и последним положительным элементом в массиве
что у меня не правильно?? нада найти сумму элементов размещенных между первым и последним положительным элементом в массиве,..і min...

Вычислить сумму элементов массива между первым и последним отрицательными элементами
Ребят помогите пожалуйста решить данную не сложную задачу на языке C(старым способом) (с помощью #include&lt;stdio.h&gt;) буду крайне...

8
 Аватар для Кот Ангенс
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
28.05.2012, 16:19
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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 <limits.h>
#include <stdio.h>
#include <stdlib.h>
 
int main() {
    unsigned i, n, nullCount = 0, first = 0, last = 0;
    int min = INT_MAX, s = 0;
    char firstFound = 0;
    int* a;
    scanf("%u", &n);
    a = (int*)malloc(n * sizeof(int));
    for (i = 0; i < n; i++) {
        scanf("%d", &a[i]);
        if (a[i] < min)
            min = a[i];
        if (a[i] > 0) {
            if (!firstFound) {
                firstFound = 1;
                first = i;
            }
            last = i;
        }
    }
    for (first++; first < last; first++)
        s += a[first];
    i = n;
    do {
        i--;
        if (a[i])
            a[i + nullCount] = a[i];
        else
            nullCount++;
    } while (i);
    for (; i < nullCount; i++)
        a[i] = 0;
    printf("%d\n%d\n", min, s);
    for (i = 0; i < n; i++)
        printf("%d\n", a[i]);
    free(a);
}
1
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
28.05.2012, 16:31
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

2.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int sum( int* array, size_t size) {
    int sum = 0, *p_bgn = array, *p_end = &array[ size - 1 ];
 
    while ( *p_bgn <= 0 )
        ++p_bgn;
    ++p_bgn;
 
    while ( *p_end <= 0 )
        --p_end;
    --p_end;
 
    if( p_bgn >= p_end )
        return 0;
 
    while ( p_bgn <= p_end )
        sum += *p_bgn++;
 
    return sum;
}
0
83 / 3 / 1
Регистрация: 14.11.2011
Сообщений: 68
28.05.2012, 17:07  [ТС]
массив должен быть двухмерным
и эти два варианта не подходят совсем,извиняйте
нужно проще все реализовать
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
28.05.2012, 18:45
Цитата Сообщение от Zambal Посмотреть сообщение
вычислить сумму элементов массива между первым и последним положительным числом
Цитата Сообщение от Zambal Посмотреть сообщение
массив должен быть двухмерным
и как вычислить где первое а где последнее положительное число?
https://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{pmatrix}-2 & 3 & -4\\ -1 & -2 & -3\\  1 & 2 & -2\end{pmatrix}
в данном случае 2 суммы между положительными числами - это -9 и 1
0
83 / 3 / 1
Регистрация: 14.11.2011
Сообщений: 68
29.05.2012, 15:10  [ТС]
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от alkagolik Посмотреть сообщение
и как вычислить где первое а где последнее положительное число?
https://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{pmatrix}-2 & 3 & -4\\ -1 & -2 & -3\\  1 & 2 & -2\end{pmatrix}
в данном случае 2 суммы между положительными числами - это -9 и 1
в задании не сказано,но я думаю,что здесь нужно считать сумму начиная с тройки и до двух,перед -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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
void main()
{
    int i,j,a,b,k,mini,minj,min=20,s=0,firsti=0,lasti=0,firstj=0,lastj=0;
    const int n=5,m=5;
    char firstfound=0,lastfound=0;
    unsigned nullcount=0;
 
    FILE*newfile;
    newfile=fopen("newfile.txt","a");
 
    printf("vvedite a i b:\n");
    scanf("%d%d",&a,&b);
    fprintf(newfile,"n=%d,m=%d\na=%d,b=%d",n,m,a,b);
    int mas[n][m];
    k=0;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            mas[i][j]=rand()%10-5;
                printf("%5d",mas[i][j]);
                if(mas[i][j]<min)//task 1 begin
                    {
                        min=mas[i][j];
                        mini=i;
                        minj=j;
                    }
                if(mas[i][j]>0)//task 2 begin
                    {   
                        if(!firstfound)
                        {
                            firstfound = mas[i][j];
                            firsti = i,firstj=j;
                        }
                            if(mas[i][j]<0)
                                {
                                    if(!firstfound && !lastfound)
                                    {
                                        lastfound=mas[i-1][j-1];
                                        lasti=i,lastj=j;
                                    }
                                }
                    }
        for(firsti++,firstj++;firsti<lasti,firstj<lastj;firsti++,firstj++)
            s+=mas[i][j];
/*      i=m,j=n;
        do
        {
            i--,j--;
            if(mas[i][j])
                mas[i+nullcount][j+nullcount]=mas[i][j];
            else
                nullcount++;
        }
        while(i,j);
        for(;i<nullcount;i++)
            for(;j<nullcount;j++)
            mas[i][j]=0;*/
        }
        printf("\n");
    }
    printf("min=%d\nsum=%d\n",min,s);
system("pause");
}
Добавлено через 20 часов 3 минуты
объясните пожалуйста,как исправить ошибку
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
29.05.2012, 17:20
Zambal, тема в ветке с++ могу сделать, только позже и в с++, если надо в С то отпишись.
0
83 / 3 / 1
Регистрация: 14.11.2011
Сообщений: 68
29.05.2012, 17:46  [ТС]
сейчас попробую обратиться туда
просто здесь сам алгоритм нужно исправить
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
30.05.2012, 02:35
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
using namespace std;
typedef unsigned int uint32;
 
class my {
 
public:
 
    my( uint32 _n, uint32 _m ) : n( _n ), m(_m), num( 20 ) {
 
        arr = new int* [ n ];
 
        for ( uint32 i = 0; i < n; ++ i )
            arr[ i ] = new int [ m ];
 
        srand( time ( 0 ) );
 
        for ( uint32 i = 0; i < n; ++i )
            for ( uint32 j = 0; j < m; ++j )
                arr[ i ][ j ] = rand() % num - ( num / 2 );
 
    }
 
    ~my() {
 
        for ( uint32 i = 0; i < n; ++i )
            delete [] arr[ i ];
        delete [] arr;
    }
 
    void print( ostream &out ) {
 
        for ( uint32 i = 0; i < n; ++i ){
            for ( uint32 j = 0; j < m; ++j )
                out << setw( 3 ) << arr[ i ][ j ];
            out << endl;
        }
    }
 
    void get_min( ostream &out ) {
 
        min = arr[ 0 ][ 0 ];
 
        for ( uint32 i = 0; i < n; ++i )
            for ( uint32 j = 0; j < m; ++j )
                if ( min > arr[ i ][ j ] )
                    min = arr[ i ][ j ];
        out << setw(3) << min << endl;
    }
 
    void get_sum( ostream &out ) {
 
        uint32 begin = 0, size = m * n - 1 ;
        int *a = new int[ n * m ];
        int *beg, *end, sum = 0;
 
        for ( uint32 i = 0; i < n; ++i )
            for ( uint32 j = 0; j < m; ++j )
                a[ begin++ ] = arr[ i ][ j ];
        end = &a[ size ];
        beg = &a[ 0 ];
 
        while ( *beg <= 0 && ( beg <= end ) )
            ++beg;
        ++beg;
 
        while ( *end <= 0 && ( end >= beg ) )
            --end;
        --end;
 
        if ( beg >= end )
            out << setw( 0 ) << endl;
        else {
            while ( beg <= end )
                sum += *beg++;
            out << setw( 3 ) << sum << endl;
        }
 
        delete [] a;
    }
 
    void perpose() {
 
        uint32 tmp, row = 0, col = 0;
 
        for ( uint32 i = 0; i < n; ++ i )
            for ( uint32 j = 0; j < m; ++j )
                if ( arr[ i ] [ j ] == 0 ) {
 
                    tmp = arr[ row ][ col ];
                    arr[ row ][ col++ ] = 0;
                    arr[ i ][ j ] = tmp;
 
                    if ( col >= m ) {
                        col = 0;
                        ++row;
                    }
                }
    }
 
private:
    const uint32    n, m, num;
    int**           arr;
    int min;
};
 
int main() {
 
    my x( 3, 4 );
 
    x.print( cout );
    x.get_min( cout );      // 1
    x.get_sum( cout );      // 2
    x.perpose();            // 3
    x.print( cout );
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.05.2012, 02:35
Помогаю со студенческими работами здесь

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

Вычислить сумму элементов массива, расположенных между первым и последним отрицательными элементами
НАИДИТЕ ОШИБКУ ПОЖАЛУИСТА! в одномерном массиве, состоящем из n вещественных элементов, вычислить: сумму элементов массива,...

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

Вычислить сумму элементов массива, расположенных между первым и последним положительными элементами
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива, расположенных между первым и последним...

Вычислить сумму элементов массива, расположенных между первым и последним нулевым элементами
В одномерном массиве, состоящем из целых элементов вычислить А) количество элементов массива, кратных 7. Б) Количество пар...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru