Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: DOS und Win32-Konsole ::  C windowskonsolen programm     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Mosh3d
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.12.2011
Beiträge: 9
Beitrag Mosh3d Mitglied 19:33:04 23.12.2011   Titel:   C windowskonsolen programm            Zitieren

Hallo!
Ich bin ein Neuling in C. Bis jetzt habe ich nur ein paar Funktionen und kleinere Programme zur verschieden berechnungen gemacht. Nun habe ich ein größßeres Problem, leider aber keine Antworten in den FAQ's hier gefunden, da auch schon einige links dort tot sind.

Es geht darum, in C mit der Konsole ein Wettrennen von 2 Buchstaben zu simulieren. Für die Schleifen und Zufallsfunktionen habe ich schon genug hintergrundwissen, aber leider fehlt mir völlig der Ansatz, wie ich dynamisch die 2 Buchstaben bewegen soll, geht das überhaupt mit Printf? Sie sollen von links nach rechts wandern.

Könnt emir bitte jemand eine Erklärung geben?

Vielen dank!
C++ Forumbot
Forumbot

Benutzerprofil
Anmeldungsdatum: 29.02.2004
Beiträge: 16160
Beitrag C++ Forumbot Forumbot 20:54:43 23.12.2011   Titel:              Zitieren

Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum DOS und Win32-Konsole verschoben.

Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?


Dieses Posting wurde automatisch erzeugt.

_________________
Besuchen Sie unsere Bücherecke.
http://www.c-plusplus.de/bucher.php
Mit jeder Bestellung unterstützen Sie das Forum.
Jonas OSDever
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.08.2010
Beiträge: 394
Beitrag Jonas OSDever Mitglied 23:32:55 23.12.2011   Titel:              Zitieren

Du könntest es so machen: Zeichne Buchstaben an ihrer aktuellen Pos. mit printf(), warte mit Sleep() einige Millisekunden, lösche den Bildschirm und fang wieder von vorne an.

_________________
Befehl: SOFORT bei Mafia anmelden. Wer das liest und es nicht macht, wird wegen Befehlsverweigerung angezeigt!!!
Mosh3d
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.12.2011
Beiträge: 9
Beitrag Mosh3d Mitglied 22:54:34 24.12.2011   Titel:              Zitieren

Ultimativ!
Vielen dank, hab ich heute nacht gleich umgesetzt, als ich wusste wonach ich suchen musste, gings sehr schnell.
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
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
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "windows.h"
#include "conio.h"

void platz2()
    {
    int p=196;
    int r=0;
    int s=0;
    char *feld1 = (char *) malloc(sizeof (char) * 70);
    char *feld2 = (char *) malloc(sizeof (char) * 70);

           

    for (s =0;s<70;s++)
    {
        if (s==0 || s==69)
        { feld1[s]=':';
            feld2[s]=':';
            feld2[s]=':';
            feld1[s]=':';
        }
        else {
            feld1[s]=' ';
            feld2[s]=' ';
        }
    }

    for (r=0;r<70;r++)
    {
        printf("%c",p);
    }
    printf("\n");
    for (s=0;s<70;s++)
    {
        printf("%c",feld1[s]);
    }
    printf("\n");
    for (s=0;s<70;s++)
    {
        printf("%c",feld2[s]);
    }
    printf("\n");
    for (r=0;r<70;r++)
    {
        printf("%c",p);
    }
    printf("\n");
    }

int main(int argc, char *argv[])
{
   
   
  int iz;//igelzufallszahl
  int hz;//hasezufalls zahl
  int i;
  srand(time(0)); //für zufallsfunktion
   int u=0;
   int t=0;
    int p=196;
    int r=0;
    int s=0;
    char *feld1 = (char *) malloc(sizeof (char) * 70);
    char *feld2 = (char *) malloc(sizeof (char) * 70);
   
   
    puts("HIER kommen die zeichen");
   
    platz2();

printf("und los gehts");

Sleep(10000);

while ( (u<69) && (t<69))
 
  {
     
      //hase!!

      hz=1+(rand() % (11-1));
     
           
      if (hz<=2)
          t=t+0;
      if (hz>=3 && hz<=4)
          t=t+9;
      if (hz==5)
          t=t-12;
      if (hz>=6 && hz<=8)
          t=t+1;
      if (hz>=8 && hz<=10)
          t=t-1;

     
     //IGEL!!!

    iz=1+(rand() % (11-1));
      if (iz<=5)
              u=u+3;
        //3 schritte
   
  if (iz>=6 && iz<=7)
        u=u-6;
      //6schritte zur
 
  else if (iz>7)
      u=u+1;
     //1 schritt vor
   
    if (u<0)
        u=0;
    if (u>69)
        u=69;
    if (t<0)
        t=0;
    if (t>69)
        t=69;

     feld1[u]='I';
     feld2[t]='H';

    system("cls");


    //IGEL!!

        for (s=0;s<u;s++)
    {
            if (s==0)
        feld1[s]=':';
           
        else
            feld1[s]=' ';
       
    }
    for (s=u+1;s<70;s++)
    {   
            if ( s==69)
         feld1[s]=':';
       
        else
            feld1[s]=' ';
    }

    //HASE!!!


    for (s=0;s<t;s++)
    {
            if (s==0)
        feld2[s]=':';
           
        else
            feld2[s]=' ';
       
    }
    for (s=t+1;s<70;s++)
    {   
            if ( s==69)
         feld2[s]=':';
       
        else
            feld2[s]=' ';
    }



    for (r=0;r<70;r++)
    {
        printf("%c",p);
    }
    printf("\n");
    for (s=0;s<70;s++)
    {
        printf("%c",feld1[s]);
    }
    printf("\n");
    for (s=0;s<70;s++)
    {
        printf("%c",feld2[s]);
    }
    printf("\n");
    for (r=0;r<70;r++)
    {
        printf("%c",p);
    }
    printf("\n");
   
    if ( t==u && u>0 && u<69)
        printf(" AUA der Igel is firing ma lazOOOr");

    printf("t:%d und u;%d",t,u);
    Sleep(1000);
  }
                 
           

  system("PAUSE");     
  return 0;
}
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
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "windows.h"
#include "conio.h"

void platz2()
{
int p=196;
int r=0;
int s=0;
char *feld1 = (char *) malloc(sizeof (char) * 70);
char *feld2 = (char *) malloc(sizeof (char) * 70);



for (s =0;s<70;s++)
{
if (s==0 || s==69)
{ feld1[s]=':';
feld2[s]=':';
feld2[s]=':';
feld1[s]=':';
}
else {
feld1[s]=' ';
feld2[s]=' ';
}
}

for (r=0;r<70;r++)
{
printf("%c",p);
}
printf("\n");
for (s=0;s<70;s++)
{
printf("%c",feld1[s]);
}
printf("\n");
for (s=0;s<70;s++)
{
printf("%c",feld2[s]);
}
printf("\n");
for (r=0;r<70;r++)
{
printf("%c",p);
}
printf("\n");
}

int main(int argc, char *argv[])
{


int iz;//igelzufallszahl
int hz;//hasezufalls zahl
int i;
srand(time(0)); //für zufallsfunktion
int u=0;
int t=0;
int p=196;
int r=0;
int s=0;
char *feld1 = (char *) malloc(sizeof (char) * 70);
char *feld2 = (char *) malloc(sizeof (char) * 70);


puts("HIER kommen die zeichen");

platz2();

printf("und los gehts");

Sleep(10000);

while ( (u<69) && (t<69))

{

//hase!!

hz=1+(rand() % (11-1));


if (hz<=2)
t=t+0;
if (hz>=3 && hz<=4)
t=t+9;
if (hz==5)
t=t-12;
if (hz>=6 && hz<=8)
t=t+1;
if (hz>=8 && hz<=10)
t=t-1;


//IGEL!!!

iz=1+(rand() % (11-1));
if (iz<=5)
u=u+3;
//3 schritte

if (iz>=6 && iz<=7)
u=u-6;
//6schritte zur

else if (iz>7)
u=u+1;
//1 schritt vor

if (u<0)
u=0;
if (u>69)
u=69;
if (t<0)
t=0;
if (t>69)
t=69;

feld1[u]='I';
feld2[t]='H';

system("cls");


//IGEL!!

for (s=0;s<u;s++)
{
if (s==0)
feld1[s]=':';

else
feld1[s]=' ';

}
for (s=u+1;s<70;s++)
{
if ( s==69)
feld1[s]=':';

else
feld1[s]=' ';
}

//HASE!!!


for (s=0;s<t;s++)
{
if (s==0)
feld2[s]=':';

else
feld2[s]=' ';

}
for (s=t+1;s<70;s++)
{
if ( s==69)
feld2[s]=':';

else
feld2[s]=' ';
}



for (r=0;r<70;r++)
{
printf("%c",p);
}
printf("\n");
for (s=0;s<70;s++)
{
printf("%c",feld1[s]);
}
printf("\n");
for (s=0;s<70;s++)
{
printf("%c",feld2[s]);
}
printf("\n");
for (r=0;r<70;r++)
{
printf("%c",p);
}
printf("\n");

if ( t==u && u>0 && u<69)
printf(" AUA der Igel is firing ma lazOOOr");

printf("t:%d und u;%d",t,u);
Sleep(1000);
}



system("PAUSE");
return 0;
}
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
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "windows.h"
#include "conio.h"

void platz2()
    {
    int p=196;
    int r=0;
    int s=0;
    char *feld1 = (char *) malloc(sizeof (char) * 70);
    char *feld2 = (char *) malloc(sizeof (char) * 70);

           

    for (s =0;s<70;s++)
    {
        if (s==0 || s==69)
        { feld1[s]=':';
            feld2[s]=':';
            feld2[s]=':';
            feld1[s]=':';
        }
        else {
            feld1[s]=' ';
            feld2[s]=' ';
        }
    }

    for (r=0;r<70;r++)
    {
        printf("%c",p);
    }
    printf("\n");
    for (s=0;s<70;s++)
    {
        printf("%c",feld1[s]);
    }
    printf("\n");
    for (s=0;s<70;s++)
    {
        printf("%c",feld2[s]);
    }
    printf("\n");
    for (r=0;r<70;r++)
    {
        printf("%c",p);
    }
    printf("\n");
    }

int main(int argc, char *argv[])
{
   
   
  int iz;//igelzufallszahl
  int hz;//hasezufalls zahl
  int i;
  srand(time(0)); //für zufallsfunktion
   int u=0;
   int t=0;
    int p=196;
    int r=0;
    int s=0;
    char *feld1 = (char *) malloc(sizeof (char) * 70);
    char *feld2 = (char *) malloc(sizeof (char) * 70);
   
   
    puts("HIER kommen die zeichen");
   
    platz2();

printf("und los gehts");

Sleep(10000);

while ( (u<69) && (t<69))
 
  {
     
      //hase!!

      hz=1+(rand() % (11-1));
     
           
      if (hz<=2)
          t=t+0;
      if (hz>=3 && hz<=4)
          t=t+9;
      if (hz==5)
          t=t-12;
      if (hz>=6 && hz<=8)
          t=t+1;
      if (hz>=8 && hz<=10)
          t=t-1;

     
     //IGEL!!!

    iz=1+(rand() % (11-1));
      if (iz<=5)
              u=u+3;
        //3 schritte
   
  if (iz>=6 && iz<=7)
        u=u-6;
      //6schritte zur
 
  else if (iz>7)
      u=u+1;
     //1 schritt vor
   
    if (u<0)
        u=0;
    if (u>69)
        u=69;
    if (t<0)
        t=0;
    if (t>69)
        t=69;

     feld1[u]='I';
     feld2[t]='H';

    system("cls");


    //IGEL!!

        for (s=0;s<u;s++)
    {
            if (s==0)
        feld1[s]=':';
           
        else
            feld1[s]=' ';
       
    }
    for (s=u+1;s<70;s++)
    {   
            if ( s==69)
         feld1[s]=':';
       
        else
            feld1[s]=' ';
    }

    //HASE!!!


    for (s=0;s<t;s++)
    {
            if (s==0)
        feld2[s]=':';
           
        else
            feld2[s]=' ';
       
    }
    for (s=t+1;s<70;s++)
    {   
            if ( s==69)
         feld2[s]=':';
       
        else
            feld2[s]=' ';
    }



    for (r=0;r<70;r++)
    {
        printf("%c",p);
    }
    printf("\n");
    for (s=0;s<70;s++)
    {
        printf("%c",feld1[s]);
    }
    printf("\n");
    for (s=0;s<70;s++)
    {
        printf("%c",feld2[s]);
    }
    printf("\n");
    for (r=0;r<70;r++)
    {
        printf("%c",p);
    }
    printf("\n");
   
    if ( t==u && u>0 && u<69)
        printf(" AUA der Igel is firing ma lazOOOr");

    printf("t:%d und u;%d",t,u);
    Sleep(1000);
  }
                 
           

  system("PAUSE");     
  return 0;
}


hab das soweit umgesetzt, viellleicht gibt es noch ein paar tipps, das gnaze schlanker und einfacher zu machen? ;)

frohe weihnachten !
jlkjkl
Unregistrierter




Beitrag jlkjkl Unregistrierter 02:31:29 25.12.2011   Titel:              Zitieren

Man kann deinen Quellcode garantiert schlanker machen. Allerdings ist dieser sehr unübersichtlich und was da genau berechnet wird, das wird einem auch nicht sofort klar. Außerdem ist dein Quellcode kein echtes C. Aus dem Stehgreif hätte ich es irgendwie so gelöst:

C/C++ 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
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
#include <stdio.h>
#include
<Windows.h>

int main()
{
    int igel = 0;
    int hase = 0;
    int i;

    srand((unsigned int) time(NULL));

    while (hase <= 70 && igel <= 70)
    {
        printf("----------------------------------------------------------------------\n");

        for (i = 0; i < igel; ++i)
            putchar(' ');
   
        printf("I\n");

        for (i = 0; i < hase; ++i)
            putchar(' ');
   
        printf("H\n");

        printf("----------------------------------------------------------------------\n\n");
               
        if (igel > hase)
        {
            printf("Igel fuehrt!\n");
        }
        else if (igel < hase)
        {
            printf("Hase fuehrt!\n");
        }
        else
        {
            printf("Beide sind gleichauf!\n");
        }

        igel += rand() % 9;
        hase += rand() % 11;

        Sleep(1000);

        system("cls");
    }

    if (igel > hase)
    {
        printf("Der Igel hat gewonnen!\n");
    }
    else if (igel < hase)
    {
        printf("Der Hase hat gewonnen!\n");
    }
    else
    {
        printf("Unentschieden!\n");
    }

    return 0;
}
C/C++ 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
#include <stdio.h>
#include
<Windows.h>

int main()
{
int igel = 0;
int hase = 0;
int i;

srand((unsigned int) time(NULL));

while (hase <= 70 && igel <= 70)
{
printf("----------------------------------------------------------------------\n");

for (i = 0; i < igel; ++i)
putchar(' ');

printf("I\n");

for (i = 0; i < hase; ++i)
putchar(' ');

printf("H\n");

printf("----------------------------------------------------------------------\n\n");

if (igel > hase)
{
printf("Igel fuehrt!\n");
}
else if (igel < hase)
{
printf("Hase fuehrt!\n");
}
else
{
printf("Beide sind gleichauf!\n");
}

igel += rand() % 9;
hase += rand() % 11;

Sleep(1000);

system("cls");
}

if (igel > hase)
{
printf("Der Igel hat gewonnen!\n");
}
else if (igel < hase)
{
printf("Der Hase hat gewonnen!\n");
}
else
{
printf("Unentschieden!\n");
}

return 0;
}
C/C++ 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
#include <stdio.h>
#include
<Windows.h>

int main()
{
    int igel = 0;
    int hase = 0;
    int i;

    srand((unsigned int) time(NULL));

    while (hase <= 70 && igel <= 70)
    {
        printf("----------------------------------------------------------------------\n");

        for (i = 0; i < igel; ++i)
            putchar(' ');
   
        printf("I\n");

        for (i = 0; i < hase; ++i)
            putchar(' ');
   
        printf("H\n");

        printf("----------------------------------------------------------------------\n\n");
               
        if (igel > hase)
        {
            printf("Igel fuehrt!\n");
        }
        else if (igel < hase)
        {
            printf("Hase fuehrt!\n");
        }
        else
        {
            printf("Beide sind gleichauf!\n");
        }

        igel += rand() % 9;
        hase += rand() % 11;

        Sleep(1000);

        system("cls");
    }

    if (igel > hase)
    {
        printf("Der Igel hat gewonnen!\n");
    }
    else if (igel < hase)
    {
        printf("Der Hase hat gewonnen!\n");
    }
    else
    {
        printf("Unentschieden!\n");
    }

    return 0;
}


Dein Quellcode enthält übrigens Speicherleaks, da du den angeforderten Speicher (malloc) nicht wieder freigibst (free). Aber das Array ist auch nicht zwangsläufig notwendig und wenn, dann hättest du es auch ganz einfach mit char feld1[70]; anlegen können und hättest so erst gar kein Speicher reservieren brauchen.

Insgesamt ist deine Einrückung auch nicht sehr konsequent. Mal ist es so eingerückt und mal so. Das ist für die Lesbarkeit nicht sonderlich förderlich.

Anstatt printf("%c", p); könntest du übrigens auch putchar(p); schreiben.

Beim Inkludieren solltest du für Header, die außerhalb deines Projektes liegen die spitzen Klammern verwenden. Damit sucht der Prozessor in den vorgegebenen Include-Verzeichnissen und erst danach im Projektverzeichnis. Bei den " ist es genau andersrum. Hier wird erst im Projektverzeichnis gesucht.
jlkjkl
Unregistrierter




Beitrag jlkjkl Unregistrierter 02:35:16 25.12.2011   Titel:              Zitieren

Noch ein Tipp:

Anstatt t = t + 1; kann man auch t += 1; bzw. t++; oder ++t; schreiben (Ob man ++t; oder t++; schreibt macht als alleinstehende(!) Anweisung aber keinen wirklichen Unterschied).
Jonas OSDever
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.08.2010
Beiträge: 394
Beitrag Jonas OSDever Mitglied 09:27:36 25.12.2011   Titel:              Zitieren

Zum Stil usw. hat jlkjkl eigentlich schon alles gesagt.
Aber eine Verbesserung hätte ich auch noch: system("cls"); ist böse. Nimm lieber FillConsoleOutputCharachter

_________________
Befehl: SOFORT bei Mafia anmelden. Wer das liest und es nicht macht, wird wegen Befehlsverweigerung angezeigt!!!
Belli
Mitglied

Benutzerprofil
Anmeldungsdatum: 29.08.2009
Beiträge: 1110
Beitrag Belli Mitglied 20:09:37 25.12.2011   Titel:              Zitieren

Na, dann aber auch bitte gleich:
SetConsoleCursorPosition und
WriteConsoleOutputCharacter

zum Cursorpositionieren und Zeichen ausgeben - dann kann man sich übrigens auch das Bildschirmlöschen ganz sparen ...
Mosh3d
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.12.2011
Beiträge: 9
Beitrag Mosh3d Mitglied 14:30:42 26.12.2011   Titel:              Zitieren

danke für die vielen Antworten. Hatte nicht damit gerechnet soviel feedback zu bekommen. @ jlkjkl, das mit den <> klammern ging bei mir nicht, wir müssen Visual studio benutzen... die anderen tipps werde ich versuchen umzustezen! die aspeicherfreigabe müsste am ende gesetzt werden dann?

die befehle mit der cursor posítion und buchstaben an positionen schreiben hatten wir noch nicht..
Das ganze ist ein kleines uni projekt in grundlagen und naja, es gibt da bestimmte vorgaben wann welcher teilnehmer wie viele schritte machen soll..
Auf jedenfall vielen dank für die ideen!

Ist das nicht mehr aufwand, die cursor zu positionieren, statt alles zu löschen? es wäre sicher speicher sparender... ;)
Jonas OSDever
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.08.2010
Beiträge: 394
Beitrag Jonas OSDever Mitglied 16:24:26 26.12.2011   Titel:              Zitieren

Mosh3d schrieb:
@ jlkjkl, das mit den <> klammern ging bei mir nicht, wir müssen Visual studio benutzen...
Ich benutz auch VS. Und das mit den spitzen Klammern funktioniert dort auch! Hast du etwa an den Einstellungen rumgespielt? Wenn ja müsstest du schon ganz schön was verstellt haben, damit das nicht mehr funktoiniert. Kompilier mal mit <> und dann Poste bitte den Fehlercode.

Mosh3d schrieb:
die befehle mit der cursor posítion und buchstaben an positionen schreiben hatten wir noch nicht...
Trotzdem: Vorausarbeiten kann nichz schaden. :)
Was mir grad auffällt: Habt ihr system("cls"); etwa an der Uni gelernt? Wenn ja, dann darfst du von diesem Prof. nicht allzuviel erwarten. Und falls er mal ein Buch von einem gewissen Autor anpreisen sollte (den ich nicht nennen möchte, damit du gar nicht erst in Versuchung kommst dir eins seiner Bücher anzusehen die mehr schaden als nützen), dann hör lieber nicht auf ihn.

Mosh3d schrieb:
1) Ist das nicht mehr aufwand, die cursor zu positionieren, statt alles zu löschen? 2) es wäre sicher speicher sparender... ;)
Zu 1: Richtig gemacht ist es weniger Aufwand.
Zu 2: Äh nö, warum sollte das Speicher sparen? :confused:

_________________
Befehl: SOFORT bei Mafia anmelden. Wer das liest und es nicht macht, wird wegen Befehlsverweigerung angezeigt!!!
Mosh3d
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.12.2011
Beiträge: 9
Beitrag Mosh3d Mitglied 17:12:35 27.12.2011   Titel:              Zitieren

also in <> klammern kommt der fehler, dass die bibliothek nicht gefunden werden kann. Ich hab geschrieben #include <stdio.h> z.b... ist das falsch?

ich werd das nochmal überarbeiten, so ähnlich wie jlkjkl, mit der cursor positionierung un d löschung :>

danke für die hilfe!
Jonas OSDever
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.08.2010
Beiträge: 394
Beitrag Jonas OSDever Mitglied 17:49:33 27.12.2011   Titel:              Zitieren

C/C++ Code:
#include <stdio.h>
C/C++ Code:
#include <stdio.h>
C/C++ Code:
#include <stdio.h>
ist eigentlich richtig. Probier mal testweise cstdio (kein .h!) statt stdio.h. Ist dann zwar C++, aber is ja nur zum Test.
Wobei Bibliothek nicht gefunden eher nach nem Linker-Problem klingt. Kopier mal die gesamte Erstell-Ausgabe in Code-Tags hierher, denn Link-Probleme dürften eigentlich nicht durch fehlerhafte Header-Einbindung passieren. Hast du die Einstellungen für ein Win32-Konsolen-Projekt gesetzt?

_________________
Befehl: SOFORT bei Mafia anmelden. Wer das liest und es nicht macht, wird wegen Befehlsverweigerung angezeigt!!!
Mosh3d
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.12.2011
Beiträge: 9
Beitrag Mosh3d Mitglied 22:24:48 06.01.2012   Titel:              Zitieren

es funktioniert jetzt eigentlich ganz gut ... aber!

wir sollen nun das programm mit parametern starten.

ich habe dazu
Code:
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
        sscanf(argv[1],"%d",&vi);
    sscanf(argv[2],"%d",&vh);
   
    if((vi>0&&vi<20) || (vh>0&&vh<20)) //falls parameter verwendet werden
    {
        hase = vh; //erhöhung von hase
        igel = vi; //erhöhung von igel
    }
Code:
1
2
3
4
5
6
7
8
sscanf(argv[1],"%d",&vi);
sscanf(argv[2],"%d",&vh);

if((vi>0&&vi<20) || (vh>0&&vh<20)) //falls parameter verwendet werden
{
hase = vh; //erhöhung von hase
igel = vi; //erhöhung von igel
}
Code:
1
2
3
4
5
6
7
8
        sscanf(argv[1],"%d",&vi);
    sscanf(argv[2],"%d",&vh);
   
    if((vi>0&&vi<20) || (vh>0&&vh<20)) //falls parameter verwendet werden
    {
        hase = vh; //erhöhung von hase
        igel = vi; //erhöhung von igel
    }

gemacht,es geht auch wenn man es MIT parameter startet einwandfrei, aber wenn man ohne parameter eingabe es startet, stürzt das programm ab... jemand eine idee? bitte?
Jonas OSDever
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.08.2010
Beiträge: 394
Beitrag Jonas OSDever Mitglied 22:45:06 06.01.2012   Titel:              Zitieren

argc hat auch seine Bedeutung. Wenn keine Parameter übergeben wurden, dann kannst du folglich auch nicht auf argv[1] zugreifen (bzw. gehört dir der Speicher nicht und du rufst undefiniertes Verhalten hervor).
Die Lösung ist ganz banal:
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
//...
if(argc == AnzahlDerArgumente)
{
    //...
    //mach was mit argv

}
else
{
    cout << "Fehler beim Aufruf. Falsche Parameterzahl\n";
}
//...
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
//...
if(argc == AnzahlDerArgumente)
{
//...
//mach was mit argv

}
else
{
cout << "Fehler beim Aufruf. Falsche Parameterzahl\n";
}
//...
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
//...
if(argc == AnzahlDerArgumente)
{
    //...
    //mach was mit argv

}
else
{
    cout << "Fehler beim Aufruf. Falsche Parameterzahl\n";
}
//...


EDIT: Was war eigentlich das Problem bei den Headern, bzw. wie hast dus gelöst?

_________________
Befehl: SOFORT bei Mafia anmelden. Wer das liest und es nicht macht, wird wegen Befehlsverweigerung angezeigt!!!


Zuletzt bearbeitet von Jonas OSDever am 22:46:40 06.01.2012, insgesamt 1-mal bearbeitet
Mosh3d
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.12.2011
Beiträge: 9
Beitrag Mosh3d Mitglied 12:12:12 07.01.2012   Titel:              Zitieren

ach argc hab ich total vergessen, danke!

mit den headern, war die lösung einfach, ich habs gelassn :)
C/C++ Forum :: DOS und Win32-Konsole ::  C windowskonsolen programm   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.