[c++] ascii tekens
Geplaatst: do 22 dec 2011, 10:05
Ik moet voor school een opdracht maken voor programmeren, de opdracht is om een programma te schrijven, dat een rij letters (afgesloten door een .) inleest. Elk karakter wordt gecodeerd volgens een zelfbedacht algoritme en het resultaat wordt naar een tekstfile (cript.txt) geschreven. Schrijf een tweede programma dat dit bestand (cript.txt) inleest, de karakters decodeert en het resultaat op het scherm toont.
tot zover heb ik dit bij het schrijfprogramma:
Ik ben volgens mij wel een heel eind de goede kant op, maar nu kan ik alleen A tot en met Z, dus geen spaties en cijfers.
Nu zei een klasgenoot dat het mogelijk is om bij het inlezen een ASCII reeks te schrijven in de trant van: waarde karakter + 1.
Dit is gelijk een stuk korter omdat dit als het goed is in 2 à 3 regels beschreven kan worden.
Nu heb ik lopen zoeken op het internet, maar daar kon ik niets vinden.
Zou iemand mij hier verder mee willen helpen?
Alvast bedankt.
tot zover heb ik dit bij het schrijfprogramma:
Code: Selecteer alles
/* INCLUDES: */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <conio.h>
/* DEFINES: */
#define PI 3.141592
#define MAX_NUMBER 99
/* FUNCTION DECLARATIONS */
/* MAINPROGRAM: */
int main(void)
{
char chstop = 'y';
FILE *p_file_cript;
char chArr, chAlg;
while(chstop= 'y')
{
/* openen bestand: */
p_file_cript = fopen("cript.txt","w");
if(p_file_cript == NULL)
{
printf("cript.txt cannot be opened!");
exit(0);
}
/* the file is successfully opened */
/*vraag om invoer*/
printf("Voer katakters in van A tot Z en eindig met een '.'(punt)\n");
chArr = getch();
[color="#FF0000"] while(chArr != '.')
{
if(chArr == 'a' || chArr == 'b' || chArr == 'c' || chArr == 'd' || chArr == 'e' || chArr == 'f' || chArr == 'g' || chArr == 'h' || chArr == 'i' || chArr == 'j' || chArr == 'k' || chArr == 'l' || chArr == 'm' || chArr == 'n' || chArr == 'o' || chArr == 'p' || chArr == 'q' || chArr == 'r' || chArr == 's' || chArr == 't' || chArr == 'u' || chArr == 'v' || chArr == 'w' || chArr == 'x' || chArr == 'y' || chArr == 'z')
{
switch(chArr)
{
case 'a' : chAlg = '1'; break; case 'b' : chAlg = '2'; break;
case 'c' : chAlg = '3'; break; case 'd' : chAlg = '4'; break;
case 'e' : chAlg = '5'; break; case 'f' : chAlg = '6'; break;
case 'g' : chAlg = '7'; break; case 'h' : chAlg = '8'; break;
case 'i' : chAlg = '9'; break; case 'j' : chAlg = '0'; break;
case 'k' : chAlg = '!'; break; case 'l' : chAlg = '@'; break;
case 'm' : chAlg = '#'; break; case 'n' : chAlg = '$'; break;
case 'o' : chAlg = '%'; break; case 'p' : chAlg = '^'; break;
case 'q' : chAlg = '&'; break; case 'r' : chAlg = '*'; break;
case 's' : chAlg = '?'; break; case 't' : chAlg = '~'; break;
case 'u' : chAlg = '-'; break; case 'v' : chAlg = '+'; break;
case 'w' : chAlg = '='; break; case 'x' : chAlg = '['; break;
case 'y' : chAlg = '/'; break; case 'z' : chAlg = ']'; break;
}
/* schrijven naar bestand: */
fprintf(p_file_cript,"%c",chAlg);
/*nieuwe informatie naar scherm*/
printf("%c",chArr);
chArr = getch();
}[/color]
else
{
printf ("\nwaarde niet tussen A en Z\n");
chArr = getch();
}
}
fclose(p_file_cript);
/*exit program*/
if (chArr == '.') return(0);
}
}
Nu zei een klasgenoot dat het mogelijk is om bij het inlezen een ASCII reeks te schrijven in de trant van: waarde karakter + 1.
Dit is gelijk een stuk korter omdat dit als het goed is in 2 à 3 regels beschreven kan worden.
Nu heb ik lopen zoeken op het internet, maar daar kon ik niets vinden.
Zou iemand mij hier verder mee willen helpen?
Alvast bedankt.