| Autor |
Nachricht |
Mosh3d
Mitglied
Benutzerprofil
Anmeldungsdatum: 23.12.2011
Beiträge: 9
|
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
|
C++ Forumbot Forumbot
20:54:43 23.12.2011 Titel: |
|
Zitieren |
|
 |
Jonas OSDever
Mitglied
Benutzerprofil
Anmeldungsdatum: 26.08.2010
Beiträge: 394
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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? |
_________________ 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
|
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
|
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
|
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
|
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
|
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 |
|
|
|
 |