Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C (СИ) Не работает strcpy() http://www.cyberforum.ru/c-beginners/thread2257314.html
Нужно вывести строку "Hello, World!" из строки "pt Hello, World!;": #include <stdio.h> #include <string.h> int main(){ char code = "pt Hello, World!;"; if(code == 'p' && code == 't'){
Написать рекурсивную процедуру перевода натурального числа из десятич- ной системы счисления в N-ричную C (СИ)
Написать рекурсивную процедуру перевода натурального числа из десятич- ной системы счисления в N-ричную. Значение N в основной программе вво- дится с клавиатуры (2 N 16).
C (СИ) Связь между указателями и массивами
С помощью указателя написать функцию, которая подсчитывает количество нулевых элементов в массиве действительных чисел, и выводит их координаты. Программа должна спрашивать у пользователя количество...
C (СИ) Функция которая находит произведение элементов массива расположенных на НЕчетных местах С помощью указателей, написать функцию которая находит произведение элементов массива расположенных на НЕчетных местах. Используйте эту функцию для программы, что запрашивает у пользователя... http://www.cyberforum.ru/c-beginners/thread2257216.html
C (СИ) Решение нелинейных уравнений http://www.cyberforum.ru/c-beginners/thread2257161.html
Добрый день! Очень прошу помощи, только начал входить в программирование, а на практикуме сразу кинули в жир ногами, времени очень мало остается. Решение нелинейного уравнения методом секущих с...
Из строк исходного файла, состоящих из строчных латинских букв, получить новые строки, в которых сохранены только C (СИ)
Из строк исходного файла, состоящих из строчных латинских букв, получить новые строки, в которых сохранены только символы, встречающиеся более трех раз. Новые строки поместить в новый файл ...
C (СИ) Функция: поиск минимума на четной позиции в файле
Переделать функцию чтоб она искала минимальный элемент на парной позиции без использования массива void func_1(double *a,int n) { int i=1; double min=a; while(i<n) { ...
C (СИ) Найти количество положительных и удвоенное количество отрицательных чисел в последовательности Даны натуральные числа A1,A2,... Признак конца последовательности 99. Найти количество положительных и удвоенное количество отрицательных чисел. http://www.cyberforum.ru/c-beginners/thread2257060.html
C (СИ) Ошибка Invalid parameter passed to C runtime function при чтении файла http://www.cyberforum.ru/c-beginners/thread2256921.html
Всем привет.Такая ситуация:есть бинарный файл и известна структура некого пакета и его контрольная сумма.Я открываю файл(100мб),дальше ищу заголовок и если заголовок найден-считываю структуру и...
C (СИ) Отредактировать текст, удаляя те слова, которые имеют больше 3-х гласных букв Помогите разобраться,вроде программа простенькая,но работает криво.Если слово заканчивается где меньше 3 гласных,то она нормально выводит,а если последнее слово с 4 и более гласными,она выводит... http://www.cyberforum.ru/c-beginners/thread2256910.html
easybudda
Модератор
Эксперт JavaЭксперт CЭксперт С++
10297 / 6179 / 1555
Регистрация: 25.07.2009
Сообщений: 11,762
02.06.2018, 16:20 0

На чем писать GUI?

02.06.2018, 16:20. Просмотров 1180. Ответов 6
Метки (Все метки)

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

Решение

Цитата Сообщение от bedermau5 Посмотреть сообщение
элементарный код решения квадратного уравнения
Если кому интересно, вот на GTK+ 2.0 такой:
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
123
124
125
126
127
128
129
#include <gtk/gtk.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <errno.h>
 
#define PARAMS_COUNT (3)
#define EPSILON (1.0e-9)
 
gboolean parse_double(const char * str, double * valptr) {
    char * tail;
    int errcode;
    
    errno = 0;
    *valptr = strtod(str, &tail);
    errcode = errno;
    
    return ( ! ( errcode || *tail ) );
}
 
gboolean equals_zero(double value) {
    return ( fabs(value) < EPSILON );
}
 
int calc_qe(double a, double b, double c, double * pX1, double * pX2) {
    double d;
    
    if ( equals_zero(a) )
        return -1;
    
    d = b * b - 4.0 * a * c;
    if ( d < 0.0 )
        return 0;
    else if ( equals_zero(d) ) {
        *pX1 = *pX2 = -1.0 * b / 2.0 / a;
        return 1;
    }
    d = sqrt(d);
    *pX1 = ( -1.0 * b - d ) / 2.0 / a;
    *pX2 = ( -1.0 * b + d ) / 2.0 / a;
    
    return 2;
}
 
////////////////////////////////////////////////////////////////
 
typedef struct CONTROLS {
    GtkWidget * mainWindow;
    GtkWidget * layoutTable;
    GtkWidget * paramLabels[PARAMS_COUNT];
    GtkWidget * paramEntries[PARAMS_COUNT];
    GtkWidget * processButton;
    GtkWidget * resultLabel;
} Controls_t;
 
void process_calc(GtkWidget * widget, gpointer data) {
    double a, b, c, x1, x2;
    gchar text[256];
    Controls_t * self = (Controls_t*)data;
    
    if ( ! ( parse_double(gtk_entry_get_text(GTK_ENTRY(self->paramEntries[0])), &a) 
        && parse_double(gtk_entry_get_text(GTK_ENTRY(self->paramEntries[1])), &b)
        && parse_double(gtk_entry_get_text(GTK_ENTRY(self->paramEntries[2])), &c) )
    ) {
        gtk_label_set_label(GTK_LABEL(self->resultLabel), "Wrong parameters!");
        return;
    }
    
    switch ( calc_qe(a, b, c, &x1, &x2) ) {
        case -1:
            gtk_label_set_label(GTK_LABEL(self->resultLabel), "Param A can't be zero!");
            break;
        case 0:
            gtk_label_set_label(GTK_LABEL(self->resultLabel), "No roots in real numbers.");
            break;
        case 1:
            sprintf(text, "One root: X = %f", x1);
            gtk_label_set_label(GTK_LABEL(self->resultLabel), text);
            break;
        case 2:
            sprintf(text, "Two roots: X1 = %f; X2 = %f", x1, x2);
            gtk_label_set_label(GTK_LABEL(self->resultLabel), text);
            break;
        default:
            gtk_label_set_label(GTK_LABEL(self->resultLabel), "Some metaphysic case!");
            break;
    }
}
 
/////////////////////////////////////////////////////////////////////////////////
 
int main(int argc, char ** argv) {
    Controls_t self;
    int i;
    char buf[256];
    
    gtk_init(&argc, &argv);
    
    self.mainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(self.mainWindow), "Quadratic Equation");
    gtk_widget_set_size_request(self.mainWindow, 400, 300);
    gtk_container_set_border_width(GTK_CONTAINER(self.mainWindow), 10);
    g_signal_connect(G_OBJECT(self.mainWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
    
    self.layoutTable = gtk_table_new(5, 2, TRUE);
    gtk_container_add(GTK_CONTAINER(self.mainWindow), self.layoutTable);
    
    for ( i = 0; i < PARAMS_COUNT; ++i ) {
        sprintf(buf, "%c = ", 'A' + i);
        self.paramLabels[i] = gtk_label_new(buf);
        self.paramEntries[i] = gtk_entry_new();
        gtk_table_attach_defaults(GTK_TABLE(self.layoutTable), self.paramLabels[i], 0, 1, i, i + 1);
        gtk_table_attach_defaults(GTK_TABLE(self.layoutTable), self.paramEntries[i], 1, 2, i, i + 1);
    }
    
    self.processButton = gtk_button_new_with_label("Process...");
    g_signal_connect(G_OBJECT(self.processButton), "clicked", G_CALLBACK(process_calc), (gpointer) &self);
    gtk_table_attach_defaults(GTK_TABLE(self.layoutTable), self.processButton, 0, 2, 3, 4);
    
    self.resultLabel = gtk_label_new("Quadratic Equations Calculator v.0.1");
    gtk_label_set_line_wrap(GTK_LABEL(self.resultLabel), TRUE);
    gtk_table_attach_defaults(GTK_TABLE(self.layoutTable), self.resultLabel, 0, 2, 4, 5);
    
    gtk_widget_show_all(self.mainWindow);
    
    gtk_main();
    
    return 0;
}
Код
[andrew@easybook gtk]$ gcc -Wall QuadraticEquation.c `pkg-config --cflags --libs gtk+-2.0` -lm
[andrew@easybook gtk]$ ./a.out
На чем писать GUI?


Вернуться к обсуждению:
На чем писать GUI?
2
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2018, 16:20
Готовые ответы и решения:

На чем лучше писать программы на Си
Сейчас я пишу программы на Visual Studio 2012 и понимаю что это смахивает на извращение,потому что...

Где писать код под Си и чем компилировать?
Здравствуйте! Начал изучать Си. Где писать код?(Читал, что можно даже в блокноте) И чем...

Где и в на чем легче писать распределенные приложения ?
Где и в на чем легче писать распределенные приложения ?

На чем писать GUI?
Всем привет! Ребят, помогите пожалуйста в выборе IDE для написания гуя с базой данных. Не могу...

На чём писать GUI
Нужен какая-нибудь не громоздкая, чтобы программа с пустым окном была до 1 мб со статической...

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