wczytywanie teksty i podmiana liter

wczytywanie teksty i podmiana liter
EM
  • Rejestracja:około 15 lat
  • Ostatnio:około 15 lat
0

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 ;/

T1
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad 4 lata
  • Postów:97
0

cipherword[c1] == encryted [c2];
na
cipherword[c1] = encryted [c2];

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Masakra. Rozumiem ze nie dało się robić:

Kopiuj
//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';

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
EM
  • Rejestracja:około 15 lat
  • Ostatnio:około 15 lat
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!

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Bo ten kod to bzdura. To co wstawiłem to jest praktycznie kompletny program, ale ty chyba nie umiesz go użyć o_O

Kopiuj
#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:

Kopiuj
#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;
}



"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
EM
  • Rejestracja:około 15 lat
  • Ostatnio:około 15 lat
0

musze to zapisać do pliku ;]

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

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?


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
EM
  • Rejestracja:około 15 lat
  • Ostatnio:około 15 lat
0

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 [???]

EM
  • Rejestracja:około 15 lat
  • Ostatnio:około 15 lat
0

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

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 5 godzin
0
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'

EM
  • Rejestracja:około 15 lat
  • Ostatnio:około 15 lat
0

Dzieki

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.