Sortiranje charova u C++-u

poruka: 2
|
čitano: 4.382
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
Sortiranje Charova u C++

Zadatak 2: Napisati C program koji će učitati tri znaka A, B i C. Program prvo ispisuje ta tri
znaka na ekran. Ako su svi učitani znakovi slova engleske abecede, treba ih poredati uzlazno
po abecedi i tako ih ispisati na ekran. Pri tome su mala slova prije velikih.
Ako barem jedan od učitanih znakova nije slovo engleske abecede ispisati odgovarajuću
poruku na ekran i završiti program.
Primjer:
Ulaz: f B b
Ispis: b B f

 

#include<stdio.h>

void main()
{
    char a,b,c,art,max,min,sred;
    scanf("%c %c %c",&a,&b,&c);
    printf("%c %c %c \n",a,b,c);
   
   
    min=c;
    if (a<b && a<c) {min=a;}
    if (b<a && b<c) {min=b;}
    if (c<a && c<b) {min=c;}
   
    max=a;
    if (a>b && a>c) {max=a;}
    if (b>a && b>c) {max=b;}
    if (c>a && c>b) {max=c;}
   
    if (a<max && a>min)  {sred=a;}
    if (b<max && b>min)  {sred=b;}
    if (c<max && c>min)  {sred=c;}

}

 

ovo je dio koda koji poredava slova po abedeci, ali su prvo velika pa mala (zbog njihove ascii vrijednosti),

pa bi fino zamolija nekoga da napise kako da ih svrstava po uvjetu zadatka i da napise konacni uvijet za americka slova

hvala unaprijed

 
0 0 hvala 0
17 godina
moderator
online
Re: Sortiranje Charova u C++

Zaboravi na min, max i sred. Ne trebaju ti, s obzirom da postoji funkcija swap koja će zamijeniti vrijednosti dviju varijabli.

 

Dakle, logika ide - ako je b < a, onda zamijeni mjesta ta dva člana, dakle swap(b, a). Uglavnom, imaš tri zamjene mjesta i pri svakoj provjeravaš je li desniji manji od lijevijeg (znači, provjeravaš je li b<a, je li c<b, ali ne provjeravaš je li a<b).

 

Prvo to napravi - znači, da se ne obazira jesu li u pitanju velika ili mala slova.

 

 

 

Kad to napraviš, onda se pozabavi usporedbom slova, odnosno kad treba mijenjati mjesta članovima. Dakle, umjesto operatora < napišeš si funkciju jeManje(desno, lijevo). Umjesto desno i lijevo šibaš ista slova kao kad uspoređuješ je li b<a ili c<b ili c<a, naravno s istim slovima. Dakle, umjesto uspoređivanja b<a, poslat ćeš funkciji argumente jeManje(b, a), pri čemu će b biti referenca/varijabla desno, a referenca/varijabla lijevo.

 

I sad ide ključna caka. Kad je desno manji od lijevo? Razbijao sam si s ovime glavu neko vrijeme... Stvar je u "rangu" slova (je li slovo veliko ili malo) i imaš dva slučaja:

  1. ako su slova istog ranga (dakle ako su i desno i lijevo mala slova ili su pak i desno i lijevo velika slova), onda ide jednostavna usporedba je li desno < lijevo
  2. ako su slova različitog ranga (znači, jedno veliko, a drugo malo), onda treba zamijeniti članove samo ako je desno slovo malo slovo (u zadatku stoji da mala slova trebaju biti ispred, tj. s lijeve strane velikih).

Eto, to je cijela mudrost. Tajna je u rangovima slova.

 

 

Poruka je uređivana zadnji put sub 5.11.2011 6:53 (mbaksa).
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice