Ĺadny brzuch
Ma to być program do którego wprowadzamy ciąg znaków, następnie jakiś jeden znak który zostanie wykluczony z tego ciągu.
Zrobiłem takie coś, ale nie działa zbyt dobrze.
#include <stdio.h> #include <string.h> #define MT 30 void czytaj(char*, char); void zmiana(char*, char); int main() { char tab[MT]; char znak; czytaj(tab,znak); printf("\n\n\tNapisales: "); printf("%s", tab); printf("\t\nPodales znak: "); printf("%c", znak); printf("\n\n\n"); zmiana(tab, znak); printf("\nPo odjeciu znaku od ciagu znakow zostanie:\n"); printf("%s", tab); getch(); return 0; } void czytaj(char* t, char z) { printf("Podaj ciag znakow: "); fgets(t, strlen(t), stdin); printf("Podaj znak jaki ma zostac usuniety: "); scanf("%c", &z); } void zmiana(char* n, char z) { int i; char v = ' '; for(i=0; i<strlen(n); ++i) { if(n[i] == z) n[i] = v; } }
Da się to jakoś poprawić żeby działało poprawnie ? Czy ogólna koncepcja jest dobra? Jak tak to jak to zmusić do działania.
Użytkownik katarina edytował ten post 30 styczeń 2010, 11:13
Takie poprawki:
void czytaj(char*, char); --> void czytaj(char*, char*);
Oczywiście konsekwentnie zmień w definicji.
Do funkcji czytaj przekazujesz adres zmiennej znak
czytaj(tab,znak); --> czytaj(tab,&znak);
i zmieniasz konsekwentnie w funkcji czytaj
scanf("%c", &z); --> scanf("%c", z);
Użytkownik imcpan edytował ten post 27 styczeń 2010, 11:43
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Zrobiłem takie coś, ale nie działa zbyt dobrze.
#include <stdio.h> #include <string.h> #define MT 30 void czytaj(char*, char); void zmiana(char*, char); int main() { char tab[MT]; char znak; czytaj(tab,znak); printf("\n\n\tNapisales: "); printf("%s", tab); printf("\t\nPodales znak: "); printf("%c", znak); printf("\n\n\n"); zmiana(tab, znak); printf("\nPo odjeciu znaku od ciagu znakow zostanie:\n"); printf("%s", tab); getch(); return 0; } void czytaj(char* t, char z) { printf("Podaj ciag znakow: "); fgets(t, strlen(t), stdin); printf("Podaj znak jaki ma zostac usuniety: "); scanf("%c", &z); } void zmiana(char* n, char z) { int i; char v = ' '; for(i=0; i<strlen(n); ++i) { if(n[i] == z) n[i] = v; } }
Da się to jakoś poprawić żeby działało poprawnie ? Czy ogólna koncepcja jest dobra? Jak tak to jak to zmusić do działania.
Użytkownik katarina edytował ten post 30 styczeń 2010, 11:13
Takie poprawki:
void czytaj(char*, char); --> void czytaj(char*, char*);
Oczywiście konsekwentnie zmień w definicji.
Do funkcji czytaj przekazujesz adres zmiennej znak
czytaj(tab,znak); --> czytaj(tab,&znak);
i zmieniasz konsekwentnie w funkcji czytaj
scanf("%c", &z); --> scanf("%c", z);
Użytkownik imcpan edytował ten post 27 styczeń 2010, 11:43