wieso stürzt mein programm ab?

2 Antworten

lässt es sich überhaupt compilieren? denn: deklariert ist „salutation“ aber verwendet wird „anrede“...

ah! jetzt seh ich's: du verwendest die uninitialisierte „salutation“ in dem printf ganz am Ende... es compiliert aber, weil du ganz oben auch anrede deklarierst... allerdings sollte man anrede als „char*“ deklarieren... LOL

Probier es mal so:

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

int main()
{
  int age;
  char gender, degree;
  char name [128];
  char* salutation = NULL;

  printf("Name: "); fgets(name, 128, stdin);
  printf("Alter: "); scanf("%d", &age);
  printf("Geschlecht (m/f): "); scanf("\n%c", &gender);
  printf("Doktorengrad j/n: "); scanf("\n%c", &degree);

  if(age<16) salutation = "";
    else if(gender == 'f') salutation = (degree == 'j') ? "Frau Dr. " : "Frau ";
    else if(gender == 'm') salutation = (degree == 'j') ? "Herr Dr. " : "Herr ";
    else {
         printf("Falsche Eingabe.");
         return 1;
         }
  printf("Hallo %s%s", salutation, name);
  return 0;
}


Probleme mit C-Programmierung: Zahlen sortieren?

Hallo, ich habe folgendes Programm geschrieben und komme einfach nicht weiter. Das Programm zählt die Buchstaben einer .txt Datei und gibt ebenso deren Häufigkeit an. Ich soll jetzt noch die Anzahl der Buchstaben beginnen mit der größten Zahl sortieren. Die Buchstaben müssen dabei auch stimmen und natürlich die Häufigkeit. Kann mir jemand dabei helfen?

So weit bin ich gekommen, eine Beispiel txt Datei wurde implementiert. Ich programmiere mit Codeblocks.


#include <stdio.h>

include

char dateiname[40]; int anweisung1;

int main(int argc, char **argv) { if (argc != 2) { printf("Der Dateiname fehlt\n"); return 0; }

FILE *fp = fopen(argv[1], "r");
if (fp == NULL)
{
    printf("Die Datei kann nicht geoeffnet werden\n");
    return 0;
}

double anzahl[26] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int gesamt = 0;


while (1) //Zähschleife
{
    int buchstaben = fgetc(fp);
    if (buchstaben < 0)
    {
        break;
    }
    if (buchstaben >= 'A' && buchstaben <= 'Z') //Zählschleife für Großbuchstaben
    {
        anzahl[buchstaben - 'A']++;
        gesamt++;
    }
    else if (buchstaben >= 'a' && buchstaben <= 'z')
    {
        anzahl[buchstaben - 'a']++; //Zähschleife für Kleinbuchstaben
        gesamt++;
    }
}


fclose(fp);

int anweisung;
printf("Dieses Programm zaehlt die die Buchstaben in einer .txt Datei\nund gibt die Haeufigkeit der Buchstaben an\n");
printf("Sie haben jetzt die Auswahl zwischen:\n");
printf("1. Die .txt Datei mit printf in der Konsole auszugeben\n");
printf("2. Eine neue .txt Datei zu speichern\n\n");
scanf("%d", &anweisung);

switch(anweisung)
{
case 1:
    printf("Die Gesamtzahl der Buchstaben lautet: %d\n",gesamt);

    int i;
    for (i = 0; i < 26; i++)
    {
        printf("%c : %0.lf", (i + 'A'), anzahl[i]);
        double prozente = anzahl[i]*100/gesamt;
        printf("\tHaeufigkeit: %.2lf%%\n",prozente);
    }
    return 0;

case 2:

    printf("\nBitte geben Sie den Dateinamen mit .txt an:\n\n");
    scanf("%s", dateiname);
    printf("\nIhre Datei heisst: %s.\n", dateiname);

    FILE* fp;
    fp = fopen(dateiname,"w");
    fprintf(fp,"Die Gesamtzahl der Buchstaben lautet: %d\n",gesamt);

    for (i = 0; i < 26; i++)
    {
        fprintf(fp,"%c : %0.1f\t  ", (i + 'A'), anzahl[i]);
        double prozente = anzahl[i]*100/gesamt;
        fprintf(fp,"Haeufigkeit: %.2lf%%\n",prozente);
    }
    return 0;
    fclose(fp);
}

}

...zur Frage

VBS o.Ä. Script um Mausklick zu generieren?

Würde gerne an der Stelle auf dem Screen, wo sich mein Mauszeiger befindet, einen Klick generieren.

Gesucht wird etwas im Format:

shell.sendkeys("{leftclick}")

Wenn möglich in einer "Programmiersprache", welche auf jedem Windowscomputer schon ohne Download weiterer Software vorhanden ist, sprich ausgeführt werden kann.

Habe mal gelesen, dass in VBS Mausklicke nicht funktionieren, aber wollte trotzdem mal nachfragen.

LG

...zur Frage

Ackermann-Funktion in C++ umsetzen

Hallo, ich habe eine Frage zu der Umsetzung der Ackermann-Funktion in C++, und zwar wenn ich die Funktion auf die folgende Weise schreibe:

int acker(int m, int n)
{
     if (m==0)      return ++n;
     else if (n==0) return acker(m-1, 1);
     else           return acker(m-1, acker(m, n-1));
}

dann funktioniert das, wenn ich es aber ohne das else if in der zweiten Zeile schreibe, dann funktioniert es nicht:

int acker(int m, int n)
{
     if (m==0)      return ++n;
     if (n==0)      return acker(m-1, 1);
     else           return acker(m-1, acker(m, n-1));
}

Meiner Überlegung nach müsste das aber egal sein, denn wenn m == 0, dann wird der aktuelle Aufruf der Funktion eh beendet und sonst müsste er ja sowieso zu der Abfrage if(n==0) übergehen, egal ob da ein else davor steht oder nicht.

Vielen Dank schonmal im Vorraus für die Antworten!

...zur Frage

Wörterbuch programmiern in C

Hallo. :)

Ich hoffe von euch kann mir jemand meinen Fehler sagen. Ich soll nämlich ein Wörterbuch programmiern und wenn ich ein Wort eingeben, das ich in der Datenbank schon eingespeichter habe, funktioniert alles. Aber, wenn ein Wort kommt, dass noch nicht gespeichert ist, schmeißts mich immer raus. >.> ...eigentlich sollte eine Anfrage kommen, ob man das Wort speichern will...

also hier mal das Programm:

include<stdio.h>

include<conio.h>

include<string.h>

define MAX 100

typedef struct woerterbuch {

char wort[30+1];
char word[30+1];

}Buch;

void main() { int i=0; char search[20]; char suchen[20]; int zahl, gefunden=1, x=0; Buch liste[MAX]={"Hallo", "hello", "Auto", "car", "Sonne", "sun"};

printf("Geben Sie ein, ob Sie von Englisch auf Deutsch (1) oder von Deutsch auf Englisch (2) uebersetzen wollen! ");
scanf("%d", &zahl);

if(zahl==1)
{
    printf("\nGeben Sie ein englisches Wort ein, das Sie uebersetzen wollen! ");
    scanf("%s", search);

    do
    {   
        if(strcmp(search, liste[i].word)==0)
        {
            printf("Deutsch: %s ", liste[i].wort);
            x=1;
            gefunden=0;
        }

        i++;

    }while(x!=1);

    if(gefunden==1)
    {
        printf("\nIhr Wort ist nicht in der Datenbank enthalten!");
        /*printf("\nWenn Sie das Wort in die Datenbank hinzufügen wollen, drücken sie 1.");
        scanf("%d", add);

        if(add==1)
        {
            printf("Das deutsche Wort: ");
            scanf("%s", liste[i+1].wort);

            printf("Das englische Wort: ");
            scanf("%s", liste[i+1].word);
        }*/
    }
}

else
{
    printf("\nGeben Sie ein deutsches Wort ein, das Sie uebersetzen wollen! ");
    scanf("%s", suchen);

    do
    {   
        if(strcmp(suchen, liste[i].wort)==0)
        {
            printf("Englisch: %s ", liste[i].word);
            gefunden++;
            x=1;
        }
    i++;

    }while(x!=1);

    if(gefunden==1)
    {
        printf("\nIhr Wort ist nicht in der Datenbank enthalten!");
    }
}

getch();

}

Vielleicht kann mir hier jemand helfen. ? :)

Danke, schonmal im voraus. :)

P.S: und bitte keine Kommentare zum Stil oder sonst was...bin nicht das größte Genie im Programmiern, das weiß ich selber. :)

...zur Frage

Was ist der Unterschied zwischen: scanf("%i",&x); und scanf("%i",x);

Hi Leute frage steht zwar oben aber hier noch mal mit einem Beispiel programm:

include

int main() {

int x;

printf("\nBitte gebe eine Zahl ein\n");

scanf("%i",&x); //Hier meine ich den Unterschied zwischen scanf("%i",x);scanf("%i",&x);

printf("\nDu bist %i Jahre alt!",x);

return 0;

}

Also der Unterschied zwischen 'scanf("%i",&x);' und 'scanf("%i",x);'

Falls jemand rum meckern wollen würde (oder so) ich benutze nur Linux(ubuntu) KEIN windows!!!!

Danke für eure Hilfe

LG Niklas

...zur Frage

Programmieren lernen?

Wie kann man am besten Programmieren lernen. Bin schon seid längerer Zeit dabei und kann auch schon ein bisschen, aber ab jetzt komme ich nicht weiter. Hat jemand Tipps oder Empfehlungen für mich, die auch recht einfache Voraussetzungen haben?

...zur Frage

Was möchtest Du wissen?