WinFuture-Forum.de: C++ - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 3 Seiten +
  • 1
  • 2
  • 3

C++ Jeder kann fragen

#16 Mitglied ist offline   F481 

  • Gruppe: aktive Mitglieder
  • Beiträge: 292
  • Beigetreten: 13. April 08
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:daheim ^^

geschrieben 04. Juli 2008 - 22:55

OK neues Problem ^^ :

Zufallszahl erzeugen:
#include<stdio.h>
#include<stdlib.h>

int main()
{
	int zahl;

	randomize();
	zahl = random(100);
getchar();
getchar();
return 0;
}

Fehler: `randomize' undeclared (first use this function)

Wo ist der Fehler?
0

Anzeige



#17 Mitglied ist offline   def 

  • Gruppe: aktive Mitglieder
  • Beiträge: 429
  • Beigetreten: 19. Dezember 06
  • Reputation: 7
  • Geschlecht:Männlich

geschrieben 05. Juli 2008 - 02:04

Beitrag anzeigenZitat (F481: 04.07.2008, 23:55)

Fehler: `randomize' undeclared (first use this function)
Wo ist der Fehler?

Nun, der Fehler ist das, was da steht! ;)
Es gibt in Deinem Programm keine Funktion namens randomize(); sie ist also nirgendwo definiert oder deklariert worden (auch nicht in den Header-Dateien).
Die Frage ist also: Wie kann es zu diesem Fehler kommen?
Mir fallen folgende mögliche Erklärungen ein:
  • Du hast vielleicht Programmcode übernommen, der auf irgendeine externe Bibliothek zugreift, in der es diese Funktion randomize() möglicherweise tatsächlich gibt. Weder diese Bibliothek noch die zugehörige Header-Datei hast Du allerdings in Dein Programm übernommen.
  • Es gibt vielleicht in der C++-Standardbibliothek eine Funktion namens randomize(), wobei aber in diesem Fall zumindest die Header-Datei fehlt. Ich weiß nicht viel über C++ (ich kenne nur C), und der Grund, dass ich mich überhaupt traue, Dir zu antworten, ist der, dass Dein Code eher nach C statt C++ aussieht.
So weit also zur Erklärung der Fehlermeldung.
Aber um mal auf den entscheidenden Punkt zu kommen: Offenbar weißt Du einfach nicht, wie man Pseudozufallszahlen erzeugt (die meisten Computer verfügen m.W. über keinen echten Hardware-Zufallszahlengenerator, such im Web nach "Pseudozufallszahl", um herauszufinden, was das praktisch bedeutet).
So, hier ist jetzt mal reiner C-Code, der den Pseudozufallszahlengenerator initialisiert (wie üblich liefert der Timer den Startwert, damit nicht jedes Mal dieselben Zahlen erzeugt werden), dann eintausend ganze Pseudozufallszahlen zwischen 1 und 100 (jeweils einschließlich) erzeugt und diese dann ausgibt.
Ich hoffe, es sind keine Fehler drin. Vielleicht kann Dir einer der C++-Programmierer hier noch eine bessere "echte" C++-Lösung geben (ich weiß nicht, ob C++ dafür noch speziellere Mittel hat); wie gesagt, meine beschränkt sich auf C, ist aber natürlich auch unter C++ benutzbar.

Viele Grüße
Def

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

int main()
{
	int i;
	int zahl;

	srand((unsigned) time(NULL));
	for(i=0; i<1000; i++)
	{
		zahl = (rand() % 100) + 1;
		printf("%d ", zahl);
	}

	return EXIT_SUCCESS;
}

Eingefügtes Bild
0

#18 Mitglied ist offline   F481 

  • Gruppe: aktive Mitglieder
  • Beiträge: 292
  • Beigetreten: 13. April 08
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:daheim ^^

geschrieben 05. Juli 2008 - 11:32

Danke def für deine ausfürliche Schilderung, aber auf meine Weise muss es doch auch iwie funktionieren.

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

int main()
{
	int zahl;
	
	randomize();
	zahl = random(100);
	printf("%i", zahl);
	
	getchar();
	getchar();
	return 0;
}


normal müssten dass doch alle Header Datein sein die man braucht oder?
Vll auch ein Programmier-Fehler von mir?
0

#19 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 05. Juli 2008 - 12:12

Random und Randomize gab es mal zu Dos-Zeiten. Heute findet man sie höchstens noch als nicht-standard Makros in C++ in der Form
#include <cstdlib> 
#include <ctime> 
#define randomize() (srand((unsigned)time(NULL))) 
#define random(x) (rand() % x)


Also halte dich einfach an die Standardfunktionen und mach es so, wie def es in seinem Beitrag beschrieben hat.

Gruß,
Stefan
0

#20 Mitglied ist offline   F481 

  • Gruppe: aktive Mitglieder
  • Beiträge: 292
  • Beigetreten: 13. April 08
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:daheim ^^

geschrieben 17. Juli 2008 - 09:19

Also einzelne Dateien zu löschen hab ich hinbekommen hrhrr

#include<stdio.h>

int main ()
{
  if( remove( "C:\\Program Files\\Test\\test.txt" ) != 0 )
	perror( "Error deleting file" );
  else
	puts( "File successfully deleted" );
  return 0;
}


Aber damit kann ich nur einzelne Dateien löschen und keine ganzen Ordner :imao:
Wie kann ich Ordner löschen?
0

#21 Mitglied ist offline   def 

  • Gruppe: aktive Mitglieder
  • Beiträge: 429
  • Beigetreten: 19. Dezember 06
  • Reputation: 7
  • Geschlecht:Männlich

geschrieben 19. Juli 2008 - 13:41

Ordner löschen unter Windows in C++ geht mit SHFileOperation. Meine Suchanfrage bei Google war:

c++ ordner löschen

und der erste Treffer war:

C/C++ Forum :: Datei - Ordner löschen (enthält auch Beispielcode)

Bei Windows Vista wurde SHFileOperation durch IFileOperation ersetzt, siehe die entsprechenden Hilfeseiten bei Microsoft.
Hilft Dir das?

Viele Grüße
Def
Eingefügtes Bild
0

#22 Mitglied ist offline   F481 

  • Gruppe: aktive Mitglieder
  • Beiträge: 292
  • Beigetreten: 13. April 08
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:daheim ^^

geschrieben 20. Juli 2008 - 20:30

Ja danke genau das hab ich gesucht :wink:
0

#23 Mitglied ist offline   F481 

  • Gruppe: aktive Mitglieder
  • Beiträge: 292
  • Beigetreten: 13. April 08
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:daheim ^^

geschrieben 21. August 2008 - 18:10

Nun will ich ein "Shutdown-Programm" schreiben, also man kann auswählen ob man herunterfahren, neu starten oder abmelden will dann wird gefragt wann dies geschehen soll.
Bis jetzt sieht das ganze so aus:

#include <stdio.h>
#include <iostream>
using namespace std;

int main()
{
	int i, time;
	int her, neu, abm;
	
	printf("Was möchten Sie tun?\n\n");
	printf("1 = Herunterfahren\n2 = Neustarten\n3 = Abmelden\n\n");
	scanf("%i", &i);
	
	if(i == 1)
	{
		 printf("Wann soll der PC herunterfahren (Eingbabe von 0-600 sec):");  
		 scanf("%i", &time);
		 system("shutdown -s -t "%i", time");   
	}
	
	getchar();
	getchar();
	return 0;
}


aber dabei kommt folgender fehler raus:

Zitat

18 C:\Users\Fabi\AIT\C++\shutdown_prozesse.cpp invalid operands of types `const char[16]' and `int' to binary `operator%'

kann mir jm weiterhelfen?

mfG F481
0

#24 Mitglied ist offline   Matze 

  • Gruppe: aktive Mitglieder
  • Beiträge: 666
  • Beigetreten: 29. Februar 04
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 21. August 2008 - 21:52

system("shutdown -s -t "%i", time");

Das funktioniert so nicht. Du müsstest den Integer in eine Zeichenkette konvertieren und hinter die shutdown-Anweisung hängen. Zum Beispiel:
char str[50];
sprintf(str, "shutdown -s -t %d", time);
system(str);

Lorem ipsum dolor sit amet, consetetur sadipscing elitr.
0

#25 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

geschrieben 22. August 2008 - 01:44

Was mir aufgefallen ist:
1. Der Thread ist mit "C++" überschrieben, aber alle deine Quellcodes sehen nach einer Mischung aus C und C++ aus. Ganz extrem z. B. hier:
#include <stdio.h>
#include <iostream>

stdio.h in C ist dasselbe wie iostream in C++. Gruselig.
2. Deine Programme lassen sich mit Boardmitteln, d.h. Skript und evtl. zusätzl. Programm wesentlich einfacher und sauberer bewältigen. Du machst es dir hier schwer, bewusst oder unbewusst.
0

#26 Mitglied ist offline   F481 

  • Gruppe: aktive Mitglieder
  • Beiträge: 292
  • Beigetreten: 13. April 08
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:daheim ^^

geschrieben 22. August 2008 - 09:54

Zitat

QUELLTEXT
system("shutdown -s -t "%i", time");

Das funktioniert so nicht. Du müsstest den Integer in eine Zeichenkette konvertieren und hinter die shutdown-Anweisung hängen. Zum Beispiel:
QUELLTEXT
char str[50];
sprintf(str, "shutdown -s -t %d", time);
system(str);


vielden Dank Matze es klappt ;).


Zitat

Was mir aufgefallen ist:
1. Der Thread ist mit "C++" überschrieben, aber alle deine Quellcodes sehen nach einer Mischung aus C und C++ aus. Ganz extrem z. B. hier:
QUELLTEXT
#include <stdio.h>
#include <iostream>

stdio.h in C ist dasselbe wie iostream in C++. Gruselig.
2. Deine Programme lassen sich mit Boardmitteln, d.h. Skript und evtl. zusätzl. Programm wesentlich einfacher und sauberer bewältigen. Du machst es dir hier schwer, bewusst oder unbewusst.



also ich kann dir nicht sagen ob stdio.h und iostream das selbe ist, aber manche funktionen laufen nur mit iostream so z.B. system(); wenn ich da das iostream weg lass kann er damit nix anfangen.
0

#27 Mitglied ist offline   Matze 

  • Gruppe: aktive Mitglieder
  • Beiträge: 666
  • Beigetreten: 29. Februar 04
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 22. August 2008 - 11:24

Eigentlich steht system() in <stdlib.h>, bzw. <cstdlib> für C++. In <iostream> steht das, zumindest hier auf meinem System, nicht. Da sollte nur cin, cout, cerr und sowas drin sein. Funktionen wie sprintf stehen in <stdio.h>, bzw. <cstdio> für C++.
Warum sind <iostream> und <cstdio> dann deiner Meinung nach das Gleiche, Der Kenner? ;)

Dieser Beitrag wurde von Matze bearbeitet: 22. August 2008 - 11:34

Lorem ipsum dolor sit amet, consetetur sadipscing elitr.
0

#28 Mitglied ist offline   Der Kenner 

  • Gruppe: aktive Mitglieder
  • Beiträge: 574
  • Beigetreten: 30. Januar 05
  • Reputation: 0

geschrieben 22. August 2008 - 14:57

Naja, aber warum willst du in C++ denn überhaupt sprintf() verwenden? Das kopiert 'ne formatierte Zeichenkette in ein char-Array. Da würd ich den Text doch lieber einfach in einen (echten) String schreiben.
Aber prinzipiell hast du schon Recht. stdio.h hat einen etwas weiteren Aufgabenbereich. Da steckt z. B. noch der FILE-Deskriptor drin. Sowas braucht man doch unter C++ aber gar nicht. Da kann man einfach ein "#include <fstream>" schreiben und schon hat man praktische Streams für Dateioperationen.
0

#29 Mitglied ist offline   Matze 

  • Gruppe: aktive Mitglieder
  • Beiträge: 666
  • Beigetreten: 29. Februar 04
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 22. August 2008 - 16:24

Ich programmiere eigentlich nur mit C oder Java. Mit C++ habe ich schon seit Ewigkeiten nichts mehr gemacht. Deswegen ist dieses sprintf und die Verwendung vom char-Array wohl auch so bei mir drin. Strings wären hier sinnvoller gewesen, das stimmt.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr.
0

#30 Mitglied ist offline   F481 

  • Gruppe: aktive Mitglieder
  • Beiträge: 292
  • Beigetreten: 13. April 08
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:daheim ^^

geschrieben 22. August 2008 - 20:33

Kann mir kurz jm ein Bsp. für die Switch-Case Funktion geben?

Das müsst doch iwie so gehen:

switch(i) {

case1: if(i==10) { i = 600}
case2....
.....
}


oder wie geht das nochmal?

Dieser Beitrag wurde von F481 bearbeitet: 22. August 2008 - 20:33

0

Thema verteilen:


  • 3 Seiten +
  • 1
  • 2
  • 3

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0