Witam mam do napisania kod który zamieni litery w tekscie na inne litery wg klucza , cos jak( a to q; b to w) i tak dalej.Problem w tym że mi nie chce zamieniac pętla cos nie działa i nie wiem jak ja napisac poprawnie ;/
cipherword[c1] == encryted [c2];
na
cipherword[c1] = encryted [c2];
Masakra. Rozumiem ze nie dało się robić:
//word to char* gdzie masz wczytane słowo
int dlugosc = strlen(word);
cipherword = new char[dlugosc+1];
for(int i=0;i<dlugosc;i++)
cipherword[i] = encrypted[word[i]-'a']; //np jeśli literka word[i] to 'a' to 'a'-'a' da nam 0 a encrypted[0] to właśnie literka na jaką mielismy zamienic 'a' ;)
cipherword[dlugosc]='\0';
Zrobiłem poprawki, siedze nad tym cały dzien "musk" mi sie sprał ;/ ;] , a kod nie dziala. Jak by ktos mógł zajrzeć Dzieki z góry!
Bo ten kod to bzdura. To co wstawiłem to jest praktycznie kompletny program, ale ty chyba nie umiesz go użyć o_O
#include <stdio.h>
#include <string.h>
int main()
{
char encrypted [] = {"qwertyuioplkjhgfdsazxcvb"};
char* word = new char[30]; //załóżmy że chcemy słowo o długosci max 29 znaków
scanf("%s",word); //czytamy słowo
int dlugosc = strlen(word);
char* cipherword = new char[dlugosc+1];
for (int i=0;i<dlugosc;i++)
cipherword[i] = encrypted[word[i]-'a']; //np jeśli literka word[i] to 'a' to 'a'-'a' da nam 0 a encrypted[0] to właśnie literka na jaką mielismy zamienic 'a' ;)
cipherword[dlugosc]='\0';
printf("%s",cipherword);
return 0;
}
Przerobienie tego na czytanie z pliku nie powinno stanowic wielkiego problemu. Dodatkowo jeśli nie chcesz zapisywać nigdzie calego słowa tylko wypisywać na bieżąco to możesz sobie darować zabawy z pamięcią i zrobić po prostu:
#include <stdio.h>
int main()
{
char encrypted [] = {"qwertyuioplkjhgfdsazxcvb"};
char letter;
while((letter = getchar())!='\n') //będzie wypisywać aż nie trafi na enter, tutaj mozesz dać swoje while(plik!=eof)
printf("%c",encrypted[letter-'a']);
return 0;
}
musze to zapisać do pliku ;]
A to w ogóle dziwne, bo w twoim kodzie otwierałeś plik do odczytu a nie do zapisu...
Zresztą to żadna różnica, zamiast tego printfa mojego możesz przecież dać fwrite, jaki problem?
Dokładnie to mam podmienic litry(zaszyfrowac), plik tekstowy. na inne litery przy czym musze kazdz litere przyrównac np: a - q; b-e itp , po czym mam zapisac je do nowego pliku. Wydaje sie proste ale nie dla beginersa [???]
Zadziałało ;). Teraz sprawa zapisu do pliku. Bede sie meczył ale jak ktoś może pomóc to było by miło.
#include <stdio.h>
int main()
{
char encrypted [] = {"qwertyuioplkjhgfdsazxcvb"};
char letter;
FILE *fp;
if ((fp = fopen ("2002.txt","r"))==NULL)
{
puts ("nie można otworzyć");
}
while((letter = fgetc(fp))!= EOF )
printf("%c",encrypted[letter-'a']);
getchar();
return 0;
getchar();
}
p.s.
Mógłby mi jakiś Maesto wytłumaczyć na polski co znaczy, dlaczego i kiedy (w sumie jak to używać)
[letter-'a'] dzieki wielke
emilo napisał(a)
Mógłby mi jakiś Maesto wytłumaczyć na polski co znaczy, dlaczego i kiedy (w sumie jak to używać) [letter-'a'] dzieki wielke
Odejmowanie.
'a' - 'a' == 0
'b' - 'a' == 1
'a' + 2 == 'c'
Dzieki