Pesquisar na Comunidade
Mostrando resultados para as tags ''linguagem c++''.
Encontrado 3 registros
-
#include <stdlib.h> #include <stdio.h> #include <string.h> GtkWidget *entry; int first_number = -1; int second_number = -1; char symbol = '+'; int need_clear = 0; int has_press_symbol = 0; int has_press_number = 0; int main(int argc, char *argv[]) { /*init window*/ gtk_init(&argc, &argv); GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(delete_event), NULL); gtk_window_set_default_size(GTK_WINDOW(window), 400, 400); gtk_window_set_title(GTK_WINDOW(window), "calculator"); gtk_container_set_border_width(GTK_CONTAINER(window), 10); /*init layout*/ GtkWidget *vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(window), vbox); gtk_widget_show(vbox); GtkWidget *hbox1 = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(vbox), hbox1); entry = malloc(sizeof(GtkWidget)); memset(entry, 0, sizeof(GtkWidget)); entry = gtk_entry_new(); gtk_editable_set_editable(GTK_EDITABLE(entry), FALSE); gtk_widget_set_direction(entry, GTK_TEXT_DIR_RTL); gtk_entry_set_text(GTK_ENTRY(entry), "0"); gtk_box_pack_start(GTK_BOX(hbox1), entry, TRUE, TRUE, 0); gtk_widget_show(entry); GtkWidget *button = gtk_button_new_with_label("清零"); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(clear), NULL); gtk_box_pack_start(GTK_BOX(hbox1), button, TRUE, TRUE, 0); gtk_widget_show(button); gtk_widget_show(hbox1); GtkWidget *hbox2 = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(vbox), hbox2); create_num_button(hbox2, button, "7"); create_num_button(hbox2, button, "8"); create_num_button(hbox2, button, "9"); button = gtk_button_new_with_label("+"); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(click_symbol), (gpointer)'+'); gtk_box_pack_start(GTK_BOX(hbox2), button, TRUE, TRUE, 0); gtk_widget_show(button); gtk_widget_show(hbox2); GtkWidget *hbox3 = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(vbox), hbox3); create_num_button(hbox3, button, "4"); create_num_button(hbox3, button, "5"); create_num_button(hbox3, button, "6"); button = gtk_button_new_with_label("-"); gtk_box_pack_start(GTK_BOX(hbox3), button, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(click_symbol), (gpointer)'-'); gtk_widget_show(button); gtk_widget_show(hbox3); GtkWidget *hbox4 = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(vbox), hbox4); create_num_button(hbox4, button, "1"); create_num_button(hbox4, button, "2"); create_num_button(hbox4, button, "3"); button = gtk_button_new_with_label("*"); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(click_symbol), (gpointer)'*'); gtk_box_pack_start(GTK_BOX(hbox4), button, TRUE, TRUE, 0); gtk_widget_show(button); gtk_widget_show(hbox4); GtkWidget *hbox5 = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(vbox), hbox5); create_num_button(hbox5, button, "0"); button = gtk_button_new_with_label("="); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(submit), NULL); gtk_box_pack_start(GTK_BOX(hbox5), button, TRUE, TRUE, 0); gtk_widget_show(button); button = gtk_button_new_with_label("/"); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(click_symbol), (gpointer)'/'); gtk_box_pack_start(GTK_BOX(hbox5), button, TRUE, TRUE, 0); gtk_widget_show(button); gtk_widget_show(hbox5); gtk_widget_show(window); gtk_main(); exit(0); } gint delete_event(GtkWidget *window, GdkEvent *event, gpointer data) { gtk_main_quit(); return FALSE; } void create_num_button(GtkWidget *box, GtkWidget *button, char* button_num) { button = gtk_button_new_with_label(button_num); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(click_number), (gpointer)button_num); gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); gtk_widget_show(button); } void click_number(GtkWidget *widget, gpointer data) { if(need_clear) { gtk_entry_set_text(GTK_ENTRY(entry), "0"); need_clear = 0; } char* button_num = (char*)data; int entry_int = get_entry_value(); if(entry_int == 0) gtk_entry_set_text(GTK_ENTRY(entry), button_num); else gtk_entry_append_text(GTK_ENTRY(entry), button_num); has_press_number = 1; has_press_symbol = 0; } void clear(GtkWidget *widget, gpointer data) { gtk_entry_set_text(GTK_ENTRY(entry), "0"); first_number = -1; second_number = -1; has_press_number = 0; has_press_symbol = 0; need_clear = 0; symbol = '+'; } void click_symbol(GtkWidget *widget, gpointer data) { if(has_press_symbol == 0) { if(second_number == -1 && first_number == -1 && has_press_number == 0) {} else if(second_number == -1 && first_number == -1 && has_press_number == 1) { first_number = get_entry_value(); has_press_number = 0; } else if(second_number == -1 && first_number != -1 && has_press_number == 1) { second_number = get_entry_value(); first_number = calculator(symbol); second_number = -1; char* result_string = malloc(sizeof(char) * 10); memset(result_string, 0, 10); sprintf(result_string, "%d", first_number); gtk_entry_set_text(GTK_ENTRY(entry), result_string); } symbol = (char)data; need_clear = 1; has_press_symbol = 1; } } void submit(GtkWidget *widget, gpointer data) { second_number = get_entry_value(); int result = calculator(symbol); second_number = -1; has_press_symbol = 0; has_press_number = 0; first_number = result; char* result_string = malloc(sizeof(char) * 10); memset(result_string, 0, 10); sprintf(result_string, "%d", result); gtk_entry_set_text(GTK_ENTRY(entry), result_string); } int calculator(char symbol) { int result; switch(symbol) { case '+': result = first_number + second_number; break; case '-': result = first_number - second_number; break; case '*': result = first_number * second_number; break; case '/': result = first_number / second_number; break; default: printf("error\n"); return; } return result; } int get_entry_value() { const char* entry_string = gtk_entry_get_text(GTK_ENTRY(entry)); int entry_int = *entry_string - '0'; entry_string++; while(*entry_string != '\0') { entry_int = entry_int * 10 + (*entry_string - '0'); entry_string++; } return entry_int; } #ifndef CALCULATOR_H #define CALCULATOR_H #include <gtk/gtk.h> typedef struct calbutton { char *value; GtkWidget *button; }calbutton; /*function prototype*/ gint delete_event(GtkWidget *window, GdkEvent *event, gpointer data); void create_num_button(GtkWidget *box, GtkWidget *button, char* button_num); void click_number(GtkWidget *widget, gpointer data); void clear(GtkWidget *widget, gpointer data); void submit(GtkWidget *widget, gpointer data); void add(GtkWidget *widget, gpointer data); void sub(GtkWidget *widget, gpointer data); void mul(GtkWidget *widget, gpointer data); void division(GtkWidget *widget, gpointer data); void click_symbol(GtkWidget *widget, gpointer data); int calculator(char symbol); #endif
-
- linguagem c++
- calculadora
-
(e %d mais)
Tags:
-
VOU DEIXAR AQUI A PERGUNTA. 2) Crie um programa para manipular vetores. O seu programa deve implementar uma função que receba um vetor de inteiros V e retorne um outro vetor de inteiros alocado dinamicamente com todos os valores de V que estejam entre o valor mínimo e máximo (que também são passados como parâmetro para a função). A função deve obedecer a o seguinte protótipo: int* valores_entre (int*v, int n, int min, int max, int qtd); A função recebe: v: vetor de números inteiros; n: a quantidade de elementos do vetor v; min: valor mínimo a ser buscado; max: valor máximo a ser buscado; A função deve: Verificar a quantidade de elementos do vetor que sejam maiores do que min e menores que max; Caso a quantidade seja maior do que 0 (zero), alocar dinamicamente uma área do exato tamanho necessário para armazenar os valores; Copia os elementos do vetor que sejam maiores do que min e menores que max para a área alocada dinamicamente. A função retorna: O endereço da área alocada dinamicamente, preenchida com os números maiores do que min e menores que max, ou NULL, caso essa relação de números não tenha sido criada; A quantidade de números carregados na área alocada dinamicamente, através do parâmetro qtd. Em seguida, crie a função principal do programa para inicializar um vetor de inteiros, exibir esses valores na tela e pedir para o usuário digitar o valor mínimo e máximo a ser buscado. Em seguida o programa deverá chamar a função valores_entre e exibir na tela os valores resultantes. Lembre-se de exibir uma mensagem de erro caso nenhum valor seja encontrado. Não se esqueça de liberar a memória alocada dinamicamente. ____________ CODIGO _______________ #include<stdio.h> #include<stdlib.h> int *valoresentre(int *v,int min,int max,int qtd,int n,int *v2); main(){ int n; printf(" informe o tamanho do seu vetor: "); scanf("%i",&n); int *v=(int*)malloc(n*sizeof(int)); for(int i=0;i<n;i++){ int vetor[n]; printf(" informe os numeros: \n "); scanf("%i",&vetor); } int qtd=0; for(int i=0;i<n;i++){ qtd++; } // esta dando erro nessa linha } int *valoresentre(int *v,int min,int max,int qtd,int n){ if(qtd>0){ int z=0; int *v2; v2= (int*)malloc(qtd*sizeof(int)); for(int i=0;i<n;i++){ if(v>min&&v<max){ v2[z]=v; z++; } else{ printf(" não existe numero nesse intervalo ");} } } }
-
- linguagem c++
- c++
-
(e %d mais)
Tags:
-
-
- programação
- devc++
- (e %d mais)