Zmiana liter

Odpowiedz Nowy wątek
2015-01-30 04:59
Panix
0

Chce napisać program który zmieni w pierwszym słowie litery p na b. W programie jako komentarz zadałem pytanie. Z góry dzięki za pomoc


#include <stdio.h>

char tablica[1000];

int main ( )
{
    printf("\n Wpisz dowolny ciąg znaków\n");
    gets( tablica ) ;

    printf("\nWprowadzono %s\n", tablica );

    int i=0;
    do
   {
    for(i=0; i!=; i++)// i!= jak oznaczyc w tym miejscu spacje, istnieje jakiś sposób?
        {
   if (tablica[i] == 'p')
      tablica[i] = 'b';
      }
      printf("\nWynik: %s\n", tablica);
   }
   while( tablica[i] != 0 );
   return 0;
}

Pozostało 580 znaków

2015-01-30 05:03
Panix
0

Da się zadeklarować w define spacje w jakiś sposób? To coś da?

Pozostało 580 znaków

2015-01-30 05:29
1

Twój kod podchodzi pod szczyt nieczytelności. To sie da czytac:

#include <stdio.h>

void zamien_p_na_b_w_pierwszym_slowie(char* s)
{
    for (; *s; s++)
    {
        switch (*s)
        {
            case ' ' : return;
            case 'p' :
            {
                *s = 'b';
                continue;
            }
        }
    }
}

int main ()
{
    printf("\n Wpisz dowolny ciąg znaków\n");
    char tablica[1000];
    fgets(tablica, 1000, stdin);

    printf("\nWprowadzono %s\n", tablica);

    zamien_p_na_b_w_pierwszym_slowie(tablica);
    printf("\nWynik: %s\n", tablica);

    return 0;
}

░█░█░█░█░█░█░█░█░█░█░█░

Pozostało 580 znaków

2015-01-30 05:44
Panix
0

No fajnie, dzięki. Może mój program nie jest najlepszy ale nie od razu Kraków zbudowano. Chciałem wiedzieć czy da się go lekko poprawić żeby spełniał swoje zadanie a nie od razu tworzyć nowy. Więc ponawiam pytanie.

Pozostało 580 znaków

2015-01-30 07:57
1

Da się. Te 10 linii kodu co zmieniłem to była lekka poprawka.


░█░█░█░█░█░█░█░█░█░█░█░

Pozostało 580 znaków

2015-01-30 11:09
Krwawy Kaczor
0

http://ideone.com/GTAWkk

 #include <cstdio>
#include <cstdlib>
#include <cstring>

#define MAX_INPUT 10000

int main(int, char**)
{
    char buffer[MAX_INPUT] = { 0 };
    gets(buffer);
    printf("Wprowadzono = %s\n", buffer);
    char * current = &buffer[0];
    while(*current != '\0' && *current != ' ')
    {
        if(*current == 'p')
            *current = 'b';

        current++;
    }
    printf("Rezultat = %s\n", buffer);

    return 0;
}

Pozostało 580 znaków

2015-01-30 13:15
0

Teraz jest ok :)

Pozostało 580 znaków

2015-01-30 13:17
0
void podmienLitereWPierwszymSlowie(const char *src, char *dest, char a, char b) {
      // kopiuj do napotkania słowa
      while(*src && !isalpha(*src)) {
          *dest++ = *src++;
      }

      // kopiuj i podmieniaj literę w pierwszym słowie
      while(*src && isalpha(*src)) {
           char ch = *src++;
           *dest++ = a==ch?b:ch;
      }

      // kopiuj resztę
      while(*src) {
          *dest++ = *src++;
      }
}

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

2015-01-30 19:24
Świetny Mleczarz
0

Da się napisać jakoś funkcje która deklarowała by spacje a potem ją zwracała?

Pozostało 580 znaków

2015-01-30 19:26
Panix
0

Nie wystarczy zamienić pętli na while jak w rozwiązaniu krwawego kaczora?

 while(*current != '\0' && *current != '  ')

Nie da się tak samo oznaczyć spacji w for jak w while?

Pozostało 580 znaków

2015-01-30 19:51
0

@Świetny Mleczarz
Da się, wystarczy że zwrócisz z tej funkcji chara o wartości 32, gdyż to jest kod ASCII spacji.
@Panix

for( ; *current !=' '; current++){}

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0