06. juni 2003 - 17:47
Der er
9 kommentarer og 1 løsning
Afslutter programmet
Hey Jeg har et program, der oversætter bogstaver til tegn. Jeg har en start menu, hvor man kan vælge om man vil lave bogstaver om til tegn, og om man vil lave tegn om til bogstaver. ( a) og b) ). Men hvis man så taster a, så man vælger "oversætte bogstaver til tegn", kommer der bare den der tekst "Tryk på en vilkårlig tast for at fortsætte", og der vil jeg jo gerne have at man kan taste en sætning.Det er Console mode, og compileren er Dev-CPP. Det virker fint, hvis jeg bruger cin som input, men den kan kun indeholde et ord, og altså ikke hele sætninger :-/ Koden ser sådan ud: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream> using namespace std; void replace(char *s,char *s1,char *s2) { int i,j; char *tmp; tmp = (char*)malloc(strlen(s)+1); strcpy(tmp,s); i = 0; j = 0; while(i<strlen(tmp)) { if(strncmp(tmp+i,s1,strlen(s1))==0) { strcpy(s+j,s2); i=i+strlen(s1); j=j+strlen(s2); } else { s[j]=tmp[i]; i++; j++; } } s[j] = '\0'; free(tmp); return; } void a() { char line[100]; printf("Enter: "); gets(line); replace(line, "a", "!"); replace(line, "b", "#"); replace(line, "c", "¤"); replace(line, "d", "%"); replace(line, "e", "&"); replace(line, "f", "/"); replace(line, "g", "("); replace(line, "h", ")"); replace(line, "i", "="); replace(line, "j", "+"); replace(line, "k", "?"); replace(line, "l", "´"); replace(line, "m", "`"); replace(line, "n", "|"); replace(line, "o", "@"); replace(line, "p", "£"); replace(line, "q", "$"); replace(line, "r", "{"); replace(line, "s", "["); replace(line, "t", "]"); replace(line, "u", "}"); replace(line, "v", "¨"); replace(line, "w", "^"); replace(line, "x", "~"); replace(line, "y", "'"); replace(line, "z", "*"); replace(line, " ", "<"); printf("%s\n",line); system("PAUSE"); } void b() { char line2[100]; printf("Enter: "); gets(line2); replace(line2, "!", "a"); replace(line2, "#", "b"); replace(line2, "¤", "c"); replace(line2, "%", "d"); replace(line2, "&", "e"); replace(line2, "/", "f"); replace(line2, "(", "g"); replace(line2, ")", "h"); replace(line2, "=", "i"); replace(line2, "+", "j"); replace(line2, "?", "k"); replace(line2, "´", "l"); replace(line2, "`", "m"); replace(line2, "|", "n"); replace(line2, "@", "o"); replace(line2, "£", "p"); replace(line2, "$", "q"); replace(line2, "{", "r"); replace(line2, "[", "s"); replace(line2, "]", "t"); replace(line2, "}", "u"); replace(line2, "¨", "v"); replace(line2, "^", "w"); replace(line2, "~", "x"); replace(line2, "'", "y"); replace(line2, "*", "z"); printf("%s\n",line2); } int main() { char valg; cout << "Hvad vil du foretage dig:"; cout << "\n\n"; cout << " a) Overs\x91tte til kodesprog\n"; cout << " b) Overs\x91tte kodesprog til bogstaver\n"; cout << " c) Hj\x91lp\n"; cin >> valg; if (valg == 'a') { a(); }else if (valg == 'b') { b(); } system("PAUSE"); return 0; } På forhånd tak :o) MVH Anders
Annonceindlæg fra Capgemini
Det kan ofte være problematisk at mixe forskellige former for input funktioner så enten cin eller gets.
Følgende virker: #include <stdio.h> #include <stdlib.h> #include <string.h> void replace(char *s,char *s1,char *s2) { int i,j; char *tmp; tmp = (char*)malloc(strlen(s)+1); strcpy(tmp,s); i = 0; j = 0; while(i<strlen(tmp)) { if(strncmp(tmp+i,s1,strlen(s1))==0) { strcpy(s+j,s2); i=i+strlen(s1); j=j+strlen(s2); } else { s[j]=tmp[i]; i++; j++; } } s[j] = '\0'; free(tmp); return; } void a() { char line[100]; printf("Enter: "); gets(line); replace(line, "a", "!"); replace(line, "b", "#"); replace(line, "c", "¤"); replace(line, "d", "%"); replace(line, "e", "&"); replace(line, "f", "/"); replace(line, "g", "("); replace(line, "h", ")"); replace(line, "i", "="); replace(line, "j", "+"); replace(line, "k", "?"); replace(line, "l", "´"); replace(line, "m", "`"); replace(line, "n", "|"); replace(line, "o", "@"); replace(line, "p", "£"); replace(line, "q", "$"); replace(line, "r", "{"); replace(line, "s", "["); replace(line, "t", "]"); replace(line, "u", "}"); replace(line, "v", "¨"); replace(line, "w", "^"); replace(line, "x", "~"); replace(line, "y", "'"); replace(line, "z", "*"); replace(line, " ", "<"); printf("%s\n",line); system("PAUSE"); } void b() { char line2[100]; printf("Enter: "); gets(line2); replace(line2, "!", "a"); replace(line2, "#", "b"); replace(line2, "¤", "c"); replace(line2, "%", "d"); replace(line2, "&", "e"); replace(line2, "/", "f"); replace(line2, "(", "g"); replace(line2, ")", "h"); replace(line2, "=", "i"); replace(line2, "+", "j"); replace(line2, "?", "k"); replace(line2, "´", "l"); replace(line2, "`", "m"); replace(line2, "|", "n"); replace(line2, "@", "o"); replace(line2, "£", "p"); replace(line2, "$", "q"); replace(line2, "{", "r"); replace(line2, "[", "s"); replace(line2, "]", "t"); replace(line2, "}", "u"); replace(line2, "¨", "v"); replace(line2, "^", "w"); replace(line2, "~", "x"); replace(line2, "'", "y"); replace(line2, "*", "z"); printf("%s\n",line2); } int main() { char valg[2]; printf("Hvad vil du foretage dig:"); printf("\n\n"); printf(" a) Overs\x91tte til kodesprog\n"); printf(" b) Overs\x91tte kodesprog til bogstaver\n"); printf(" c) Hj\x91lp\n"); gets(valg); if (valg[0] == 'a') { a(); }else if (valg[0] == 'b') { b(); } system("PAUSE"); return 0; }
Eller: #include <stdlib.h> #include <string.h> #include <iostream> using namespace std; void replace(char *s,char *s1,char *s2) { int i,j; char *tmp; tmp = (char*)malloc(strlen(s)+1); strcpy(tmp,s); i = 0; j = 0; while(i<strlen(tmp)) { if(strncmp(tmp+i,s1,strlen(s1))==0) { strcpy(s+j,s2); i=i+strlen(s1); j=j+strlen(s2); } else { s[j]=tmp[i]; i++; j++; } } s[j] = '\0'; free(tmp); return; } void a() { char line[100]; cout << "Enter: "; cin.getline(line,sizeof(line)); replace(line, "a", "!"); replace(line, "b", "#"); replace(line, "c", "¤"); replace(line, "d", "%"); replace(line, "e", "&"); replace(line, "f", "/"); replace(line, "g", "("); replace(line, "h", ")"); replace(line, "i", "="); replace(line, "j", "+"); replace(line, "k", "?"); replace(line, "l", "´"); replace(line, "m", "`"); replace(line, "n", "|"); replace(line, "o", "@"); replace(line, "p", "£"); replace(line, "q", "$"); replace(line, "r", "{"); replace(line, "s", "["); replace(line, "t", "]"); replace(line, "u", "}"); replace(line, "v", "¨"); replace(line, "w", "^"); replace(line, "x", "~"); replace(line, "y", "'"); replace(line, "z", "*"); replace(line, " ", "<"); printf("%s\n",line); system("PAUSE"); } void b() { char line2[100]; cout << "Enter: "; cin.getline(line2,sizeof(line2)); replace(line2, "!", "a"); replace(line2, "#", "b"); replace(line2, "¤", "c"); replace(line2, "%", "d"); replace(line2, "&", "e"); replace(line2, "/", "f"); replace(line2, "(", "g"); replace(line2, ")", "h"); replace(line2, "=", "i"); replace(line2, "+", "j"); replace(line2, "?", "k"); replace(line2, "´", "l"); replace(line2, "`", "m"); replace(line2, "|", "n"); replace(line2, "@", "o"); replace(line2, "£", "p"); replace(line2, "$", "q"); replace(line2, "{", "r"); replace(line2, "[", "s"); replace(line2, "]", "t"); replace(line2, "}", "u"); replace(line2, "¨", "v"); replace(line2, "^", "w"); replace(line2, "~", "x"); replace(line2, "'", "y"); replace(line2, "*", "z"); printf("%s\n",line2); } int main() { char valg[2]; cout << "Hvad vil du foretage dig:"; cout << "\n\n"; cout << " a) Overs\x91tte til kodesprog\n"; cout << " b) Overs\x91tte kodesprog til bogstaver\n"; cout << " c) Hj\x91lp\n"; cin.getline(valg,sizeof(valg)); if (valg[0] == 'a') { a(); }else if (valg[0] == 'b') { b(); } system("PAUSE"); return 0; }
Jeg takker mange gange!! Kan du ik ligge et svar??
Har du ik tilfældigvis en copy and paste funktion, som virker i console mode? Altså sådan man kan trykke Ctrl + V, og så indsætter den.. Det virker nemlig ik. Man kan godt kopiere via ctrl + c, men ikke indsætte via ctrl + v.
Den tror jeg er svær i et console program. Og jeg har ikke noget. Men jeg kan godt prøve at kigge efter noget.
Jeg takker.. Du skal nok få flere points hvis du finder det :o)
Her er en lille kode-stup der indsætter fra klipboardet: #include <stdlib.h> #include <stdio.h> #include <windows.h> int main(void) { char *s; HANDLE handle; if(!OpenClipboard(NULL)) { printf("Failed to open clipboard!\n"); return EXIT_FAILURE; } if((handle = GetClipboardData(CF_TEXT)) == 0) { printf("Failed to get clipboard data!\n"); CloseClipboard(); return EXIT_FAILURE; } if((s = (char *)GlobalLock(handle)) == NULL) { printf("Failed to lock clipboard data!\n"); CloseClipboard(); return EXIT_FAILURE; } printf("Clipboard data: %s\n", s); CloseClipboard(); return 0; }
06. juni 2003 - 21:22
#10
Bertel-Brander ->> Jeg takker, jeg kan desværre først teste det imorgen, men hvis det virker, får du points..
Kurser inden for grundlæggende programmering