Форум программистов, компьютерный форум CyberForum.ru

Массивы. Посчитать количество положительных, найти минимальное, удалить строку с минимальным (Не могу найти ошибку) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Triple DES-EDE3 практическая реазизация http://www.cyberforum.ru/cpp-beginners/thread753065.html
Прошу помощи аудитории этого уважаемого форума и форумчан... Мне требуется код процедуры шифрования Triple DES, 192 бит (24 байт). то есть Triple DES-EDE3 (с тремя ключами). Ищу ищу и нигде нагуглить так и не смог.
C++ Найти номер первой из строк,не содержащих ни одного положительного элемента Путем перестановки элементов квадратной матрицы добиться того,чтобы ее макс элемент находился в левом верхнем углу,следующий по величине- в позиции (2 2), следующий по величине - в позиции (3 3) и т.д.,заполнив таким образом всю главную диагональ. Найти номер первой из строк,не содержащих ни одного положительного элемента Такое задание, вся программа работает. Проблема лишь в последнем пункте... http://www.cyberforum.ru/cpp-beginners/thread753064.html
Программа, которая отправляет данные, введенные в нее C++
Я С++ только начал изучать, но хотелось узнать, возможно ли сделать программу, которая отправляет данные, введенные в нее. Например, на e-mail или что-то подобное? Спасибо заранее.
C++ Проверить, является ли последовательность прогрессией или нет?
Дан последовательность из N целых чисел (N задаётся с клавиатуры). Проверить, является ли данная последовательность прогрессией или нет? Если является - вывести на экран разницу, если нет - вывести 0. (сделать БЕЗ МАССИВОВ, а только с помощью цифр и циклов)
C++ Двумерный массив. Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент http://www.cyberforum.ru/cpp-beginners/thread753039.html
(20) Работа с двумерными массивами. Дана целочисленная прямоугольная матрица. Определить: Номер первого из столбцов, содержащих хотя бы один нулевой элемент.
C++ С помощью механизма перегрузки функций реализовать функции для вывода на экран (17) С помощью механизма перегрузки функций реализовать функции для вывода на экран (первый параметр – тип выводимого значения ) Добавлено через 2 минуты ошибка. перегрузка функции подробнее

Показать сообщение отдельно
Psilon
Master of Orion
 Аватар для Psilon
5749 / 4697 / 620
Регистрация: 10.07.2011
Сообщений: 14,163
Записей в блоге: 5
Завершенные тесты: 4
07.01.2013, 01:19     Массивы. Посчитать количество положительных, найти минимальное, удалить строку с минимальным (Не могу найти ошибку)
В общем вылетала функция Dispose, почему, тоже понятно: она пыталась удалить все ссылки, а одну ссылку (удаляемую строку) мы бросали просто так, поэтому на последней итерации она не находила ссылку для удаления и висла. Так что хорошая функция, так бы хрен догадался бы, в чем проблема. А вообще: используйте дебаггер и вводите изменения малыми порциями, тогда все будет просто. Вот, это вам надо?
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
#include <stdio.h>
#include <math.h>
 
 
double** InitializeMatrix(int m, int n, double a, double b)
{
    int i,j;
    double **result;
    result =(double**)malloc(sizeof(double) * m);
    for (i = 0; i < m; i++)
    {
        result[i] = (double*)malloc(sizeof(double) * n);
        for (j = 0; j < n; j++)
            result[i][j]=cos(a - i/(b*j + 1));
    }
    return result;
}
 
 
void PrintMatrix(double **F, int m, int n)
{
    int i,j;
    printf("\n");
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
            printf("%4.2f\t", F[i][j]);
        printf("\n");
    }
}
 
double PositiveSum(double *row, int length)
{
    double result;
    int i;
    for (i = 0; i < length; i++)
        if (row[i] > 0)
            result += row[i];
    return result;
}
 
int MinPosIndex(double **F,int m, int n)
{
    int i, j, lastcount, newcount, result = 0;
    for (i = 0, lastcount = n; i < m; i++)
    {
        for (j = newcount = 0; j < n; j++)
            if (F[i][j] > 0)
                newcount++;
        if (newcount < lastcount)
        {
            lastcount = newcount;
            result = i;
        }
    }
    return result;
}
 
 
void ZeroRow(double **F, int index, int m, int n)
{
    int i;
    double *temp = F[index];
    for(i = index + 1; i < m; i++)
        F[i-1] = F[i];
    F[m-1] = temp;
    for(i = 0; i < n; i++)
        F[m-1][i] = 0;
}
 
void Dispose(double **F, int rowcount)
{
    int i;
    for(i = 0; i < rowcount; i++)
        free(F[i]);
    free(F);
}
 
 
void TestProgram(int m, int n, double a, double b, char *name)
{
    int i;
    double **F;    //Объявляем нужные переменные
    F = InitializeMatrix(m,n,a,b);
    printf("Matrix %s \r\n", name);
    PrintMatrix(F,m,n);
    printf("\nMatrix %s w/o row with minimal count of positives\r\n", name);
    ZeroRow(F,MinPosIndex(F,m,n),m,n);
    PrintMatrix(F,m,n);
    Dispose(F,m);
}
 
 
int main()
{
 
    TestProgram(8,4,1.9,3,"X");
    TestProgram(5,5,5.7,2,"Y");
    TestProgram(6,9,1.4,4,"Z");
    getchar();
    return 0;
}
 
Текущее время: 20:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru