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)
Welche Programmiersprache nach javascript?

ich hab eine lange zeit nichts anderes als javascript gemacht darunter ist auch Typescript und react und vieles mehr und klar man kann noch mehr lernen. Php kann ich ausreichend fürs backend.

aber immer auf den Browser beschränkt zu sein und websites macht auf Dauer keinen spass. Ich will auch in der lage sein desktop programme zu schreiben.
electron js kann das aber ist auch nicht das beste was man nutzen kann und sobalds aufwendiger wird hat man Probleme und riesige Dateien. Man lernt auch nichts neues dadurch das ist nichts für mich.

c# c++ c java oder rust hatte ich im kopf.

(python syntax gefällt mir auch nicht , mir geht es auch ums lernen. Nicht nur mit pip install irgendwas nutzen von jemand anderes. Am ende hast du keine ahnung von der programmierung)

aber wie weiss ich welches der oben genannten Sprachen eher was für mich ist.

Java ist Typescript sehr ähnlich, läuft überall und ich könnte da schnell zurechtkommen aber dafür ist es deutlich langsamer als C++ und nicht so mächtig.

Mit c++ lernst du auch viel und wird oft in Unis oder Schulen gelehrt, hätte damit einen vorteil wenn ich es schon gut kann.
Rust hat einen kleinen hype und viele meinen es wird in zukunft wichtiger werden = mehr jobs.

c# ist soweit ich weiss
nur für windows Anwendungen gut, mit den anderen sprachen könnte man auch in zukunft was für linux machen wenn man lust drauf hat.

ich seh da keinen grossartigen vorteil zu java oder c++ in der schnelligkeit.

Computer, Microsoft, App, IT, Webseite, Java, JavaScript, compiler, Cplusplus, C Sharp, CPP, Informatik, Oracle, Programmiersprache, Python, sdk, C (Programmiersprache), React, Angular
C programm vorheriges Datum mit aktuellen Datum vergleichen?

Hallo, ich lese eine Datei in C ein und möchte das Datum von der aktuellen Zeile mit der vorherigen Zeile vergleichen. Wenn dies der Fall ist möchte ich die aktuelle Zeile komplett löschen (aktuell werden diese Zeilen nur gezählt mit der Variable count). Ich verwende memcpy um das Aktuelle Datum in die Variable datumAlt, em Ende der while Schleife, zu speichern. Nur ist es so sobald die Schleife von vorne beginnt steht in datumAlt auch wieder das aktuelle Datum. Habe dies mit dem Debugger festgestellt. Weiß jemand warum dies so ist, bzw. wie kann ich diesen Fehler beheben? Danke für einen Tipp.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_LINE_LENGTH 1000      // maximum length of a line in the input file

char lines[MAX_LINE_LENGTH];

const char trennzeichen[] = ";";

int main()
{
    // Open the input file
    FILE *fp = fopen("alles_perfekt.txt", "r");
    if (fp == NULL)
    {
        printf("Failed to open the file.\n");
        return 1;
    }


    int count =0;
    char ticker[50], datumAktuell[50], datumAlt[50];
    char line[MAX_LINE_LENGTH];

    while ( (fgets(line, sizeof(line), fp) != NULL))
    {

        sscanf(line,"%[^;];%[^;];\n",ticker, datumAktuell);

        if(datumAktuell==datumAlt)
        {
            count++;
            printf("%d\n",count);
        }


        memcpy(datumAlt, datumAktuell, sizeof(datumAktuell));

    }


    // Close the input and output file
    fclose(fp);

    return 0;
}


Programmiersprache, C (Programmiersprache)
expected ';' before numeric constant?

Hallo!

Für mein Spalierobst habe ich eine Bewässerung gebaut. Das Wasser ist in einem hoch gestellten Gartenfass. Über einen selbst gebauten Dauermagnet-Wasserhahn soll das gesammtelte Wasser in Abhängigkeit der Bodenfeuchtigkeit in ein Schläuchlein mit Tropfern fließen, und so den Boden befeuchten

Ein Arduino soll über einen Servo das Stellen realisieren.

Ist der Boden zu trocken, ermittelt das ein capazitiver Soil Moisture Sensor v2.0. Ein Servo schwenkt einen an ihm befestigten Dauermagnet über die Stelle des Dauermagnet-Wasserhahnes, unter dem ein Dauermagnet-Ventil angezogen wird.Somit ist der Weg des Wassers frei.

Ist der Boden feucht genug, schwenkt der Servo seinen Magneten zurück in die Ausgansposition. Das Dauermagnet-Ventil fällt und schließt die Wasserzufuhr.

Schön wäre, wenn der Servo zwischen den Aktionen stromlos sein könnte. Das bekomme ich auch nicht hin.

Ein Arduino soll die Regelung übernehmen.

Vielen Dank Demjenigen, der mir helfen kann.

Mein bisheriger Code ist im folgendem Foto.

#include<Servo.h>

Servo S;

const int SensorPin = A0;

void setup() {

 Serial.begin(9600);

 pinMode (A0, INPUT);

 S.attach(9);

}

void loop() {

               // serieller Monitor geht nicht mit { } hinter if

  int analogWert = analogRead(A0); // Auslesen des analogen Sensorwertes

 Serial.println(analogWert);   // Ausgabe des Wertes auf der seriellen Konsole

 delay(1000); 

 if (analogRead(A0)> 270) // zu trocken   

  {S.write (65);  //Servo geh auf 65 GRad //dies geht nicht 

 delay(6000);}//pendelt 0 -- 65 -- 0 im 6000, 500 Takt

 //Wenn delay (6000) deaktiviert wird geht nichts mehr!

 

 else (analogRead(A0)< 260) ; // zu nass - dies funktioniert

  S.write (0); //Servo geh auf 0 Grad

  delay (500);

  }

Der Code wird kompilliet, aber funktioniert noch nicht zufriedenstellend.

Bild zum Beitrag
Arduino, C (Programmiersprache)
ChatBot wie ChatGPT programmieren? (Einfacher)?

Hi, mein großes Projekt für dieses Jahr soll sein, einen intelligenten ChatBot zu Coden. Ähnlich wie ChatGPT, aber mit ist natürlich bewusst, dass ich einen so komplexen Bot nicht machen kann. Es soll ein kleinerer werden.

Meine Vorstellungen:

Die Oberfläche mit HTML und CSS

Die Datenbank mit SQL? (ich habe wenig Erfahrung mit Datenbanken, deshalb das Fragezeichen)

Ansonsten die Logik eventuell mit JS, aber eventuell mit etwas anderem, da man ja über JS leicht Schadsoftware injizieren kann.

Könnt ihr mir da einen Vorschlag machen?

Die Funktion habe ich mir so vorgestellt:

In einer Datenbank sind entweder Schlüsselwörter oder komplette Antworten gespeichert. Zu jedem Schlüsselwort sollen Daten gespeichert sein. Wenn in der Datenbank nur Schlüsselwörter gespeichert sind, soll der Bot automatisch Sätze dazu formulieren.

Ein Beispiel:

Eingegebene Frage: Wer ist der Bundeskanzler von Deutschland?

(Bot Sicht spezielle Wörter im Text, z.B. Bundeskanzler und Deutschland)

in der Datenbank: Olaf Scholz (Daten zu ihm, Schlüsselwörter wann diese Antwort genutzt wird) z.B. Olaf Scholz (deutscher Kanzler, männlich, …)[Bundeskanzler+Deutschland, Olaf Scholz, Scholz]

In dem runden Klammern die Daten zu ihm, in den eckigen die Schlüsselwörter, wann die Antwort genutzt wird. Ansonsten halt vorgefertigte Antworten, die sich auch an Schlüsselwörtern in der Frage orientieren.

Wenn nur Wörter gespeichert sind, dann soll er sich einen Satz drumherum bauen.

Ich würde ihn im Browser laufen lassen, aber nicht öffentlich. Eventuell kann man ihn auch mit Google verknüpfen… auch wenn dann vermutlich die ein oder andere Antwort falsch ist. Aber das macht bei meinem nichts. Was haltet ihr davon? Wie würdet ihr es umsetzen? Welche Sprache? Eventuell ein paar Zeilen Code für bestimmte Funktionen?

LG

Programm, SQL, HTML, Programmierer, programmieren, CSS, Java, JavaScript, künstliche Intelligenz, Programmiersprache, Python, C (Programmiersprache), Chatbot, Python 3, Pygame, ChatGPT
Wie verbiete ich Buchstaben einfach und simpel in C?

Ich habe vor ein paar tagen mit dem Programmieren angefangen und arbeite gerade and einem Taschenrechner. Da wo die Zahlen eingegeben werden können soll kurz und simpel ein Code stehen der Buchstaben und Sonderzeichen verbietet.

Bis jetzt funktioniert alles.

Der Code sieht gerade so aus:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    float a,b;
    char l;
    printf("Tippe Y um zuzustimmen das sie keine ungefragten angaben verwenden werden und tippen sie L um dem nicht zu zustimmen!:");
    scanf("%c",&l);
    switch(l){
    case 'Y': printf("Vielen Dank das sie Kooperation!\n");
    break;
    case 'L': printf ("Keine Gnade!\n");
    exit(0);
    break;
    default: printf ("\n");
    exit(0);
    break;
    }
   printf("Erste Zahl eingeben:");
   scanf("%f",&a);
   printf("Zweite Zahl eingeben:");
   scanf("%f",&b);
float erga,ergs,ergd,ergm;
 /*
 Ein Kommentar
 */
  char r;
  printf("Gebe eine Rechenart an +,-,/,%,*:");
  scanf("\n%c",&r);
  switch(r) {
  case '+':
    erga = a + b;
  printf("Ergebnis Addition: %f + %f = %f\n", a,b,erga);
   break;
  case '-':
    ergs = a - b;
  printf("Ergebnis Subtraktion: %f - %f = %f\n",a,b, ergs);
   break;
  case '/':
    if (b==0){
    printf("Division durch 0 ist nicht definiert!\n");
   break;}
   else {
    ergd = a / b;
  printf("Ergebnis Division: %f / %f = %f\n",a,b, ergd);
   break;}
  case '*':
    ergm = a * b;
  printf("Ergebnis Multiplikation: %f * %f = %f\n",a,b, ergm);
   break;
  default: printf("Ihre Angabe ist keine der erlaubten Rechenarten, erlaubt sind +,-,%,/,* \n versuchen sie es erneut:\n");
  exit(0);
   break;
  }
int ss;
  printf("Um abzubrechen tippen sie die 1 um den vorgang zu wiederholen tippen sie die 2:");
    scanf("\n%d",&ss);
   switch(ss){
    case 1: printf("Auch wiedersehen!");
break;
case 2: return main();
break;
default: printf("Angabe nicht definiert, automatischer Abbruch");
break;
   }
return 0;
}
Anfänger, programmieren, Rechner, Einsteiger, Programmiersprache, C (Programmiersprache)

Meistgelesene Fragen zum Thema C (Programmiersprache)