Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- double *allocate_double(long len)
- {
- double *dyn=0;
- if((dyn=calloc(len, sizeof(double)))!=0)
- return dyn;
- else
- {
- fprintf(stderr, "Fehler bei der Allozierung!\n");
- exit(-1);
- }
- }
- void free_double(double *mem)
- {
- if(mem)
- {
- free(mem);
- mem=0;
- }
- else
- {
- mem=0;
- fprintf(stderr, "Fehler bei Speicherfreigabe!\n");
- }
- }
- void print(double *mem, long len)
- {
- long i=0;
- if(mem)
- {
- for(i=0;i<len;i++)
- printf("Element %ld: %lf\n", i, mem[i]);
- }
- else
- {
- fprintf(stderr, "Fehler bei der Speicherausgabe!\n");
- }
- }
- double *double_size(double *zahl, long old_size)
- {
- double *dyn=0;
- if((dyn=realloc(zahl, 2*(old_size)*sizeof(double)))!=0)
- {
- return dyn;
- }
- else
- {
- fprintf(stderr, "Fehler bei der Verdopplung!\n");
- exit(-1);
- }
- }
- long sub(double *a, long size1, double *b, long size2, double *c, long size3)
- {
- long i=0;
- for(i=0;i<size1;i++)
- c[i]=a[i]-b[i];
- return 1;
- }
- char **store_in_array(char **storage, long length, char *newitem)
- {
- char **dyn;
- if((dyn=realloc(storage, (length+1)*sizeof(char*)))!=0)
- {
- dyn[length]=newitem;
- return dyn;
- }
- else
- {
- fprintf(stderr, "Fehler in der store_in_array Funktion!\n");
- exit(-1);
- }
- }
- char **delete_from_array(char **storage, long length, long delete_index)
- {
- char **dyn=0;
- long i=0;
- for(i=delete_index;i<length;i++)
- {
- storage[i]=storage[i+1];
- }
- if((dyn=realloc(storage, (length-1)*sizeof(char*)))!=0)
- {
- return dyn;
- }
- else
- {
- fprintf(stderr, "Fehler in der Funktion delete_from_array!\n");
- exit(-1);
- }
- }
- // compare small to big
- long compare_StB(char *text1, char *text2)
- {
- if(strcmp(text1, text2)>0)
- return 1;
- return 0;
- }
- // compare big to small
- long compare_BtS(char *text1, char *text2)
- {
- if(strcmp(text1,text2)<0)
- return 1;
- return 0;
- }
- void sort_storage(char **storage, long length, long order)
- {
- long (*operation)(char*, char*);
- char *temp;
- long i=0, j=0;
- if(order)
- operation=compare_StB;
- else
- operation=compare_BtS;
- for(j=length-1;j>0;j--)
- {
- for(i=0;i<j;i++)
- {
- if(operation(storage[i], storage[i+1]))
- {
- temp=storage[i];
- storage[i]=storage[i+1];
- storage[i+1]=temp;
- }
- }
- }
- }
- int main()
- {
- double *speicher=0, *a=0, *b=0, *c=0;
- long anzahl=0, i=0, num=0, del=0;
- printf("##### MINA #####\n");
- printf("-----------------\n");
- printf("Wieviele Elemente sollen initialisiert werden?\n");
- scanf("%ld", &anzahl);
- speicher=allocate_double(anzahl);
- for(i=0;i<anzahl;i++)
- speicher[i]=i+1;
- printf("Speicherinhalt:\n");
- print(speicher, anzahl);
- printf("##### MINB #####\n");
- printf("-----------------\n");
- speicher=double_size(speicher, anzahl);
- for(i=0;i<2*anzahl;i++)
- speicher[i]=i+1;
- printf("Die Anzahl der Elemente wurde verdoppelt und aufsteigend initialisiert!\n");
- printf("Speicherinhalt:\n");
- print(speicher, 2*anzahl);
- free_double(speicher);
- printf("Size of a, b & c?\n");
- scanf("%ld", &num);
- a=allocate_double(num);
- b=allocate_double(num);
- c=allocate_double(num);
- for(i=0;i<num;i++)
- {
- a[i]=i+10;
- b[i]=i+5;
- }
- printf("Speicherinhalt von a:\n");
- print(a, num);
- printf("Speicherinhalt von b:\n");
- print(b, num);
- printf("Speicherinhalt von c:\n");
- sub(a,num,b,num,c,num);
- printf("Die Subtraktion der Elemente a[i]-b[i] wurde in c[i] gespeichert!\n");
- printf("Neuer Speicherinhalt von c:\n");
- print(c, num);
- free_double(a);
- free_double(b);
- free_double(c);
- printf("##### ERWEITERUNG #####\n");
- printf("------------------------\n");
- char **ptr=malloc(5*sizeof(char*));
- ptr[0]="hallo,";
- ptr[1]="wie";
- ptr[2]="geht's";
- ptr[3]="dir";
- ptr[4]="heute?";
- char *toStore="danke, gut!\n";
- printf("Das Feld beinhaltet folgende Zeichenketten:\n");
- for(i=0;i<5;i++)
- printf("%ld. %s\n", i, ptr[i]);
- printf("Es wird folgende Zeichenkette angehaengt:\n%s\n", toStore);
- ptr=store_in_array(ptr, 5, toStore);
- printf("Das neue Feld beinhaltet folgende Zeichenketten:\n");
- for(i=0;i<6;i++)
- printf("%ld. %s\n", i, ptr[i]);
- printf("Welche Zeichenkette soll geloescht werden? (Indizes 0-5)\n");
- scanf("%ld", &del);
- ptr=delete_from_array(ptr, 6, del);
- printf("Das Feld beinhaltet folgende Zeichenketten:\n");
- for(i=0;i<5;i++)
- printf("%ld. %s\n", i, ptr[i]);
- sort_storage(ptr, 5, 1);
- printf("Das Feld wurde sortiert:\n");
- for(i=0;i<5;i++)
- printf("%ld. %s\n", i, ptr[i]);
- free(ptr);
- return 8;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement