program tłumaczący w C napisać
-
- Użytkownik
- Posty: 52
- Rejestracja: 7 lip 2006, o 22:45
- Płeć: Mężczyzna
- Lokalizacja: Halinów
- Podziękował: 3 razy
program tłumaczący w C napisać
Program tłumaczący wyrazy. Program korzysta ze słownika-pliku tekstowego zawierajacego wpisy w postaci:
cat=kot
dog=pies
student=student
tree=drzewo
Po podaniu wyrazu program wyświetla jego odpowiednik w obcym języku.
cat=kot
dog=pies
student=student
tree=drzewo
Po podaniu wyrazu program wyświetla jego odpowiednik w obcym języku.
- `vekan
- Użytkownik
- Posty: 875
- Rejestracja: 23 sty 2006, o 21:34
- Płeć: Mężczyzna
- Lokalizacja: far away
- Podziękował: 139 razy
- Pomógł: 71 razy
program tłumaczący w C napisać
to jest program który zamienia jeden wyraz na drugi. Modyfikujesz go pod swoje potrzeby i powinno być ok.
Kod: Zaznacz cały
// (c) 2007 - vekan
#include <stdio.h>
#include <string.h>
void funkcja(char *tekstWynikowy, const char *czytanyTekst, const char *wzorzec1, const char *wzorzec2)
{
char *tekstWynikowyTemp = tekstWynikowy;
const char *next = NULL;
int dlugoscDrugiegoWzorca = strlen(wzorzec2);
int dlugoscPierwszegoWzorca = strlen(wzorzec1);
int shift;
while(1)
{
next = strstr(czytanyTekst, wzorzec1);
if (next == NULL)
break;
shift = next - czytanyTekst;
strncpy(tekstWynikowyTemp, czytanyTekst, shift);
tekstWynikowyTemp += shift;
czytanyTekst += shift;
strncpy(tekstWynikowyTemp, wzorzec2, dlugoscDrugiegoWzorca);
tekstWynikowyTemp += dlugoscDrugiegoWzorca;
czytanyTekst += dlugoscPierwszegoWzorca;
} strcpy(tekstWynikowyTemp, czytanyTekst);
}
int main()
{
const char *tab1 = "To jest napis, w ktorym jest kotlet";
const char *tab2 = "Ala ma kota, kot ma kotleta :-)";
const char *wzorzec1 = "kot";
const char *wzorzec2 = "pies";
char tablicaWynikowa[256];
funkcja(tablicaWynikowa, tab2, wzorzec1, wzorzec2);
printf("%s
", tablicaWynikowa);
getchar();
return 0;
}
-
- Użytkownik
- Posty: 52
- Rejestracja: 7 lip 2006, o 22:45
- Płeć: Mężczyzna
- Lokalizacja: Halinów
- Podziękował: 3 razy
program tłumaczący w C napisać
Zrobiłem to tak,nie jestem pewien czy dobrze bedzie,hmm dlaczego nie działa w C, tylko w C++
#include
#include
void funkcja(char *tekstWynikowy, const char *czytanyTekst, const char *wzorzec1, const char *wzorzec2)
{
char *tekstWynikowyTemp = tekstWynikowy;
const char *next = NULL;
int dlugoscDrugiegoWzorca = strlen(wzorzec2);
int dlugoscPierwszegoWzorca = strlen(wzorzec1);
int shift;
while(1)
{
next = strstr(czytanyTekst, wzorzec1);
if (next == NULL)
break;
shift = next - czytanyTekst;
strncpy(tekstWynikowyTemp, czytanyTekst, shift);
tekstWynikowyTemp += shift;
czytanyTekst += shift;
strncpy(tekstWynikowyTemp, wzorzec2, dlugoscDrugiegoWzorca);
tekstWynikowyTemp += dlugoscDrugiegoWzorca;
czytanyTekst += dlugoscPierwszegoWzorca;
} strcpy(tekstWynikowyTemp, czytanyTekst);
}
int main()
{
const char *tab1 = "cat";
const char *tab2 = "cat=kot";"dog=pies";"student=student";"tree=drzewo";
const char *wzorzec1 = "kot";
const char *wzorzec2 = "kot";
char tablicaWynikowa[256];
funkcja(tablicaWynikowa, tab2, wzorzec1, wzorzec2);
printf("%s
", tablicaWynikowa);
getchar();
return 0;
}
#include
#include
void funkcja(char *tekstWynikowy, const char *czytanyTekst, const char *wzorzec1, const char *wzorzec2)
{
char *tekstWynikowyTemp = tekstWynikowy;
const char *next = NULL;
int dlugoscDrugiegoWzorca = strlen(wzorzec2);
int dlugoscPierwszegoWzorca = strlen(wzorzec1);
int shift;
while(1)
{
next = strstr(czytanyTekst, wzorzec1);
if (next == NULL)
break;
shift = next - czytanyTekst;
strncpy(tekstWynikowyTemp, czytanyTekst, shift);
tekstWynikowyTemp += shift;
czytanyTekst += shift;
strncpy(tekstWynikowyTemp, wzorzec2, dlugoscDrugiegoWzorca);
tekstWynikowyTemp += dlugoscDrugiegoWzorca;
czytanyTekst += dlugoscPierwszegoWzorca;
} strcpy(tekstWynikowyTemp, czytanyTekst);
}
int main()
{
const char *tab1 = "cat";
const char *tab2 = "cat=kot";"dog=pies";"student=student";"tree=drzewo";
const char *wzorzec1 = "kot";
const char *wzorzec2 = "kot";
char tablicaWynikowa[256];
funkcja(tablicaWynikowa, tab2, wzorzec1, wzorzec2);
printf("%s
", tablicaWynikowa);
getchar();
return 0;
}
- Calasilyar
- Użytkownik
- Posty: 2656
- Rejestracja: 2 maja 2006, o 21:42
- Płeć: Mężczyzna
- Lokalizacja: Wrocław/Sieradz
- Podziękował: 29 razy
- Pomógł: 410 razy
program tłumaczący w C napisać
a tak a propos tego tematu, jak można np. w tym przypadku zamieszczać te słówka w oddzielnym pliku, czyli jak zmodyfikować powyższy program, który by pobierał słówka z zewnętrznego pliku?
- Undre
- Użytkownik
- Posty: 1430
- Rejestracja: 15 lis 2004, o 02:05
- Płeć: Mężczyzna
- Lokalizacja: UĆ
- Podziękował: 3 razy
- Pomógł: 92 razy
program tłumaczący w C napisać
Mi działa niezależnie, czy kompiluję to jako C czy jako C++dejna pisze:hmm dlaczego nie działa w C, tylko w C++
Tworzysz sobie powiedzmy nawet w formie txt pliczek, następnie w programie tworzysz wskaźnik plikowy ... i zaczyna się w sumie myślenie twórcze.Calasilyar pisze:a tak a propos tego tematu, jak można np. w tym przypadku zamieszczać te słówka w oddzielnym pliku, czyli jak zmodyfikować powyższy program, który by pobierał słówka z zewnętrznego pliku?
Sam wskaźnik wygląda mniej więcej tak :
Kod: Zaznacz cały
FILE *filepointer;
if ((filepointer = fopen("nazwapliku.txt","r")) == NULL ) {
printf("Error");
exit(1);
}
-
- Użytkownik
- Posty: 3393
- Rejestracja: 29 sty 2006, o 14:15
- Płeć: Mężczyzna
- Podziękował: 466 razy
- Pomógł: 197 razy
program tłumaczący w C napisać
ale jeszcze jest potrzebna funkja wyszukująca w danym pliku tekstowym jakiś wyraz potem musisz prejść o jeden znak w prawo i pobrać wyraz w innym języku. Wszystko zależy od tego jak jest ułożona lista.
-
- Użytkownik
- Posty: 52
- Rejestracja: 7 lip 2006, o 22:45
- Płeć: Mężczyzna
- Lokalizacja: Halinów
- Podziękował: 3 razy
program tłumaczący w C napisać
program mam gotowy tylko niewiem co trzeba zrobić by pobierał słowka do tłumaczenia z zewnętrznego pliku.np.txt...niewiem co oznaczają poszcególne pojęcia.prosze o wytłumaczenie linijka po linijce.
#include
#include // dla strtok, strcmp
int main(){
FILE *plik_slownika;
char *oddzielnik="="; //separator slowek
char linia[80]; //dlugosci linii
char slowo[80]; //dlugosc slowka nalezy pozmieniac wartosci
char *slownik_ANG, *slownik_PL;
plik_slownika = fopen("slownik.txt","r"); //nazwa pliku slownika; plik wczytywany tylko do odczytu
printf("Podaj slowko do przetlumaczenia: ");
scanf("%s", slowo);
while (!feof(plik_slownika)){
fgets(linia, 80, plik_slownika);
slownik_PL=strtok(linia,oddzielnik);
slownik_ANG=strtok(NULL,oddzielnik);
if( strcmp(slowo, slownik_PL ) == 0){ /*gdy slowka sa takie same, jest zwrocone 0, wtedy wyswietl slowko angielskie */
printf("%s
", slownik_ANG );
}
}
fclose(plik_slownika); //zamknij plik
return 0;
}
#include
#include // dla strtok, strcmp
int main(){
FILE *plik_slownika;
char *oddzielnik="="; //separator slowek
char linia[80]; //dlugosci linii
char slowo[80]; //dlugosc slowka nalezy pozmieniac wartosci
char *slownik_ANG, *slownik_PL;
plik_slownika = fopen("slownik.txt","r"); //nazwa pliku slownika; plik wczytywany tylko do odczytu
printf("Podaj slowko do przetlumaczenia: ");
scanf("%s", slowo);
while (!feof(plik_slownika)){
fgets(linia, 80, plik_slownika);
slownik_PL=strtok(linia,oddzielnik);
slownik_ANG=strtok(NULL,oddzielnik);
if( strcmp(slowo, slownik_PL ) == 0){ /*gdy slowka sa takie same, jest zwrocone 0, wtedy wyswietl slowko angielskie */
printf("%s
", slownik_ANG );
}
}
fclose(plik_slownika); //zamknij plik
return 0;
}