• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Podmiana slowa w tablicy znakow

0 głosów
2,105 wizyt
pytanie zadane 20 grudnia 2016 w C i C++ przez Don Corleone Obywatel (1,210 p.)

Witam, mam problem z podmiana wyrazu w lancuchu na inny bez uzycia bibliotek string.h i ctype.h.

Programuje w c

Chcialbym podmienic slowo "Trzcinie"

Myslalem zeby stworzyc tablice znakow i do niej wrzucac pokolei znaki z tablicy str az osiagnie dlugosc 8 i potem po kolei przesuwac az zrowna sie ze slowem "Trzcinie" i wtedy ifem podmienic na inne.

Plan jest tylko nie wiem jak to zrobic, gdyby ktos mogl doradzic bylbym wdzieczny :)

#include <stdio.h>
#include <stdlib.h>
#define MAX 100

void podmien(char *str)
{
    int i;
    char *str2="Trzcinie";
    char tab[8]
    for(i=0; str[i]!=NULL; i++)
    {
       tab[i]=str[i];
       ...
        
    }
    
    
}




int main()
{
    char str[MAX] = "W Szczebrzeszynie\nChrzaszcz\nBrzmi W Trzcinie"
    printf("Hello world!\n");
    return 0;

 

1 odpowiedź

–1 głos
odpowiedź 21 grudnia 2016 przez degrek Bywalec (2,380 p.)

Tworzenie tablicy 8 elementów nie jest potrzebne, lepiej od razu sprawdzić każdy element tablicy i porównać czy jest taki sam jak w napisie "Trzcinie", jeśli tak to podmienić:
Spróbuj sam zaimplementować funkcje, poniżej wstawiam przykładowe rozwiązanie, ale najpierw spróbuj sam ;)

#include <stdio.h>
#include <stdlib.h>

void podmien(char tekst[], const char *napis, const char *zamiennik)
{
    int i,j=0;
    for(i = 0; tekst[i] != NULL; i++){
        if(tekst[i] == napis[j]){
            tekst[i] = zamiennik[j];
            j++;
            printf("zmiana");
        }
    }
}

int main()
{
    char tab[] = "W Szczebrzeszynie\nChrzaszcz\nBrzmi W Trzcinie\n";
    int i;

    podmien(tab,"Trzcinie","Lublinie");

    for(i = 0; tab[i] != NULL; i++){
        printf("%c",tab[i]);
    }
    return 0;
}

 

komentarz 21 grudnia 2016 przez Don Corleone Obywatel (1,210 p.)

a gdybym chcial podmienic slowo z tekstu na inne ktore poda uzytkownik?

Troche pokombinowalem, ale w momencie ktorym podmieni konczy wypisywac tablice znakow ;/



void podmien(char str[], const char *slowo, const char *zamiennik)
{
    int i,j=0;
    for(i = 0; str[i] != NULL; i++){
        if(str[i] == slowo[j]){
            str[i] = zamiennik[j];
            j++;
        }
    }
}


int main()
{
   
    char slowo[10];
    char zamiennik[10];
    char str[MAX] = "W Szczebrzeszynie\nChrzaszcz\nBrzmi W Trzcinie ";

    printf("Podaj slowo do zamiany: ");
    scanf("%s", &slowo);
    printf("Podaj zamiennik slowa: ");
    scanf("%s", &zamiennik);
    podmien(str,slowo,zamiennik);

    for(i = 0; str[i] != NULL; i++){
        printf("%c",str[i]);
    }


    return 0;

 

komentarz 21 grudnia 2016 przez degrek Bywalec (2,380 p.)
Zapewne słowo które podajesz jest krótsze niż rozmiar tablicy przez co zostaje dopisany NULL, kończący napis a później zostaje on przypisany do głównej tablicy, przez co wcześniej kończy się odczyt. Sprawdź to poprzez wypisanie tablicy zamiennik
komentarz 21 grudnia 2016 przez Don Corleone Obywatel (1,210 p.)
ok jesszcze jeden problem, gdy dam np do zamiany slowo "tego" na "slynie" to podmienia mi po drodze pierwsza literke "t" na "s" i potem "e" na "l" itd. Jak temu zaradzic?
komentarz 21 grudnia 2016 przez degrek Bywalec (2,380 p.)
Trzeba sprawdzić czy cały ciąg znaków się zgadza a później dopiero podmienić, w obecnej wersji nie jest to brane pod uwagę.

Podobne pytania

0 głosów
1 odpowiedź 967 wizyt
pytanie zadane 27 grudnia 2016 w C i C++ przez Don Corleone Obywatel (1,210 p.)
0 głosów
1 odpowiedź 567 wizyt
pytanie zadane 30 grudnia 2016 w Java przez 0xf Dyskutant (8,180 p.)
0 głosów
2 odpowiedzi 1,284 wizyt
pytanie zadane 2 lipca 2019 w C i C++ przez magda_19 Gaduła (3,080 p.)

93,604 zapytań

142,526 odpowiedzi

322,991 komentarzy

63,088 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...