C++: String in ein Array einlesen - Seite 2

Seite 2 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c_string_in_ein_array_einlesen_99704/page_2 - zur Vollversion wechseln!


Ringding schrieb am 08.12.2003 um 21:27

In Wahrheit ist es sogar O(n^3), weil noch jedesmal strlen aufgerufen wird.


that schrieb am 08.12.2003 um 21:42

Huch, stimmt. :eek:
Ich bin heute offenbar unaufmerksam ... wird Zeit für einen Urlaub. :)


Facetious schrieb am 08.12.2003 um 22:09

@ that

diese seltsame aufgabe hat unsere klasse von unserem prof. als hü gekriegt ---> der hat sie von der tu


that schrieb am 08.12.2003 um 22:28

Ihr bekommt Hausübungen für Dinge, die nicht unterrichtet werden?


Facetious schrieb am 08.12.2003 um 22:41

oja
wir machen c++
ich hab aber keinen schimmer von dem bsp


that schrieb am 08.12.2003 um 22:47

Zitat von Facetious
ich hab keine ahnung von c++

Welche Schule ist das?


Facetious schrieb am 08.12.2003 um 23:00

ach gott

keine ahnung war übertrieben ... ich kanns ein bissi


geforceraid schrieb am 09.12.2003 um 14:34

Zitat von Ringding
In Wahrheit ist es sogar O(n^3), weil noch jedesmal strlen aufgerufen wird.

stimmt :D
ziemlich russisch gecodet.
Aber hauptsache es funzt :)

einfacher würds natürlich mit einer funktion gehen, die ein zeichen aus einem string löscht.
im pascal heisst die glaub ich truncate oder?

edit: so funzts (falls du es noch nicht hinbekommen hast):

#include<stdio.h>
#define length 11
int main()
{
char var[length] = "ehaeelloee";
int laenge = length;

for(int i = laenge; i >= 0; i--)
{
if(var[i] == 'e')
{
for(int j = i; j < length; j++)
{
var[j] = var[j+1];
}
laenge--;
var[laenge-1] = '\0';
}
}
printf("%s\n", var);
}


FMFlash schrieb am 09.12.2003 um 16:22

wozu diese ganzen umständlichen schleifen? -> schau dir mal die funktion strcpy an ;)

schliesslich war die aufgabenstellung "jeden einzelnen buchstaben" in ein array zu schreiben und nicht "jeden buchstaben einzeln" :)

aber nicht vergessen vorher den speicher für das array je nach länge des eingegebenen textes zu reservieren, sonst wirds grimmig


that schrieb am 09.12.2003 um 18:34

@geforceraid: Du denkst viel zu umständlich. ;)

Code:
#include <stdio.h>
int main()
{
  char var[] = "ehaeelloee";
  char *out = var;
  for (char *in = var; *in; ++in)
    if (*in != 'e')
      *out++ = *in;
  *out = 0;
  printf("%s\n", var);
}


atrox schrieb am 09.12.2003 um 21:10

<evil>
Hab ich was verpasst? gibts einen neuen ocat-grotesk-programming award?
</evil>

Facetious: Nächstes mal bitte eine brauchbare beschreibung.


Ringding schrieb am 09.12.2003 um 22:35

Yeah, overclocker's obfuscated coding contest :)


PHaX schrieb am 15.12.2003 um 18:45

Hi Leute!
Um das ganze noch zuverkomplizieren (angenommen der InString ist argv[BLA] (BLA >= 1 && BLA <= argc) würde das die C Runtime Parameter überschreiben) hier eine Variante die den Input String nicht überschreibt:

#include <stdio.h>
int main ()
{
/* assumed that argc > 1! */
const char *var = argv[1];
char *pOut = (char*) alloca (strlen (var) + 1); /* maybe _alloca for Microsoft Visual C++ */
for (; *var; ++var)
if (*var != 'e')
*pOut++ = *var;
*pOut = 0;
printf("%s\n", Out);
return 0; /* was missing ;-) */
}




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025