Alphabet in einem Array verschieben um einen Wert zw. 1-25

Kosta97

Newbie
Registriert
Aug. 2018
Beiträge
5
Hallöchen liebe Community,

ich habe seit 4 Monaten angefangen das Programmieren mit C zu üben und stoße nun an meine Grenzen bei meinen Laboraufgaben im Studium. Die Aufgabe ist recht simpel ein Alphabet soll um einen Wert verschoben werden in einem Array z.B. alpha['a'...'z']. Da ich vorher noch nie etwas programmiert habe fällt es mir schwer.

Mein Ansatz:


#include <stdio.h>
#define LENGTH 26

void shiftAlphabet(char *alpha, LENGTH, int shift){
int i, value, shift;
while(shift > 0){
value = alpha[LENGTH - 1];
for(i = LENGTH - 1; i > 0; i--){
alpha = alpha[i - 1];
}
alpha[0] = value;
}
shift--;
}
int main (void){
char alpha[LENGTH];
int k;
for (k = 0; k < LENGTH; k++) {
alpha[k] = 'a' + k;
}

shiftAlphabet(&alpha[LENGTH], LENGTH);

return 0;
}

Mein Problem: Die globale Variable LENGTH 26 weist einen Fehler auf "expected "," or "..." before numeric constant". Ich habe mich schon Tage lang damit befasst und finde keine Lösung. :(
 
das Makro "#define LENGTH 26"
bewirkt das LENGTH im code durch 26 ersetzt wird.
also steht da
void shiftAlphabet(char *alpha, 26, int shift) { ... }
 
void shiftAlphabet(char *alpha, LENGTH, int shift){

Die Definition ist falsch. Das LENGTH gehört nicht da hin.
 
OH JEH!

Ich habe mal ein paar Buchstaben in Deinem Quellcode zufällig ausgetauscht und schon geht es wieder, sieh an ;)
C:
#include <stdio.h>
#define LENGTH 26

void shiftAlphabet(char alpha[], int length, int shift)
{
 int i;
 while (shift > 0) {
     char value = alpha[length - 1];
     for (i = length - 1; i > 0; i--) {
        alpha[i] = alpha[i - 1];
     }
     alpha[0] = value;
     shift--;
 }
}

 int main(void) 
{
  char alpha[LENGTH];
  int k;
  for (k = 0; k < LENGTH; k++) {
     alpha[k] = 'a' + k;
  }

  shiftAlphabet(alpha, LENGTH, LENGTH/2);

  return 0;
}
 
  • Gefällt mir
Reaktionen: TSKNF
Erstmal vielen Dank an alle, besonders aber an "BlöderIdiot" haha. Ich Probiere es gleich mal bei mir. Difinitionen und sowas da muss ich mich noch reinfinden….
 
Multivac schrieb:
nein du das ist schon richtig, er nimmt nicht die erste Adresse sondern die letzte des Arrays.
blöderidiot hat es auch so, also von ersten Element beginnen. Rückwärts funktioniert es mit kleiner Anpassung auch, aber ist sehr ungewöhnlich.
 
Zuletzt bearbeitet:
ich wollte nur sagen das beide Versionen gleich sind.

C:
shiftAlphabet(alpha, LENGTH, LENGTH/2);
shiftAlphabet(&alpha[0], LENGTH, LENGTH/2);

beides ist ein Pointer auf das erste Element von
char alpha[LENGTH];
 
Ich habe es nun ausprobiert und es funktioniert beinahe so wie ich es wollte. Ich muss komischerweise 2 Eingaben tätigen, wobei bei der 2. egal ist was ich eingebe, genommen wird immer der erste Wert

Beispiel: Eingabe 1 + Enter ... nichts passiert.

erneute Eingabe z.B. 9 + Enter... das Alphabet wurde um 1 verschoben, sprich 'z' ist nun vorne. Hauptsache es Funktioniert. xD
 
Kosta97 schrieb:
Ich muss komischerweise 2 Eingaben tätigen, wobei bei der 2. egal ist was ich eingebe, genommen wird immer der erste Wert
Beispiel: Eingabe 1 + Enter ... nichts passiert.
erneute Eingabe z.B. 9 + Enter... das Alphabet wurde um 1 verschoben, sprich 'z' ist nun vorne.
"Suffering from Buffering".
 

Ähnliche Themen

Zurück
Oben