C (Programmiersprache) – die besten Beiträge

C Programm funktioniert nicht Richtig?

Es geht um folgenden Code:

#include <gtk/gtk.h>
#include <string.h>
// Globale Variablen für die UI-Elemente
GtkWidget *search_entry;
GtkWidget *treeview;
GtkListStore *list_store;
GtkTreeModel *filter_model;
// Beispiel-Lagerbestand
typedef struct {
  const gchar *artikelnummer;
  const gchar *name;
  int bestand;
} Lagerartikel;
// Beispielhafte Lagerartikel
Lagerartikel lager[] = {
  {"1001", "Laptop", 15},
  {"1002", "Maus", 50},
  {"1003", "Tastatur", 30},
  {"1004", "Monitor", 10},
  {"1005", "Drucker", 5},
  {"1006", "USB-Stick", 100}
};
const int lager_size = sizeof(lager) / sizeof(lager[0]);
// Filterfunktion für die Suche
static gboolean filter_func(GtkTreeModel *model, GtkTreeIter *iter, gpointer data) {
  gchar *artikelnummer = NULL;
  gtk_tree_model_get(model, iter, 0, &artikelnummer, -1);
  if (artikelnummer == NULL) {
    return TRUE;
  }
  GtkWidget *search_entry = GTK_WIDGET(data);
  const gchar *search_text = gtk_entry_get_text(GTK_ENTRY(search_entry));
  if (search_text == NULL) {
    search_text = "";
  }
  gboolean visible = TRUE;
  if (strlen(search_text) > 0) {
    visible = g_strrstr(artikelnummer, search_text) != NULL;
  }
  g_free(artikelnummer);
  return visible;
}
// Aktualisiert den Filter, wenn sich der Suchtext ändert
static void on_search_changed(GtkSearchEntry *entry, gpointer user_data) {
  gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(filter_model));
}
// Erstellt die Lagerbestand-Tabelle
static void setup_treeview(GtkBuilder *builder) {
  treeview = GTK_WIDGET(gtk_builder_get_object(builder, "treeview"));
  // Spalten für die TreeView erstellen
  GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
  GtkTreeViewColumn *col1 = gtk_tree_view_column_new_with_attributes("Artikelnummer", renderer, "text", 0, NULL);
  GtkTreeViewColumn *col2 = gtk_tree_view_column_new_with_attributes("Name", renderer, "text", 1, NULL);
  GtkTreeViewColumn *col3 = gtk_tree_view_column_new_with_attributes("Bestand", renderer, "text", 2, NULL);
  gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), col1);
  gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), col2);
  gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), col3);
  // ListStore erstellen und Daten füllen
  list_store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT);
  for (int i = 0; i < lager_size; i++) {
    GtkTreeIter iter;
    gtk_list_store_append(list_store, &iter);
    gtk_list_store_set(list_store, &iter, 0, lager[i].artikelnummer, 1, lager[i].name, 2, lager[i].bestand, -1);
  }
  // Filtermodell erstellen
  filter_model = gtk_tree_model_filter_new(GTK_TREE_MODEL(list_store), NULL);
  gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(filter_model), filter_func, search_entry, NULL);
  gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), filter_model);
}
// Hauptfunktion
int main(int argc, char *argv[]) {
  gtk_init(&argc, &argv);
  // Glade-Datei laden
  GtkBuilder *builder = gtk_builder_new_from_file("part1.glade");
  // Widgets abrufen
  GtkWidget *window = GTK_WIDGET(gtk_builder_get_object(builder, "main_window"));
  search_entry = GTK_WIDGET(gtk_builder_get_object(builder, "search_entry"));
  // Signal für die Suche
  g_signal_connect(search_entry, "search-changed", G_CALLBACK(on_search_changed), search_entry);
  g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
  // Setup für die TreeView
  setup_treeview(builder);
  // Fenster anzeigen
  gtk_widget_show_all(window);
  gtk_main();
  return 0;
}

Ich benutze Glade um mit c ein interface zu erstelle.
Hier sollen die definierten Lagerartikel nach den Artikelnummern gesucht werden. Wenn man etwa 1002 eingibt bleibt nur 1002 übrig. wenn ich jetzt aber die 2 wegnehme, bleibt nur 1002 und 1003 übrig, obwohl alle angezeigt werden sollten.

Jetzt ist meine Frage, wie ich das beheben kann.
Auch ist folgendes: Bei 1003 zu 100 kommt 1003, 1004, 1005. Bei 1004 zu 100 kommt 1004, 1005, 1006, genau das gleiche bei 1005 und 1006. Nur bei 1001 zu 100 kommt alles

Programmiersprache, C (Programmiersprache)

Wechselgeld Rechner in C?

Ich habe den folgenden Code:

#include <stdio.h>

int main(void)
{
    /* declarate variables */
    float price, paid, change;
    int cents;
    int rest;
    int cent1;
    int cent2;
    int cent5;
    int cent10;
    int cent20;
    int cent50;
    int eur1;
    int eur2;

    /* print out price and paid amount */
    printf("Rechnungsbetrag: ");
    scanf("%f", &price);

    printf("Erhaltener Betrag: ");
    scanf("%f", &paid);

    /* calculate the change as float */
    change = paid - price;

    printf("======================\n");
    printf("Rückgeld: %.2f EUR\n", change);
    printf("======================\n");

    /* calculate the change in cents */
    cents = change * 100;


    eur2   = cents / 200;
    rest = cents % 200;

    eur1   = rest / 100;
    rest = cents % 100;

    cent50 = rest / 50;
    rest = cents % 50;

    cent20 = rest / 20;
    rest = cents % 20;

    cent10 = rest / 10;
    rest = cents % 10;

    cent5  = rest / 5;
    rest = cents % 5;

    cent2  = rest / 2;
    rest = cents % 2;

    cent1  = rest / 1;


    printf("1 Cent:  %d\n", cent1);
    printf("2 Cent:  %d\n", cent2);
    printf("5 Cent:  %d\n", cent5);
    printf("10 Cent: %d\n", cent10);
    printf("20 Cent: %d\n", cent20);
    printf("50 Cent: %d\n", cent50);
    printf("1 EUR:   %d\n", eur1);
    printf("2 EUR:   %d\n", eur2);


    return 0;
}

Es werden zwei Werte Eingeben, einmal den Rechnungspreis und den erhaltenen Betrag, dann wird das Wechselgeld ausgerechnet. Danach soll die Anzahl der jeweiligen Münzen errechnet werden, die es benötigt um den Betrag des Wechselgeldes zu erreichen.

Wenn ich, zum Beispiel, als Rechnungsbetrag 1.50 habe, und als Erhaltenen Betrag 2.00, dann gibt es mir 1 50 Cent münze und eine 10 cent münze aus.

Ich habe verschiedene Beträge ausprobiert und es kommt immer diese extra 10 Cent Münze raus.

Wie kann ich das beheben?

Computer, Linux, Code, Programmiersprache, Algorithmus, C (Programmiersprache)

Meistgelesene Beiträge zum Thema C (Programmiersprache)