Skocz do zawartości
volteq

Jak znalezc max znak w ascii

Rekomendowane odpowiedzi

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 :?:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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"));

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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;

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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;

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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));

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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;}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...