Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.95/20: Рейтинг темы: голосов - 20, средняя оценка - 4.95
tasha77
0 / 0 / 0
Регистрация: 02.11.2018
Сообщений: 28
1

Поиск элементов массива, которые являются наибольшими из отрицательных и положительных чисел

03.11.2018, 17:48. Просмотров 3633. Ответов 5
Метки нет (Все метки)

доброго времени суток! помогите пожалуйста исправить код программы что бы она работала корректно
числовой массив а[1:m, 1:n]. поиск элементов массива, которые являются наибольшими из отрицательных и положительных чисел
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 <malloc.h>  
             
#include <conio.h>
#include <stdlib.h>                                
#include <stdio.h>                              
#include <locale.h>                       
 
int main()
{
    setlocale (LC_ALL, "rus");  
    
  int **a;  // указатель на массив
  int i, j, n, m;
  int minus1;
  int max = minus1;
  int maxA = 0;  // максимум выше нуля
 
  printf("Введите количество строк: ");
  scanf("%d", &m);
  printf("Введите количество столбцов: ");
  scanf("%d", &n);
  
  a = (int**)malloc(m*n * sizeof(int*));
  
  for (i = 0; i<m; i++)  // цикл по строкам
  {
    for (j = 0; j<n; j++)  // цикл по столбцам
    {
            scanf("%d", (a + i*n + j));
    }
  }
  
    for (int i = 0; i < m; i++) { // цикл по строкам
        for (int j = 0; j < n; j++) { // цикл по столбцам
        
            printf("%5d ", *(a + i*n + j)); // 5 знакомест под элемент массива
        }
        printf("\n");
  }
            
        for(int i = 0; i < m; i++){
 
 
            for(int j = 0; j < n; j++)
 
 
                if ((a[i][j] < 0 )&& (a[i][j] > max))
 
 
                   max = a[i][j];
 
 
                else if((a[i][j] > 0) && (a[i][j] > maxA)){
 
                    maxA = a[i][j];}}
        if(max != minus1)
            printf ( "\nмаксимальный элемент из отрицательных " ,max);
        else
            printf( "\nнет отрицательных элементов" );
 
        if(maxA != 0)
            printf ( "\nмаксимальный элемент из положительных " ,maxA );
 
        else
            printf ("\nнет положительных элементов" );
 
  return 0;
}
помогите пожалуйста исправить (программа сейчас только вводит массив и выводит на экран)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2018, 17:48
Ответы с готовыми решениями:

Массив из 10 целых чисел Создать два новых массива из положительных и отрицательных элементов
Ввести в stringGrid массив из 10 целых чисел Создать два новых массива из положительных и...

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

Вычислить сумму всех положительных элементов массива и произведение отрицательных элементов
Задание: Ввести с клавиатуры целое число K(от 6 до 15). Ввести с клавиатуры массив K элементов...

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

Сортировка массива: чередование положительных/отрицательных чисел
Есть массив , который состоит из отрицательных и положительных чисел, но нужно сделать так, чтобы...

5
CopBuroJLoBa
61 / 49 / 39
Регистрация: 03.01.2017
Сообщений: 133
05.11.2018, 10:01 2
Лучший ответ Сообщение было отмечено tasha77 как решение

Решение

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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>
#include <math.h>
 
int main() {
    srand (time(0));
    int i, j, n, m, min = 100, max = -100, **A;
    
    printf ("n = "); scanf ("%d", &n);
    printf ("m = "); scanf ("%d", &m);
    A = (int**)malloc(n * sizeof(int*));
    
    for (i = 0; i < n; i++) {
        A[i] = (int*) malloc(m * sizeof(int));
        
        for (j = 0; j < m; j++) {
            A[i][j] = -100 + rand ()%201;
            
            if (A[i][j] < 0 && abs(min) > abs(A[i][j])) min = A[i][j];
            if (max < A[i][j]) max = A[i][j];
            
            printf ("%4d", A[i][j]);
        }
        puts("");
    }
    
    printf ("\nmax = %d\nmin = %d\n", max, min);
    
    system ("Pause");
    return 0;
}
Кликните здесь для просмотра всего текста

n = 5
m = 5
-2 -85 50 -1 -54
48 -9 19 51 -98
-96 68 -97 90 95
70 55 54 46 41
17 -61 -12 19 -15

max = 95
min = -1
1
tasha77
0 / 0 / 0
Регистрация: 02.11.2018
Сообщений: 28
05.11.2018, 11:25  [ТС] 3
Спасибо, и если можно объясните в чем моя ошибка в той программе которая не работает?
0
CopBuroJLoBa
61 / 49 / 39
Регистрация: 03.01.2017
Сообщений: 133
05.11.2018, 11:56 4
Лучший ответ Сообщение было отмечено tasha77 как решение

Решение

tasha77, выделение памяти для матрицы
C
1
2
a = (int**)malloc(n * sizeof(int*));
for (i = 0; i<m; i++) a[i] = (int*) malloc(m * sizeof(int));
Для нахождения наибольшего отрицательного числа нужно сравнивать их "модули"
C
1
if ((a[i][j] < 0 )&& (abs(a[i][j]) > abs(max)))
В выводе не было %d, чтобы вывелся max и maxA
C
1
2
printf ( "\nмаксимальный элемент из отрицательных %d", max);
printf ( "\nмаксимальный элемент из положительных %d", maxA);
1
tasha77
0 / 0 / 0
Регистрация: 02.11.2018
Сообщений: 28
05.11.2018, 12:30  [ТС] 5
спасибо за разъяснение.
и крайний вопрос - перед return нужно освобождать выделенную память free(A)?
0
CopBuroJLoBa
61 / 49 / 39
Регистрация: 03.01.2017
Сообщений: 133
05.11.2018, 12:40 6
tasha77, если память ограничена и требуется для других вычислений, то да, нужно освободить её.
0
05.11.2018, 12:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2018, 12:40

Вычислить сумму положительных и отрицательных элементов массива
Вычислить Z=(S1+S2)/2, где S1 – сумма положительных элементов массива X(50), а S2 – сумма...

Найти Суммы положительных и отрицательных элементов массива
Ребят, как найти сумму положительных и сумму отрицательных элементов массива А(100) очень нужно...

Подсчитать количество отрицательных, нулевых и положительных элементов массива
Подсчитать количество отрицательных, нулевых и положительных элементов массива с номерами позиций,...


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

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

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