volteq Opublikowano 9 Lutego 2004 Zgłoś Opublikowano 9 Lutego 2004 Witam, zaraz sie wkurze calkowicie :), nie moge wymyslec programu ktory znajdzie znak o maxymalnym kodzie ascii w podanym jakims lancuchu oraz jak go wypisac na ekranie? Tzn: #includy ...main(){char s[100], s2[100];int i, j=0, dl, dl2, max;/* wczytanie lancucha */gets(s);/* wybor niealfanumerycznych i wpisanie do drugiego lancucha */dl=strlen(s);for(i=0; j<dl; i++){if(s[i]>='a' && s[i]<='z')continue;if(s[i]>='0' && s[i]<='9')continue;else{s2[j]=s[i];j++;s2[j]=NULL;}}/* szukamy znaku o najwyzszym kodzie ascii*/dl2=strlen(s2);for(j=0; j<dl2; j++)...............................??????????/* i mam gwozdzia :) */ Moze ktos pomoc :?: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 9 Lutego 2004 Zgłoś Opublikowano 9 Lutego 2004 typedef unsigned char uchar;uchar maxascii(uchar *str){uchar max = str[0], i;for (i = 1; i < strlen(str); i++) if (str[i] > max) max = str[i];return max;}printf("Max ascii: %cn", maxascii("jakis string")); Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
volteq Opublikowano 9 Lutego 2004 Zgłoś Opublikowano 9 Lutego 2004 Hah, nie ma latwiejszego sposobu? Bo szczerze powiem ze nie kumam do konca tego zapisu :? Zdefiniowane jest uchar, a co z tym zrobic : uchar maxascii(uchar *str) // o co chodzi :roll: { uchar max = str[0], i; Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Megabyte Opublikowano 9 Lutego 2004 Zgłoś Opublikowano 9 Lutego 2004 Hah, nie ma latwiejszego sposobu? Bo szczerze powiem ze nie kumam do konca tego zapisu :? Zdefiniowane jest uchar, a co z tym zrobic : uchar maxascii(uchar *str) // o co chodzi :roll: { uchar max = str[0], i; uchar jest zdefiniowany po to żeby porównywać znaki jako liczby bez znaku a nie jako liczby ze znakiem. Jezeli nie chcesz deklarowac typu uchar moze poprostu ten kod zapisac tak: unsigned char maxascii(unsigned char *str) // o co chodzi :roll: { unsigned char max = str[0], i; Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
volteq Opublikowano 10 Lutego 2004 Zgłoś Opublikowano 10 Lutego 2004 Ale lipa, niestety declaration syntax error, zapewne zle wpisalem ale jestem zielony i prosze o lopatologiczna pomoc. Wklejam kod, niech ktos luknie i to poprawi pozadnie, bede bardzo wdzieczny: dl2=strlen(s2); // s2-> podany wczesniej lancuch unsigned char maxascii(unsigned char *s2) // te definicje mi psuja wszystko { unsigned char max=s2[0], g; for(g=1; g<dl2; g++) if(s2[g]>max) max=s2[g]; return max; }printf("Znak o najwyzszym kodzie ascii to:%cn", maxascii(s2)); Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Megabyte Opublikowano 10 Lutego 2004 Zgłoś Opublikowano 10 Lutego 2004 Ale lipa, niestety declaration syntax error, zapewne zle wpisalem ale jestem zielony i prosze o lopatologiczna pomoc. Wklejam kod, niech ktos luknie i to poprawi pozadnie, bede bardzo wdzieczny: dl2=strlen(s2); // s2-> podany wczesniej lancuch unsigned char maxascii(unsigned char *s2) // te definicje mi psuja wszystko { unsigned char max=s2[0], g; for(g=1; g<dl2; g++) if(s2[g]>max) max=s2[g]; return max; }printf("Znak o najwyzszym kodzie ascii to:%cn", maxascii(s2)); Sama funkcja maxascii jest dobra. Spróbowałem skompilować i jest ok. Błąd masz chyba gdzieś w innej części programu. Może wklej cały kod programu, wtedy może wyjaśni się co jest nie tak. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
volteq Opublikowano 10 Lutego 2004 Zgłoś Opublikowano 10 Lutego 2004 Caly kod: #include <stdio.h>#include <conio.h>#include <string.h>/* program wyszukuje podanego przez nas znaku i wypisuje jego pozycje*/main(){char dany[100], szuk[10], s2[100];int pozycja, dl, i, j=0, dl2;clrscr();puts("Podaj lancuch:n");gets(dany);puts("Podaj znak do wyszukania:n");gets(szuk);dl=strlen(dany); //dlugosc pierwszego lancuchapozycja=strcspn(dany, szuk); //pozycja znaku w lancuchufor(i=0; i<dl; i++) // szukanie niealfanumerycznych :){if(dany[i]>='a' && dany[i]<='z')continue;if(dany[i]>='0' && dany[i]<='9')continue;else //jesli nie a-z i 0-9 to musza byc znaki i je wpisujemy do drugiego lancucha{s2[j]=dany[i];j++;s2[j]=NULL;}} //no i teraz chce znalezc max z tych znakow i na 100% cos zle umiescilem :( unsigned char maxascii(unsigned char *s2) { unsigned char max=s2[0], g; for(g=1; g<dl2; g++) if(s2[g]>max) max=s2[g]; return max; }puts("Nowy lancuch:n");puts(s2);printf("Szukany znak jest na pozycji %dn", pozycja+1);printf("Znak o najwyzszym kodzie ascii to:%cn", maxascii(s2));getch();return 0;} Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Megabyte Opublikowano 11 Lutego 2004 Zgłoś Opublikowano 11 Lutego 2004 No więc twój problem polega na tym że nie wiesz jak pisać funkcje. To co napisał Ci FiDO to jest właśnie funkcja a całość powinna być rozmieszczona mniej więcej tak: unsigned char maxascii(unsigned *char){....}int main(){....}Tak więc definicje funkcji maxascii umiesciles w zlym miejscu. Co do samego programu nie sprawdzałem poprawności ponieważ już prawie zasypiam. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
volteq Opublikowano 11 Lutego 2004 Zgłoś Opublikowano 11 Lutego 2004 Dzieki Megabyte zakumalem i dziala :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...