Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Suche » Suchergebnis » Hallo Gast [Anmelden|Registrieren]
Zeige Beiträge 1 bis 5 von 5 Treffern
Autor Beitrag
Thema: Knoten beim einfügen in eine Liste sortieren
dghst

Antworten: 1
Hits: 2.783
Knoten beim einfügen in eine Liste sortieren 06.02.2017 21:00 Forum: Theoretische Informatik


Meine Frage:
Guten Abend, ich habe ein Programm zur Verwaltung von einem Periodensystem geschrieben, es funktioniert soweit alles, bis auf, dass ich ich die Elemente gerne nach Ordnungszahl sortiert hätte.

Meine idee wäre es über qsort bei addKnoten zu lösen, allerdings habe ich Probleme dabei, kann mir jemand helfen?

lG

Meine Ideen:
#include <stdio.h>
#include <string.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>

typedef char string[30];
typedef struct Knoten {
string name;
string Symbol;
string Ordnungszahl;
struct Knoten *nachf;
} Knoten;

typedef Knoten * Liste;

Knoten * zeigerAufNeuenKnoten( string name, string Symbol, string Ordnungszahl, Knoten *rest )
{
Knoten *neu = malloc( sizeof( Knoten ) );

strcpy( neu->name, name );
strcpy( neu->Symbol, Symbol );
strcpy( neu->Ordnungszahl, Ordnungszahl );

neu->nachf = rest;

return neu;
}


Liste addKnoten( Liste liste, string name, string Symbol, string ordnungszahl )
{
liste = zeigerAufNeuenKnoten( name, Symbol, ordnungszahl, liste );

return liste;
}


void printKnoten( Knoten *knoten )
{
printf("%s, %s, %s\n", knoten->name, knoten->Symbol, knoten->Ordnungszahl);
}


void printListe( Liste liste )
{

while( liste != NULL )
{
printKnoten( liste );
liste = liste->nachf;
}
}

int main( void )
{
Liste liste = NULL;

liste = addKnoten( liste, "Aluminium", "Al", "13" );
liste = addKnoten( liste, "Calium", "Ca", "20" );
liste = addKnoten( liste, "Chlor", "Cl", "17" );
liste = addKnoten( liste, "Flor", "F", "9" );
liste = addKnoten( liste, "Magnesium", "Mg", "12" );


printListe( liste );

printf("\n");

getch();
return 0;
}
Thema: Programm zur Playlist Verwaltung C
dghst

Antworten: 5
Hits: 4.078
30.01.2017 00:13 Forum: Theoretische Informatik


jap, das ist genau richtig!

wie kann ich denn eine ganze string struktur kopieren? also wie kann ich den gerade eingelesen Song an die Playlist weiter geben?
Thema: Programm zur Playlist Verwaltung C
dghst

Antworten: 5
Hits: 4.078
30.01.2017 00:02 Forum: Theoretische Informatik


Guten Abend, danke für eine Antwort zu solch später Stunde Augenzwinkern

da ich hier ja in einen string schreibe wurde mir beigebracht, das dort kein &(...) zu benutzen ist, funktioniert trotzdem beides Augenzwinkern

mit dem strcpy würde ich z.B. gerne wie in Zeile 137 den ersten Song der Playlist in den platzhalter string kopieren, jedoch wird da gesagt die hätten unterschiedliche Typen, dabei sind es doch beies strings mit der Song Struktur geschockt
Thema: Programm zur Playlist Verwaltung C
dghst

Antworten: 5
Hits: 4.078
Programm zur Playlist Verwaltung C 29.01.2017 22:44 Forum: Theoretische Informatik


Hallöchen zusammen,

ich sitze an einem Programm, welches eine Playlist verwalten soll mit den funktionen Songs hinzu zufügen, zu löschen, zu shuffeln usw.

Es treten noch sehr viele Probleme auf und ich erwarte nicht, dass einer ankommt und mir das alles korregieren kann. Mich interessiert insbesondere das/die Problem(e) die beim kopieren der Strings in andere auftreten z.B. in Song einlesen (Song, *playlist, int laenge) da werden inkompatible typen angezeigt, wie kann ich das beheben? Des weiter ist ein Haupt Problem, dass beim Song einlesen dadurch die String nicht wieder an die Hauptfunktion zurück gegeben werden, was glaube ich auch an der falschen Struktur liegt.


Vielen Dank für eure Hilfe!
lG Paul

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:

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

enum{ STRLEN = 100 };
enum{ PLLEN = 100 };

/* Beginn Teilaufgabe a) */
typedef struct {
  char Interpret [100];
	char Titel [100];
	int Jahr [5];
	int Minuten [3];
	int Sekunden [3];
  
} Song;
/* Ende Teilaufgabe a) */


/* --- Vorgebene Funktionen, nicht aendern --- */

/* Diese Funktion gibt einen zufaelligen Index
   zwischen 0 und laenge-1 zurueck */
int zufallsIndex( int laenge ) {
  return (int) rand()%laenge;
}

int laden( Song *playlist ) {
  
  FILE* fin = NULL;
  int n = 0;
  
  if ( ( fin = fopen( "playlist.dat", "rb" ) ) != NULL ) {
    while ( fread( &(playlist[n]), sizeof(Song), 1, fin ) > 0 && n < PLLEN )
      n++;
    printf("\nDatensaetze geladen!\n\n");
    fclose( fin );
  } else {
    printf("\nDerzeit sind keine Datensaetze gespeichert!\n\n");
  }
  
  return n;
}

void speichern( Song *playlist, int laenge ) {
  
  FILE* fout = NULL;
  
  if ( ( fout = fopen( "playlist.dat", "wb" ) ) != NULL ) {
    fwrite( playlist, sizeof(Song), laenge, fout );
    printf("\nDatensaetze gespeichert!\n\n");
    fclose( fout );
  } else {
    printf("\nSpeichern fehlgeschlagen\n\n");
  }
}
/* --- Ende der vorgebenen Funktionen --- */


/* Beginn Teilaufgabe b) */

/* Diese Funktion liest alle Attribute eines Songs
   aus der Kommandozeile und gibt einen struct vom Typ Song zurück */
 Song einlesen( Song *playlist, int laenge ) {
	 Song einzulesender;
	 
	 printf( "Interpret: ");
	 scanf ("%s" , einzulesender.Interpret);
	 printf("Titel: ");
	 scanf ("%s" , einzulesender.Titel);
	 printf("Jahr: ");
	 scanf ("%d" , einzulesender.Jahr);
	 printf("Minuten: ");
	 scanf ("%d" , einzulesender.Minuten);
	 printf("Sekunden: ");
	 scanf ("%d" , einzulesender.Sekunden);
	 
	 for (int i=1; i<= laenge; i++)
	 {
	 
		strcpy ( playlist[i], einzulesender); 
	 }
	 
	 	
	 
	 laenge++;
  return einzulesender;
 // return laenge;
  
 }


/* Diese Funktion gibt alle Attribute eines Songs aus */
 void ausgeben( Song song, int i ,int laenge) {
	 for (i=1; i<= laenge; i++)
	 {
		 printf( "%d : %d - %d, %d, %d:%d " , i, song.Interpret[i] , song.Titel[i] ,  song.Jahr[i] , song.Minuten[i] , song.Sekunden[i]);
  
	 }
 }
/* Ende Teilaufgabe b) */


/* Beginn Teilaufgabe c) */
 int loeschen(Song *playlist, int pos , int laenge, *Song ) {
    pos = -1;
while(pos <<0||pos>>laenge)	
{
	printf ("Welcher Song soll gelöscht werden?");
	 scanf("%d" , &pos);
}
	 
	 for (int i=pos; i<=laenge; i++)
	 {	strcpy ( playlist.Song[i], playlist.Song[i+1]);
	 }
	return laenge--;
  
  
  }
/* Ende Teilaufgabe c) */


/* Beginn Teilaufgabe d) */
 void shuffle( Song *playlist, int laenge ) {
  
  for (int i=1; i<= laenge-1; i++)
  { 
	Song platzhalter;
	int teins=zufallsIndex, tzwei=zufallsIndex;
	strcpy (platzhalter, playlist[teins]);
	strcpy (playlist[teins], playlist[tzwei]);
	strcpy (playlist[tzwei], platzhalter);
  }


	  
  
  
 }
/* Ende Teilaufgabe d) */


/* Beginn Teilaufgabe e) */
int jahrSuchen( Song *playlist, int jahr[4], int laenge ) {
	int j,i;
	printf ("Nach Jahr suchen: ");
	scanf("%d" , jahr);
	
	for(i=0; i<=laenge; i++)
	{
		if ( strcmp (playlist.jahr[i], jahr, 3) ==1)
		{
			printf ("%s" , playlist[i]);
			j++;
		}
		else{}
	}
	printf ("Die Suche ergab %d treffer." , j);
  
  
}
/* Ende Teilaufgabe e) */


/* Beginn Teilaufgabe f) */
 int interpretSuchen( Song *playlist, char *interpret, int laenge ) {
	
	int interpret[];
	int j,i;
	printf ("Nach Interpret suchen: ");
	scanf("%d" , interpret);
	
	for(i=0; i<=laenge; i++)
	{
		if ( strcmp (playlist.interpret[i], interpret, PLLEN) ==1)
		{
			printf ("%s" , playlist[i]);
			j++;
		}
		else{}
	}
	printf ("Die Suche ergab %d treffer." , j);
  
  
 }
/* Ende Teilaufgabe f) */


int main( void ) {
  
  Song;
  Song playlist[PLLEN];
  int laenge = 0, fertig = 0, einlesen = 0, ausgeben,loeschen;
  char eingabe;
 // char *playlist;
  
  srand(time(NULL));
  
  while ( !fertig ) {
    printf("\nl: laden\n");
    printf("s: speichern\n");
    printf("e: einlesen\n");
    printf("d: loeschen\n");
    printf("a: ausgeben\n");
    printf("m: mischen\n");
    printf("j: jahr suchen\n");
    printf("i: interpret suchen\n");
    printf("b: beenden\n\n");
    printf("Eingabe: ");
    
    scanf(" %c", &eingabe );
    getchar();
        
    switch( eingabe ) {
      case 'l': laenge = laden( playlist ); break;
      case 's': speichern( playlist, laenge ); break;
	  case 'e': einlesen( laenge, playlist ); break;
	  case 'a': ausgeben (playlist); break;
	  case 'd': int loeschen(Song *playlist, int pos , int laenge, *Song ); break; 
	  case 'm': mischen ( ) ; break;
      case 'b': fertig = 1; break;
      default: printf("Funktion nicht verfuebar!\n\n");
    }
    
  }
  
  return 0;
}

Thema: Rekursive Ableitungsfunktion für Polynome mit C
dghst

Antworten: 1
Hits: 3.386
Rekursive Ableitungsfunktion für Polynome mit C 15.01.2017 20:48 Forum: Algorithmen


Meine Frage:
Ich möchte ein Programm schreiben in welchem ein Polynom eingegebn wird und danach die n-te Ableitung ausgegeben wird, mein Problem ist, dass bei der Ausgabe nicht die Ableitung raus kommt, ich meinen fehler in der Umsetztung allerdings nicht finde, kann mir jemand einen Tipp geben? Hier mein aktueller stand:

Meine Ideen:
#include <stdio.h>
#include <math.h>


int main (void)
{
int n,i,k;
int an[11], a_strich[11], a[11];
while (n<1 || n>11)
{
printf("Grad eingeben: \n");
scanf("%d" , &n);
}
for (i=0; i<=n; i++)
{
printf("Bitte den Koeffizienten a%d eingeben: " , i);
scanf ("%d" , &an[i]);
}
printf("P(x)=");
for (i=n; i>=0; i--)
{
if (i>>1)
printf("%d*x^%d +" , an[i], i);
else if (i==1)
printf ("%d*x +" , an[1]);
else
printf("%d \n" , an[0]);
}

printf("Bitte Ableitungsgrad eingeben: \n");
scanf ("%d" , &k);
for (int i=0; i<=n; i++)
{ a[i]=an[i];

}

printf ("P %d (x)=" , k);
for (int a=n; a>>0; a--)
{
if(a_strich[a] !=0)
printf("%dx^%d " , a_strich[a] , a-k);

getch();
}



void ableitung(int a[11], int a_strich[11], int k)
{


for (int j=0; j<=n; j++)
{
if (j==0)
a_strich[j]=0;
else
a_strich[j]=a[j]*j;
}

if (k==1)
return a_strich[k];
else
k=k-1;
return ableitung;


}
}
Zeige Beiträge 1 bis 5 von 5 Treffern