Administratorzy gnysek Opublikowano 2 Marca 2009 Administratorzy Udostępnij Opublikowano 2 Marca 2009 Słuchajcie, na jutro na zajęcia mam napisać program, ale zbytnio nie mam czasu, niestety jak ja tego nie zrobię to cała grupa będzie nieprzygotowana :P Zadanie nie jest trudne, chociaż nieco bez sensu. Oczywiście program jest w C (nie w C++ !!) User podaje WZORZEC oraz TEKST, załóżmy, że wzorzec to char[5], a tekst to char[20]. Program podkreśla gwiazdkami fragmenty słowa TEKST które są takie jak WZORZEC, np.: //wzorzec = ala, tekst = ala ma kota i tralalala > ala ma kota i tralalala > *** *** *** Nie można korzystać z żadnej gotowej funkcji, trzeba napisać samemu (może być scanf / getchar, pętle for i while etc.). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kryniak Opublikowano 2 Marca 2009 Udostępnij Opublikowano 2 Marca 2009 licencja unwarnware: #include <stdio.h> #include <stdlib.h> #include <string.h> #define ROZM_W 3 // rozmiar wzorca #define ROZM_T 30 // rozmiar tekstu char wzorzec[128]; // dalem wszedzie 128 zeby segfaulta nie bylo. char tekst[128]; char gwiazdki[128]; int main() { int i=0,j; char *tmp = malloc(128); printf("Podaj wzorzec: "); scanf("%s",wzorzec); printf("Podaj tekst:\n"); while (i++<2) fgets(tekst, 127, stdin); i=0; while (i<ROZM_T) { *(tmp)=0; for (j=0;j<ROZM_W;j++) sprintf(tmp,"%s%c",tmp,tekst[i+j]); if (strcmp(tmp,wzorzec)!=0) { if (gwiazdki[i]!='*') gwiazdki[i]=' '; } else { for (j=0;j<ROZM_W;j++) { gwiazdki[i+j]='*'; } } i++; } printf("%s",gwiazdki); free(tmp); return 0; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Marca 2009 Autor Administratorzy Udostępnij Opublikowano 2 Marca 2009 Ale napisałem, że nie mogę korzystać z gotowych funkcji tylko mam napisać je samemu, więc czemu wyskakujesz z strcmp ? Własnie o to chodzi, ze ma byc bez tego :) Wszelkie stdlib.h czy string.h odpadają :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Snake Opublikowano 2 Marca 2009 Udostępnij Opublikowano 2 Marca 2009 No to może: #include <stdio.h> #include <string.h> #include <stdlib.h> void UnderlineSubstring( const char* aSubstring, const char* aString ) { int i, j; int substringLength = strlen( aSubstring ); int stringLength = strlen( aString ); char* underline = (char*) malloc( stringLength + 1 ); memset( underline, ' ', stringLength ); underline[stringLength] = 0; for ( i = 0; i < stringLength; i++ ) { for ( j = 0; aString[i] == aSubstring[j] && j < substringLength; j++ ) if ( j == substringLength - 1 ) { memset( underline + i - (substringLength - 1), '*', substringLength ); break; } else i++; } printf( "%s\r\n", aString ); printf( "%s\r\n", underline ); free( underline ); } int main( int argc, char* argv[] ) { char text[0x200]; char substring[0x200]; printf( "Tekst: " ); gets( text ); printf( "Wzorzec: " ); gets( substring ); UnderlineSubstring( substring, text ); return 0; } EDIT: Wszelkie stdlib.h czy string.h odpadają Damn, nie zauważyłem tego ;d Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 2 Marca 2009 Udostępnij Opublikowano 2 Marca 2009 #define LENGTH_TEXT 20 #define LENGTH_PATTERN 5 char text[LENGTH_TEXT+1]; char pattern[LENGTH_PATTERN+1]; char result[LENGTH_TEXT+1]; int main() { printf("Wzorzec:\n"); scanf("%s",pattern); printf("\nTekst:\n"); scanf("%s",text); int pos; int spos; for(pos=0;pos<LENGTH_TEXT;pos++) { for(spos=0;spos<LENGTH_PATTERN&&pos+spos<LENGTH_TEXT;spos++) { if(text[pos]==pattern[spos]) result[pos]='*'; else result[pos]=text[pos]; // result[pos]=' '; pos++; } } result[LENGTH_TEXT]=0; printf(result); } EDIT: Poprawione :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 2 Marca 2009 Udostępnij Opublikowano 2 Marca 2009 C nie umiem więc masz w C++ to sobie przerobisz czy coś: #include<cstdio> #include <cstdlib> using namespace std; int main() { char t[1000]; char w[1000]; int dl_t=0; int dl_w=0; char z='a'; for(int i=0;1;i++) { scanf("%c",&z); if(z=='\n') { dl_w=i; break; } w=z; } z='a'; for(int i=0;1;i++) { dl_t=i+1; scanf("%c",&z); if(z=='\n') { dl_t=i; break; } t=z; } int j=0; for(int i=0;i<dl_t;i++) { if(t!=w[i-j]) { j++; printf(" "); while(j!=i+1) { printf(" "); j++; } } else if(i-j+1==dl_w) { while(j!=i) { printf("*"); j++; } j++; printf("*"); } } system("PAUSE"); return 0; } Chyba dobrze działa :P EDIT: O kurde tyle odpowiedzi przede mną xD (nie odświerzyłem przed wysłaniem) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kryniak Opublikowano 2 Marca 2009 Udostępnij Opublikowano 2 Marca 2009 Napisałem własną funkcję strcmp() i wywaliłem te nagłówki. Licencja pozostaje niezmieniona. #include <stdio.h> #define ROZM_W 3 #define ROZM_T 30 char wzorzec[128]; char tekst[128]; char gwiazdki[128]; int strcmp(const char *s1,const char *s2) { int i=0; while (*(s1+i) != 0 && *(s2+i) != 0) { if (*(s1+i)>*(s2+i)) return 1; if (*(s1+i)<*(s2+i)) return -1; i++; } return 0; } int main() { int i=0,j; char tmp[128]; printf("Podaj wzorzec: "); scanf("%s",wzorzec); printf("Podaj tekst:\n"); while (i++<2) fgets(tekst, 127, stdin); i=0; while (i<ROZM_T && tekst[i]!=0) { *(tmp)=0; for (j=0;j<ROZM_W;j++) sprintf(tmp,"%s%c",tmp,tekst[i+j]); if (strcmp(tmp,wzorzec)!=0) { if (gwiazdki[i]!='*') gwiazdki[i]=' '; } else { for (j=0;j<ROZM_W;j++) { gwiazdki[i+j]='*'; } } i++; } printf("%s",gwiazdki); return 0; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Marca 2009 Autor Administratorzy Udostępnij Opublikowano 2 Marca 2009 Dobra, teraz to mam aż za dużo odpowiedzi :P Będę musiał jednak posiedzieć i sam to napisać, zeby było najprościej jak sie da, bo inaczej nikt nie zrozumie o co chodzi :P Edit: kryniak, zapomniałem o nagrodzie :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kryniak Opublikowano 2 Marca 2009 Udostępnij Opublikowano 2 Marca 2009 Dziękuję, będę grzeczny :angel_not: . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Marca 2009 Autor Administratorzy Udostępnij Opublikowano 2 Marca 2009 :) To ja się muszę jeszcze jakoś wskaźników pozbyć żeby koledzy studenci załapali :P Wiem na czym polegał mój błąd - facet wymyślił sobie ten program i stwierdził, ze w sumie nie wie jak go napisac, pewnie getchar będzie najlepsze, tymczasem kupa i nieprawda scanf jednak praktyczniejszy :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kryniak Opublikowano 2 Marca 2009 Udostępnij Opublikowano 2 Marca 2009 Scanf jest dobry, ale gdy ma się do przetworzenia tekst ze spacjami to lepsze będzie użycie fgets() :). edit: To jakiego masz faceta, że nie wie jak go napisać? :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Boro Casso Opublikowano 2 Marca 2009 Udostępnij Opublikowano 2 Marca 2009 Wiem na czym polegał mój błąd - facet wymyślił sobie ten program i stwierdził, ze w sumie nie wie jak go napisac U mnie jest podobna sytuacja, facet nie wie jak coś napisać do daje mi do domu :|. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
getStringFromObject Opublikowano 2 Marca 2009 Udostępnij Opublikowano 2 Marca 2009 Dobra, jedno pytanie, czy ktokolwiek pomyslal chociarz przez chwile o analizie zlozonosci i optymalnosci algorytmu ;P? Takie bruty to se mozecie o kant dupy rozbic, dajcie milion znakow i i milionowy klucz a sobie troche poczekacie. Nie lubie tekstówek :/ ale moze do jutra zdaze cos klepnac. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Marca 2009 Autor Administratorzy Udostępnij Opublikowano 2 Marca 2009 a po co optymalność ? to nie są zawody który program działa szybciej, celem jest zrobienie programu który porówna 3-4 znaki z ciągiem 20. Program ma być MAKSYMALNIE prosty. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
getStringFromObject Opublikowano 3 Marca 2009 Udostępnij Opublikowano 3 Marca 2009 Nie no, jak zadawala cie takie rozwiazanie to spoko, po prostu myslalem ze to ma byc zadanie na poziomie studiow a nie szkoly podstawowej :/ Sorki ze nie wysylam kodu ale wczoraj nie dalem rady juz nic zrobic po powrocie do domu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Marca 2009 Autor Administratorzy Udostępnij Opublikowano 3 Marca 2009 No poziom studiów, ale to są raptem trzecie zajęcia z języków programowania, pamiętaj, że 80% osób tam pierwszy raz w życiu programuje. Nie każdy robi to tak długo jak ja. Ostatecznie program wyglądał tak: #include <stdio.h> #define LONG 30 void pisz(int ile, char znak) { int i; for (i=0; i<ile; i++) { printf("%c",znak); } } main () { char wzorzec[LONG],tekst[LONG]; int i,j,dlug_w,roznic; printf("Podaj wzorzec: "); scanf("%s",&wzorzec); printf("Podaj tekst w ktorym mam szukac: "); i=0; while (i<2) { fgets(tekst, LONG, stdin); i++; } printf("\n"); printf("%s",tekst); //poszukaj dlugosci pierwszego wyrazu dlug_w = 0; while ( wzorzec[dlug_w] != 0 && dlug_w < LONG ) dlug_w++; //przelec go ladnie for (i=0; i<LONG; i++) { if (tekst[i]==0) break; roznic = 0; for (j=0; j<dlug_w; j++) { if ( tekst[i+j]!= wzorzec[j] ) { roznic ++; } } if (roznic == 0) { pisz(dlug_w,'*'); i = i + dlug_w - 1; } else pisz(1,' '); } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 3 Marca 2009 Udostępnij Opublikowano 3 Marca 2009 Nie no, jak zadawala cie takie rozwiazanie to spoko, po prostu myslalem ze to ma byc zadanie na poziomie studiow a nie szkoly podstawowej :/ Sorki ze nie wysylam kodu ale wczoraj nie dalem rady juz nic zrobic po powrocie do domu. Znajdź mi pierwsze lepszą szkołe ponadgimnazjalna z takim zadaniem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
getStringFromObject Opublikowano 3 Marca 2009 Udostępnij Opublikowano 3 Marca 2009 Wprawdzie w ELI ale moje gimnazjum :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 3 Marca 2009 Udostępnij Opublikowano 3 Marca 2009 Znajdź mi pierwsze lepszą szkołe ponadgimnazjalna z takim zadaniem. w mojej na zadanie pisałem np: mapowania sferyczne i cylindryczne, Quadtrees, dynamiczne oświetlenie per-pixel, optymalizacja zarządzania zasobami, kompresje, vfs. Tak więc all zależy tylko i wyłącznie od nauczyciela ;] Wprawdzie w ELI ale moje gimnazjum nom robiliśmy zadanka z olimpiady gimnazjalnej rok temu były masakryczne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 3 Marca 2009 Autor Administratorzy Udostępnij Opublikowano 3 Marca 2009 Pytanie: czy był to obowiązkowy materiał, czy zadanie na 6 ? Bo w materiale nauczania raczej tego nie ma. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 3 Marca 2009 Udostępnij Opublikowano 3 Marca 2009 To nie był ani na 6 ani obowiązkowy materiał. Po prostu mam fajnego nauczyciela, który ma gdzieś materiał tak więc word i inne badziewia omijaliśmy szerokim łukiem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 3 Marca 2009 Udostępnij Opublikowano 3 Marca 2009 Pozazdrościć, chociaż jestem jeszcze w gimnazjum. ;P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 3 Marca 2009 Udostępnij Opublikowano 3 Marca 2009 A co tu zazdrościć wszystko możesz samemu robić... jak będziesz miał jakiś problem zawsze możesz kogoś zapytać i po sprawie a infe w szkole po prostu sobie odpuścić. 5h dziennie nad programowaniem zamiast graniem po sieci i po kilku latach już możesz mówić sobie programista. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matthew Opublikowano 3 Marca 2009 Udostępnij Opublikowano 3 Marca 2009 @Will: Fajny nauczyciel, ale mój z gimnazjum był jeszcze lepszy, bo grał z nami w Q2/3 i War3 ;] Wg. mnie uczenie się Worda, Excela, Power Pointa itp. rzeczy jest zbędne. Prawdziwy informatyk znajdzie sobie lepszy program, do tego Microsoft robi aktualizacje tych programów, więc część nauczonych rzeczy w gimnazjum "nie zadziała" w szkole średniej + nie są darmowe, więc teoretycznie w domu się nie pouczysz :P I ostatni najważniejszy argument: Word ssie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 3 Marca 2009 Udostępnij Opublikowano 3 Marca 2009 Chodzi o to że u was się w szkołach coś na ten temat porusza, u mnie dupa: DZIŚ DZIECI NAUCZYMY SIĘ PISAĆ W WORDZIE, no i na kiego nam to? :> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 3 Marca 2009 Udostępnij Opublikowano 3 Marca 2009 No u nas było jeszcze trochę HTML, ale to tyle co nic. Na informatykach przez 3 lata prawie zawsze mieliśmy godz. wychowawczą :P Sam się musiałem uczyć wszystkiego, dopiero teraz w liceum na infie jest programowanie, ale straszne banały, a i tak większość klasy nie kuma... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 3 Marca 2009 Udostępnij Opublikowano 3 Marca 2009 Chodzi o to że u was się w szkołach coś na ten temat porusza, u mnie dupa: DZIŚ DZIECI NAUCZYMY SIĘ PISAĆ W WORDZIE, no i na kiego nam to? :> każdy nauczyciel jest przyzwyczajony do tępaków u mnie może 3 osoby coś wiedzą(tak mniej więcej) Część lepszych tematów zaproponowałem sam, reszta downów po pewnym czasie się zbuntowała i coś tam robią jakieś syfy a ja i tak co infe pisze swoje i omawiam z nim problemy czy spostrzeżenia lub proszę o rade w pewnym temacie. Infa to ile 3h tygodniowo? to jest nic.. kupujesz z 10 książek czytasz i piszesz.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi