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

Podmiana slowa w tablicy znakow

Object Storage Arubacloud
0 głosów
1,759 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ź 666 wizyt
pytanie zadane 27 grudnia 2016 w C i C++ przez Don Corleone Obywatel (1,210 p.)
0 głosów
1 odpowiedź 294 wizyt
pytanie zadane 30 grudnia 2016 w Java przez 0xf Dyskutant (8,180 p.)
0 głosów
2 odpowiedzi 613 wizyt
pytanie zadane 2 lipca 2019 w C i C++ przez magda_19 Gaduła (3,080 p.)

92,573 zapytań

141,423 odpowiedzi

319,646 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...