Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C (СИ) Организация алгоритма для универсальной программы под микроконтроллер Здравствуйте уважаемые программисты интересует следующий алгоритм для следующей задачи: задача: есть некая программа под микроконтроллер, в стандартном виде она гоняет бесконечный цикл; допустим у нее есть внешний интерфейс (назовем его отладочный порт), по которому можно записать во флеш или в оперативку некий код; допустим код мы можем скомпилировать, и условно слинковать; этот код мы... https://www.cyberforum.ru/ c-beginners/ thread1769726.html C (СИ) Последовательность указателей на вещественные переменные, ограниченная NULL
Последовательность указателей на вещественные переменные, ограниченная NULL.. Функция возвращает динамический массив указателей на эти переменные. Написала с помощью макросов va-list,вроде понятно как они работают,но почему то ограничение не срабатывает...что я делаю неправильно?:(double mass(double*n...) { va_list arg; double *c = (double*)malloc(10 * sizeof(double)); /* инициализация...
C (СИ) Считать цифры из строки https://www.cyberforum.ru/ c-beginners/ thread1769473.html
Помогите разобраться с следующей проблемой. Необходимо считать цифры из строки: s(3), c(2), r(2,4) Решил сделать это функцией sscanf: sscanf_s(s.c_str(), "s(%d) ,c(%d), r(%d,%d)", &a, &b, &c, &d); Вроде по логике все правильно но цифры считываются некорректно. Если убрать пробелы в строке: sscanf_s(s.c_str(), "s(%d),c(%d),r(%d,%d)", &a, &b, &c, &d); И вводить без пробелов:...
C (СИ) Перевести двоичное число заданное в виде строки в десятичное https://www.cyberforum.ru/ c-beginners/ thread1769357.html
Перевести двойчное число в десятичное, число задается строкой, функция должна возвращать десятичное число.
Составить словарь из 20 наиболее часто встречающихся в текстовом файле слов C (СИ)
Составить словарь. Дан текстовый файл. Составить словарь из 20 наиболее часто встречающихся в этом тексте слов. Слова записать в новый файл в алфавитном порядке.
C (СИ) Доработать программу добавления строки в бинарный и текстовый файлы Написал программу которая записывает 6 строк в текстовый и бинарный файл но теперь не могу её сделать так что бы при повторном запуске она записывала 7 строку в текстовый и бинарный файл. Смысл программы записать сперва 6 строк в текстовый и бинарный файл а при повторном запуске дописать 7 строку . Вот код #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h>... https://www.cyberforum.ru/ c-beginners/ thread1769226.html
C (СИ) Как удалить строчку из структуры https://www.cyberforum.ru/ c-beginners/ thread1769153.html
Добрый день, получил задание(проект), за него получу оценку на экзамене. Вот что надо выполнить Есть программа, которая регистрирует продавцов, которые ездят по стране и за каждый километр им выплачивается 0.5 евро, и за 1 обед им выделяют 7.5 евро. Но всё это не суть. Проблема в том, что я не знаю: 1. Как удалить строчку из структуры (это 5тый case. Для того, чтобы это выполнить я сначала...
Сортировка массивов разными способами C (СИ)
1.Реализовать алгоритм сортировки прямым включением в виде функции 2.Реализовать алгоритм сортировки прямым выбором в виде функции 3.Реализовать алгоритм сортировки прямым обменом в виде функции 4.Добавить в фукнции подсчет количества обменов.
C (СИ) Подсчет количества чисел в файле https://www.cyberforum.ru/ c-beginners/ thread1768997.html
В файле test.txt написано: 0 -1 7 8. Консоль выводит результат: count positive = 0 count negative = 0. Насколько поняла, читает до условия , где идет проверка на содержание файла, затем процедура process завершается с результатом -1, потому и начальные значения количества сохраняются , т.е 0. Что не так? #include <stdio.h> int process(FILE* file, int* kol_pol, int* kol_otr) { if (file...
C (СИ) Обработка файлов с информацией об автомобилях https://www.cyberforum.ru/ c-beginners/ thread1768831.html
1)Разработать программу, которая должна в диалоговом режиме позволять: а) создать файл, каждая запись которого содержит данные, тип которых задан в конкретной условии задачи; б) открыть существующий файл; в) закрыть файл; г) проверить содержимое типизированного файла; д) добавить запись в файл; е) выйти из программы. 2)Определить все автомобили марки "газ" номера которых начинаются...
Изменить размеры матрицы C (СИ)
void reallocMatrix (Matrix *a, int m, int n); Изменяет размеры матрицы a так, чтобы у неё было m строк и n столбцов. Лишние столбцы и строки удаляются, новые столбцы или строки добавляют- ся в конец. Новые строки и столбцы инициализировать нулями. Пример. Исходная матрица: 1 2 3 4 5 6 Вызов: reallocMatrix(a, 2, 4);
C (СИ) Добавить n элементов из массива xs в конец массива array void appendElements (Array, *array, int *xs, int n); Добавляет n элементов из массива xs в конец массива array. Пример. Исходный массив: 1 2 3 4 5 Вызов: int xs = {6, 7, 8, 9}; int n = sizeof(xs) / sizeof(*xs); appendElements(array, xs, n); Результат: 1 2 3 4 5 6 7 8 9
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
25.06.2016, 03:44 0

Найти сумму двух сильно разреженных матриц - C (СИ) - Ответ 9311881

25.06.2016, 03:44. Показов 2531. Ответов 13
Метки (Все метки)

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Для разнообразия другой вариант разряженной матрицы. Велосипед делать было лень, взял GHashTable из GLib
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
#include <stdio.h>
#include <glib.h>
 
typedef struct SPARSE_ARRAY {
    gsize rows;
    gsize columns;
    GHashTable * hash;
} sparse_array_t;
 
sparse_array_t * sparse_array_new(gsize rows, gsize columns) {
    sparse_array_t * sa = g_new(sparse_array_t, 1);
    
    sa->rows = rows;
    sa->columns = columns;
    sa->hash = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, g_free);
    
    return sa;
}
 
void sparse_array_free(sparse_array_t * sa) {
    g_hash_table_destroy(sa->hash);
    g_free(sa);
}
 
void sparse_array_set_at(sparse_array_t * sa, const gsize row, const gsize column, const gdouble value) {
    if ( row >= sa->rows )
        g_error("row index out of bounds\n");
    else if ( column >= sa->columns )
        g_error("column index out of bounds\n");
    else {
        gdouble * pVal = g_new(gdouble, 1);
        *pVal = value;
        g_hash_table_insert(sa->hash, GSIZE_TO_POINTER(row * sa->columns + column), (gpointer)pVal);
    }
}
 
gdouble * sparse_array_get_at(sparse_array_t * sa, const gsize row, const gsize column) {
    if ( row >= sa->rows )
        g_error("row index out of bounds\n");
    else if ( column >= sa->columns )
        g_error("column index out of bounds\n");
    else
        return (gdouble*)g_hash_table_lookup(sa->hash, GSIZE_TO_POINTER(row * sa->columns + column));
}
 
/*****************************************************************/
 
const char * menuItems[] = {
    "help", "insert", "retrive", "exit", NULL
};
 
int main(void) {
    int rows, columns, choise;
    gboolean finish;
    sparse_array_t * sa;
    
    printf("Space separated rows and columns: ");
    if ( scanf("%d%d", &rows, &columns) != 2 )
        g_error("Wrong input!\n");
    
    sa = sparse_array_new(rows, columns);
    
    finish = FALSE;
    while ( ! finish ) {
        printf("[0 = help]> ");
        if ( scanf("%d", &choise) != 1 )
            g_error("Wrong input!\n");
        
        switch(choise) {
            case 0: {
                int i;
                
                for ( i = 0; menuItems[i]; ++i )
                    printf("%d - %s\n", i, menuItems[i]);
                printf("\n");
                
                break;
            }
            case 1: {
                int row, column;
                double val;
                
                printf("Space separated row, column and value: ");
                if ( scanf("%d%d%lf", &row, &column, &val) != 3 )
                    g_error("Wrong input!\n");
                sparse_array_set_at(sa, row, column, val);
                
                break;
            }
            case 2: {
                int row, column;
                double * valptr;
                
                printf("Space separated row and column: ");
                if ( scanf("%d%d", &row, &column) != 2 )
                    g_error("Wrong input!\n");
                
                valptr = sparse_array_get_at(sa, row, column);
                if ( ! valptr )
                    printf("NULL\n");
                else
                    printf("%f\n", *valptr);
                
                break;
            }
            case 3: {
                finish = TRUE;
                
                break;
            }
            default:
                g_printerr("Unknown option!\n");
        }
    }
    
    sparse_array_free(sa);
    
    return 0;
}
Код
andrew@debppc:~/workspace/c/class$ gcc -Wall sparse_array.c `pkg-config --cflags --libs glib-2.0`
andrew@debppc:~/workspace/c/class$ ./a.out 
Space separated rows and columns: 4 5
[0 = help]> 0
0 - help
1 - insert
2 - retrive
3 - exit

[0 = help]> 1
Space separated row, column and value: 1 2 3.14
[0 = help]> 2
Space separated row and column: 1 2
3.140000
[0 = help]> 2
Space separated row and column: 3 3
NULL
[0 = help]> 3
andrew@debppc:~/workspace/c/class$


Вернуться к обсуждению:
Найти сумму двух сильно разреженных матриц C (СИ)
3
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2016, 03:44
Готовые ответы и решения:

Найти сумму двух матриц
Помогите, пожалуйста написать программу найти сумму двух матриц в си (С). Размеры массива вводить с...

Умножение треугольных матриц«Методы обработки разреженных матриц»
Нужно перемножить треугольные матрицы в обычном виде и в свёрнутом. С обычным проблем нет. Доступ...

Найти сумму двух матриц
Найти сумму двух матриц размером nm.

Найти сумму двух матриц
Здравствуйте!Помогите составить код:&quot;Сформировать матрицу случайным образом и вводом значений с...

13
25.06.2016, 03:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2016, 03:44
Помогаю со студенческими работами здесь

Найти сумму двух матриц
Нужно найти сумму двух матриц. Нужна помощь.

Найти сумму двух матриц
Найти сумму двух матриц.

Найти сумму двух матриц
Найти сумму двух матриц розмер 4х4, и вычислить сумму диагональных элементов полученной матрицы

Найти сумму двух матриц 4х4
Найти сумму двух матриц розмер 4х4, и вычислить сумму диагональных элементов полученной матрицы

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru