operacja na stringach
-
- Użytkownik
- Posty: 92
- Rejestracja: 12 gru 2007, o 14:29
- Płeć: Mężczyzna
- Lokalizacja: Szczecin
- Podziękował: 65 razy
- Pomógł: 1 raz
operacja na stringach
Mam problem w zrozumieniu operacji na stringach mam dosc duzo zadan z tego tematu, niestety nie wiem jak sie za nie zabrac .. Mogłbym prosic o pomoc ? Mozecie mi wskazac jakas skarbnice wiedzy na temat stringow ? skad sie uczyc ?? Moze pomozecie rozwiazac pare zadan bym zobaczyl jak to dziala ?
Moje zadania:
Przetwarzanie tekstów - łańcuchów znaków
(tablica zawierająca przetwarzany tekst powinna być parametrem
wejściowo/wyjściowym pisanej funkcji)
1.
Napisz program, który wczyta łańcuch znaków z klawiatury
a następnie usunie z tego łańcucha pierwszą małą literę.
2.
Napisz funkcję, która usunie wszystkie początkowe spacje
w łańcuchu tekst, który powinien być parametrem wejściowo/wyjściowym tej funkcji.
3. Napisz funkcję usuwającą z zadanego łańcucha (poprzez skrócenie tekstu)
wszystkie bezpośrednie powtórzenia liter np. zamieniającą tekst “kommputter” na
”komputer”.
4. Napisz funkcję wyrównującą długość zadanego tekst'u do N znaków,
poprzez dodanie odpowiedniej ilości spacji na końcu tego łańcucha.
A ja nawet nie wiem jak sie za to zabrac Bardzo prosze o pomoc .. z gory bardzo dziekuje i pozdrawiam.
Moje zadania:
Przetwarzanie tekstów - łańcuchów znaków
(tablica zawierająca przetwarzany tekst powinna być parametrem
wejściowo/wyjściowym pisanej funkcji)
1.
Napisz program, który wczyta łańcuch znaków z klawiatury
a następnie usunie z tego łańcucha pierwszą małą literę.
2.
Napisz funkcję, która usunie wszystkie początkowe spacje
w łańcuchu tekst, który powinien być parametrem wejściowo/wyjściowym tej funkcji.
3. Napisz funkcję usuwającą z zadanego łańcucha (poprzez skrócenie tekstu)
wszystkie bezpośrednie powtórzenia liter np. zamieniającą tekst “kommputter” na
”komputer”.
4. Napisz funkcję wyrównującą długość zadanego tekst'u do N znaków,
poprzez dodanie odpowiedniej ilości spacji na końcu tego łańcucha.
A ja nawet nie wiem jak sie za to zabrac Bardzo prosze o pomoc .. z gory bardzo dziekuje i pozdrawiam.
Ostatnio zmieniony 21 gru 2007, o 23:50 przez zxc18, łącznie zmieniany 1 raz.
operacja na stringach
ja nie wyobrażam sobie nauki programowania bez dobrej książki. polecam "Thinking in C++", według mnie dobre dla początkujących.
-
- Użytkownik
- Posty: 92
- Rejestracja: 12 gru 2007, o 14:29
- Płeć: Mężczyzna
- Lokalizacja: Szczecin
- Podziękował: 65 razy
- Pomógł: 1 raz
operacja na stringach
wedlug mnie thinking in c++ jest za trudna dla poczatkujacego, za duzo informacji naraz, odrazu klasy itd i wszystko jest nieupokladane .. Sam analizuje duzo ksiazek by odpowiedziec na nurtujace mnie pytania, jednakze nie znajduje czesto odpowiedzi i dlatego zwracam sie z prosba na forum.. a nie dlatego ze nie chce mi sie czegos robic ... Naprawde duzo pracuje by byc dobry w programowaniu jednak widac ze nie kazdy musi byc bardzo inteligentny i rozumiec rzeczy dla innych banalne .. ja ma problem ze stringami i dlatego Was prosze o nakierowanie na dobra droge.. reszte zadan, zrobie sam opierajac sie na przykladach ...
-
- Użytkownik
- Posty: 374
- Rejestracja: 21 cze 2007, o 11:28
- Płeć: Mężczyzna
- Lokalizacja: Łostowice
- Pomógł: 146 razy
operacja na stringach
Myślę że wspólnymi formowymi siłami damy radę uporać się z tymi zadaniami.
Kod: Zaznacz cały
#include <stdio.h>
#define DLUGOSSTRINGA 80
/* usunięcie pierwszej małej litery */
char *usunmalalitere(char *s) {
int i, bkoniec = 0;
for(i = 0; s[i] && !bkoniec; i++)
if ((s[i] >= 'a') && (s[i] <= 'z')) {
bkoniec = 1;
for(; s[i]; i++)
s[i] = s[i + 1];
}
return s;
}
/* Obcięcie spacji z początku łańcucha znaków */
char *ltrim(char * s) {
char *p = s;
while ( *p == ' ') {
while (*p) {
*p = *(p + 1);
p++;
}
p = s;
}
return s;
}
int main(int argc, char *argv[]) {
char s[DLUGOSSTRINGA];
fgets(s, DLUGOSSTRINGA, stdin);
printf("%s\n", ltrim(s));
printf("%s\n", usunmalalitere(s));
return 0;
}
-
- Użytkownik
- Posty: 92
- Rejestracja: 12 gru 2007, o 14:29
- Płeć: Mężczyzna
- Lokalizacja: Szczecin
- Podziękował: 65 razy
- Pomógł: 1 raz
operacja na stringach
Wielkie dzieki Smiechowiec teraz zabieram sie za doglebna analize zadania ...
Co do tytulu tematu, nie mialem lepszego pomyslu :d Stringi zawsze rozbudzaja wyobraznie i przyciagaja ciekawskie spojrzenia (pewnie dlatego tyle osob odwiedzilo ten temat )
Sry za ot .. Pozdrawiam
Co do tytulu tematu, nie mialem lepszego pomyslu :d Stringi zawsze rozbudzaja wyobraznie i przyciagaja ciekawskie spojrzenia (pewnie dlatego tyle osob odwiedzilo ten temat )
Sry za ot .. Pozdrawiam
-
- Użytkownik
- Posty: 374
- Rejestracja: 21 cze 2007, o 11:28
- Płeć: Mężczyzna
- Lokalizacja: Łostowice
- Pomógł: 146 razy
operacja na stringach
Jeśli chodzi o opis funkcji do działania na stringach to proponuję stronę
Kod: Zaznacz cały
#include <stdio.h>
#define DLUGOSSTRINGA 80
/* Ununięcie powtarzających się po sobie znaków tzw dubletów */
char *usundublety(char * s) {
char *p = s, *pom;
while (*p) {
if (*p == *(p + 1)) {
pom = p;
while (*pom) {
*pom = *(pom + 1);
pom++;
}
}
else
p++;
}
return s;
}
/* Wyrówanie tekstu do n znaków spacjami */
char *wyrownajtekst(char *s, int n) {
int i, j;
for(i = 0; s[i] && (s[i] != '\n'); i++);
if (i < n) {
for(j = i; j < n; j++)
s[j] = ' '; /* dodajemy spacje */
s[j] = 0; /* dodajemy znak końca łańcuch tekstowego */
}
return s;
}
int main(int argc, char *argv[]) {
char s[DLUGOSSTRINGA];
int i;
fgets(s, DLUGOSSTRINGA, stdin);
for(i = 0; i < 20; i++)
printf("%i", (i + 1) % 10);
printf("\n%s<-tu sie konczy\n", wyrownajtekst(s, 20));
puts("Usuwamy powtorzenia");
printf("%s<-tu sie konczy\n", usundublety(s));
return 0;
}
-
- Użytkownik
- Posty: 311
- Rejestracja: 15 mar 2007, o 16:52
- Płeć: Mężczyzna
- Lokalizacja: Lublin
- Podziękował: 28 razy
- Pomógł: 54 razy
operacja na stringach
Ale zadania, które tutaj podałeś można zrobić po paru godzinach nauki programowania. Wystarczy chciećzxc18 pisze:Naprawde duzo pracuje by byc dobry w programowaniu
Napiszę Ci zadanie numer 3 bo chyba ono jest najtrudniejsze
Kod: Zaznacz cały
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char** argv)
{
string myStr;
string::iterator it;
cin >> myStr;
it = unique(myStr.begin(), myStr.end());
myStr.erase(it, myStr.end());
cout << myStr;
cout << endl;
system("pause");
return 0;
}
Mała uwaga do zad. 4 każdy poprawny string musi być zakończony znakiem NULL ('\0')