Forum Dyskusyjne
Zaloguj Rejestracja Szukaj Forum dyskusyjne

Forum dyskusyjne -> Software -> Programowanie :: WWW -> Program CPP
Napisz nowy temat  Odpowiedz do tematu
Program CPP
PostWysłano: Środa, 28 Grudnia 2005, 17:35 Odpowiedz bez cytowania Odpowiedz z cytatem
KACP3REK
Czytelnik
<tt>Czytelnik</tt>
 
Użytkownik #5671
Posty: 1


[ Osobista Galeria ]




Mam do napisania zadanie z C++ na zaliczenie... i jestem troche ciemny z C++ jezeli o to chodzi... oto tresc zadania:
ZADANIE 32 :

Napisz program do konwertowania plikow tekstowych z uwzglednieniem roznych standardow polskich liter. Nalezy uwzglednic wszystkie mozliwe standardy kodowania. Program powinien tworzyc nowy plik pozostawiajac pierwotny plik wejsciowy bez zmian.


Zaczalem to powoli pisac i oto co mi wyszlo... nic ciekawego w sumie... mogl by mi ktos pomoc to popoprawiac? bo ja sobie z tym nie poradze :(

zad32.cpp :


#include <iostream>
using namespace std;
#include <conio.h>
unsigned short int ad,cd,ed,ld,nd,sd,od,xd,zd,a,c,e,l,n,s,o,x,z;
int main()

{
unsigned short int menu;
cout<<"1 - ISO-8859-2\n";
cout<<"2 - Windows-EE\n";
cout<<"3 - IBM (CP852)\n";
cout<<"4 - Mazovia\n";
cout<<"5 - CSK\n";
cout<<"6 - Cyfromat\n";
cout<<"7 - DHN\n";
cout<<"8 - IINTE-ISIS\n";
cout<<"9 - IEA-Swierk\n";
cout<<"10 - Logic\n";
cout<<"11 - Microvex\n";
cout<<"12 - Ventura\n";
cout<<"13 - ELWRO-Junior\n";
cout<<"14 - Mac\n";
cout<<"15 - AmigaPL\n";
cout<<"16 - TeXPL\n";
cout<<"17 - Atari-Calamus\n";
cout<<"18 - CorelDraw!\n";
cout<<"19 - ATM\n\n";
cout<<"Wybierz kodowanie : ";
cin>>menu;
switch(menu){
case 1:
ad=161;cd=198;ed=202;ld=163;nd=209;od=211;sd=166;xd=172;zd=175;
a=177;c=230;e=234;l=179;n=241;o=243;s=182;x=188;z=191;
break;
case 2:

break;
case 3:

break;
case 4:

break;
case 5:

break;
case 6:

break;
case 7:

break;
case 8:

break;
case 9:

break;
case 10:

break;
case 11:

break;
case 12:

break;
case 13:

break;
case 14:

break;
case 15:

break;
case 16:

break;
case 17:

break;
case 18:

break;
case 19:

break;
default:
cout<<"!!! Brak takiej pozycji do wyboru !!!\n";
break;
return 1;
}

FILE *plik;
int ch;
filename;

cout << "Podaj sciezke do pliku" << endl;
cin >> filename;

plik = fopen(filename,"rw"); /* otworzenie pliku w trybie odczyt/zapis */

while ((ch = getc(plik)) != EOF) /* pętla powtarzana do końca aż program */
/* przeskanuje cały plik */
{
if ((ch == 165) || (ch == 198) || (ch == 202) || (ch == 163) || (ch == 209) || (ch == 211) || (ch == 140) || (ch == 143) || (ch == 175) || (ch == 185) || (ch == 230) || (ch == 234) || (ch == 179) || (ch == 241) || (ch == 243) || (ch == 156) || (ch == 159) || (ch == 191))
{
switch(ch) /* zamiana któregoś ze znaków */
{
case (165):
ch=ad;
break;
case(198):
ch=cd;
break;
case(202):
ch=ed;
break;
case(163):
ch=ld;
break;
case(209):
ch=nd;
break;
case(211):
ch=od;
break;
case(140):
ch=sd;
break;
case(143):
ch=xd;
break;
case(175):
ch=zd;
break;
case(185):
ch=a;
break;
case(230):
ch=c;
break;
case(234):
ch=e;
break;
case(179):
ch=l;
break;
case(241):
ch=n;
break;
case(243):
ch=o;
break;
case(156):
ch=s;
break;
case(159):
ch=x;
break;
case(191):
ch=z;
break;

}

fseek(plik,-1,1); /* przesunięcie wskaźnika pliku */

putc(ch,plik); /* podmiana znaku */

fseek(plik,ftell(plik),0); /* przesunięcie wskaźnika pliku */
}
}
fclose(plik); /* zamknięcie pliku */


getch();
}

  
Re: Program CPP
PostWysłano: Czwartek, 12 Stycznia 2006, 18:20 Odpowiedz bez cytowania Odpowiedz z cytatem
Tassadar
Kapitan Heh
 
Użytkownik #3
Posty: 246


[ Osobista Galeria ]




nie napisales w jakim kodowaniu jest plik wejsciowy. Ja je nazwalem "domyslne".. Program mozna latwo przerobic, zeby zmienial z dowolnego kodowania na dowolne.

Nastepnym razem umiesc w temacie jaki program to ma byc.

Kod:
#include <iostream>
#define liter_pl 18

using namespace std;
typedef struct kody{
   char nazwa[100];
   char znaki[liter_pl];
}KODY;
KODY standardy[]={
   // w domyslnym kodowaniu sa pliki wejsciowe
   {"domyslne"     ,{165,198,202,163,209,211,140,143,175,185,230,234,179,241,2 43,156,159,191}},
   // nazwa        , A , C , E , L , N , O , S , X , Z , a , c , e , l , n , o , s , x , z
// ------------ tu dodajemy standardy --------------
   {"ISO-8859-2"   ,{161,198,202,163,209,211,166,172,175,177,230,234,179,241,2 43,182,188,191}},
   {"Windows-EE"   ,{111,111,111,111,111,111,111,111,111,111,111,111,111,111,1 11,111,111,111}},
   {"IBM (CP852)"  ,{111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111  ,111,111}},
// ------------ tu dodajemy standardy --------------
{"",{}}};
int main(){
   int wybor,i;
   for(i=0; ; i++){
      if(standardy[i].nazwa[0]==0)
         break;
   }
   int standardow=i;
jeszcze_raz:
   cout << "Wybierz standard:\n";
   for(i=1;i<standardow;i++){
      cout << i << ". " << standardy[i].nazwa << endl;
   }
   cout << ": ";
   cin>>wybor;
   if(wybor<=0 || wybor>=standardow){
      cout<<"Brak takiej pozycji do wyboru. Sprobuj jeszcze raz...\n\n";
      goto jeszcze_raz;
   }
   
   FILE *input, *output;
   char filename[100];
   char znak;

   cout << "Podaj sciezke do pliku od odczytu: ";
   cin >> filename;
   input = fopen(filename,"r"); /* otworzenie pliku w trybie odczyt */
   cout << "Podaj sciezke do pliku od zapisu: ";
   cin >> filename;
   output = fopen(filename,"w"); /* otworzenie pliku w trybie zapis */
   while ((znak = getc(input)) != EOF){
      for(i=0;i<liter_pl;i++){
         if(znak == standardy[0].znaki[i]){
            znak=standardy[wybor].znaki[i];
            break;
         }
      }
      putc(znak,output); /* wstawienie znaku */
   }
   fclose(input); /* zamknięcie pliku */
   fclose(output); /* zamknięcie pliku */
   cout << "Koniec programu. <enter>\n";
   getchar();getchar();
}

Teraz zuwazylem, ze linie sa lamane i te linie gdzie wpisujesz znaki dziwnie wygladaja... jesli w edytorze usuniesz tam lamanie lini to bedzie ok.
  
Program CPP
Forum dyskusyjne -> Software -> Programowanie :: WWW

Strona 1 z 1  
  
  
 Napisz nowy temat  Odpowiedz do tematu  
Kopiowanie i rozpowszechnianie materiałów w całości lub części jest niedozwolone. Wszelkie informacje zawarte w tym miejscu są chronione prawem autorskim.



Forum dyskusyjne Heh.pl © 2002-2010