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 ;/
wczytywanie teksty i podmiana liter
- Rejestracja: dni
- Ostatnio: dni
- Rejestracja: dni
- Ostatnio: dni
- Postów: 97
cipherword[c1] == encryted [c2];
na
cipherword[c1] = encryted [c2];
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
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';
- Rejestracja: dni
- Ostatnio: dni
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!
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
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;
}
- Rejestracja: dni
- Ostatnio: dni
musze to zapisać do pliku ;]
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
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?
- Rejestracja: dni
- Ostatnio: dni
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 [???]
- Rejestracja: dni
- Ostatnio: dni
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
- Rejestracja: dni
- Ostatnio: dni
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'
- Rejestracja: dni
- Ostatnio: dni
Dzieki