algorytm.org

Implementacja w C/C++

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Macierz (kwadrat) - Implementacja w C/C++
Ocena użytkownikóww: *****  / 4
SłabyŚwietny
Nadesłany przez Krzysztof Maćkowiak, 17 sierpnia 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

macierz_c/MACIERZ.CPP:
//Program szyfrujacy/deszyfrujacy tekst znajdujacy sie w pliku za pomoca algorytmu
//przestawieniowego - metoda kwadratu (macierzy)

//Program pobrano ze strony www.algorytm.org
//Opracowal Krzysztof Mackowiak

#include<stdio.h>
#include<iostream.h>
#include <math.h>

//Program dziala poprawnie dla tekstu o dlugosci max 400 znakow. W przypadku dluzszych tekstow
//nalezy zmienic wartosci macierzy i tablicy pomocniczej lub zastosowac struktury dynamiczne

void main()
{
FILE *we, *wy;
char znak;                   //znak odczytany z pliku
//Przed uruchomieniem programu nalezy utworzyc 2 pliki - 1. z tekstem jawnym/zaszyfrowanym , 2. pusty 
char plik_wejsciowy[20];         //nazwa pliku wejsciowego
char plik_wyjsciowy[20];         //nazwa pliku wyjsciowego
char macierz[20][20];
char tablica_pomocnicza[400];
int i,j,k,l,m,n;
cout<<"Podaj nazwe pliku z tekstem: " ;
cin>>plik_wejsciowy;             //pobranie nazwy pliku wejsciowego 
cout<<"Podaj nazwe pliku wynikowego: ";
cin>>plik_wyjsciowy;      //pobranie nazwy pliku wynikowego
i=0;

if((we=fopen(plik_wejsciowy,"rb"))!=NULL) 
{
if((wy=fopen(plik_wyjsciowy,"wb"))!=NULL) 
{

while((znak=getc(we))!=EOF)    //odczytywanie wszystkich znakow z pliku wejsciowego
       {
	  tablica_pomocnicza[i]=znak;    //zapisywanie wszystkich znakow to tablicy pomocniczej
	  i++;                           //zliczanie wszystkich znakow
	}


j=1;
do             //dopasowywanie wielkosci macierzy - powiekszamy ilosc kolumn i wierszy tak
 {             //dlugo az pomiesci wszystkie odczytane z pliku znaki 
  j++;
  k=j*j;
 }
while (k<i);

for (l=0; l<j; l++)          //wypelnianie macierzy pewnym symbolem - w tym przypadku jest to spacja
	for (m=0;m<j;m++)    //w przypadku gdy macierz nie bedzie w pelni wypelniona tekstem
	{                    //zostanie dopelniona pustymi polami
	    macierz[l][m]=32;
        }	

m=0; n=0;

for (l=0; l<i; l++)       //przepisywanie wszystkich znakow z tablicy pomocniczej do macierzy
   {
    macierz[n][m]=tablica_pomocnicza[l];
    m++;
    if (m==j)             //gdy zapelniony jeden wiersz to do nastepnego
    	{
		n++;
		m=0;
	}
   }

                               //odczytywanie znakow z macierzy kolumnami
for (l=0; l<j; l++)            
	for (m=0;m<j;m++)
	{
	    znak=macierz[m][l];
	    putc(znak,wy);
        }	


fclose(wy);
 } 
fclose(we);
   
}
cout<<"Operacja zostala zakonczona";
return;
}
Dodaj komentarz