C++ par zadataka za objasniti

poruka: 2
|
čitano: 2.132
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
11 godina
neaktivan
offline
C++ par zadataka za objasniti

Pozdrav svima,

 

Imam par zadatka iz c++ u kojima mi nisu jasne neke stvari.

Nadam se da će se naći netko voljan...

Hvala unaprijed! :)

 

Kasnije stavim još koji zadatak.

1. ZADATAK (što točno znači ovo pom 20 i ovaj dio koda:if(strcmp(imena[i], imena[j]) > 0))

 

/* program unosi N imena i sortira ih po abecedi */

 

#include <iostream>

#include <cstring>

#define N 5

using namespace std;

 

int main()

{

   char imena[N][20], pom[20];

 

   cout << "Unesi imena:" << endl;

   for(int i = 0; i < N; i++)

     cin.getline(imena[i], 20);

 

   // sortiranje

   for(int i = 0; i < N - 1; i++)

     for(int j = i + 1; j < N; j++)

       if(strcmp(imena[i], imena[j]) > 0)

       {

         strcpy(pom, imena[i]);

         strcpy(imena[i], imena[j]);

         strcpy(imena[j], pom);      

       } 

 

   cout << endl << "Imena sortirana po abecedi su:" << endl;

   for(int i = 0; i < N; i++)

     cout << imena[i] << endl;

 

   // kraj programa

   char z;

   cin >> z;

   return 0;

 

}

 

2. ZADATAK (nije mi jasna for int petlja)

 

/* program unosi niz znakova i od njega formira novi u 

  kojem ce ostaviti samo slova unesenog teksta */

 

#include <iostream>

#include <cstring>

using namespace std;

 

int main()

{

   char text1[256], text2[256], ;

 

   cout << "Unesi neki string: ";

   cin.getline(text1, 256);

 

   for(int i = 0; i < strlen(text1); i++)

   {

     if(((text1[i] >= 'A') && (text1[i] <= 'Z')) ||

       ((text1[i] >= 'a') && (text1[i] <= 'z')))

     {

       text2[j] = text1[i];

       j++;    

     }

   }

   text2[j] = '\0';

 

   cout << "Formirani string je " << text2 << endl;

 

   // kraj programa

   char z;

   cin >> z;

   return 0;

 

}

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Re: C++ par zadataka za objasniti
Denon94 kaže...

Pozdrav svima,

 

Imam par zadatka iz c++ u kojima mi nisu jasne neke stvari.

Nadam se da će se naći netko voljan...

Hvala unaprijed! :)

 

Kasnije stavim još koji zadatak.
 

Postoji tema za sve vezano uz C++, sve buduće upite postavi tamo.

http://www.bug.hr/forum/topic/programiranje/programiranje-c-pitanja-odgovori/98845.aspx

 

Denon94 kaže...
1. ZADATAK (što točno znači ovo pom 20 i ovaj dio koda:if(strcmp(imena[i], imena[j]) > 0))

 

/* program unosi N imena i sortira ih po abecedi */

 

#include <iostream>

#include <cstring>

#define N 5

using namespace std;

 

int main()

{

   char imena[N][20], pom[20];

 

   cout << "Unesi imena:" << endl;

   for(int i = 0; i < N; i++)

     cin.getline(imena[i], 20);

 

   // sortiranje

   for(int i = 0; i < N - 1; i++)

     for(int j = i + 1; j < N; j++)

       if(strcmp(imena[i], imena[j]) > 0)

       {

         strcpy(pom, imena[i]);

         strcpy(imena[i], imena[j]);

         strcpy(imena[j], pom);      

       } 

 

   cout << endl << "Imena sortirana po abecedi su:" << endl;

   for(int i = 0; i < N; i++)

     cout << imena[i] << endl;

 

   // kraj programa

   char z;

   cin >> z;

   return 0;

 

}

strcmp funkcija služi za uspoređivanje dva stringa, jer njihovu jednakost ne možeš provjeriti jednostavnom uporabom operatora jednakosti.

 

"pom" je pomoćni string koji služi kao privremeni spremnik pri zamjeni mjesta dvaju stringova. Prvo kopiraš sadržaj prvog stringa u pomoćni string, zatim sadržaj drugog stringa u prvi string, te konačno sadržaj pomoćnog stringa u drugi string.

 

Općenito pri zamijeni vrijednosti dviju varijabli trebaš jednu pomoćnu koja će ti privremeno držati vrijednost jedne od njih. Zamisli to kao da imaš dvije posude, recimo da se u jednoj nalazi ocat u drugoj voda. Kako prelijevanjem zamijeniti sadržaj posuda, a da se ne pomiješa pri tome? Treba ti treća posuda u koju ćeš privremeno uliti sadržaj jedne od ove dvije.

 

Denon94 kaže...
2. ZADATAK (nije mi jasna for int petlja)

 

/* program unosi niz znakova i od njega formira novi u 

  kojem ce ostaviti samo slova unesenog teksta */

 

#include <iostream>

#include <cstring>

using namespace std;

 

int main()

{

   char text1[256], text2[256], ;

 

   cout << "Unesi neki string: ";

   cin.getline(text1, 256);

 

   for(int i = 0; i < strlen(text1); i++)

   {

     if(((text1[i] >= 'A') && (text1[i] <= 'Z')) ||

       ((text1[i] >= 'a') && (text1[i] <= 'z')))

     {

       text2[j] = text1[i];

       j++;    

     }

   }

   text2[j] = '\0';

 

   cout << "Formirani string je " << text2 << endl;

 

   // kraj programa

   char z;

   cin >> z;

   return 0;

 

}

Što ti nije jasno u vezi petlje? Petlja ide od nule do duljine stringa text1. U tijelu petlje se provjerava je li trenutni znak u stringu text1 slovo, ako je slovo kopira ga se u text2, ako nije slovo potpuno ga se ignorira. Time dobiješ rezultat da text2 sadrži samo slova (ne razmake, ne brojke, ne interpunkcijske i ostale znakove).

 

Da bi ti bilo jasno po kojem principu radi ta usporedba upoznaj se sa ASCII tabelom znakova:

http://www.asciitable.com/

 

Kao što vidiš svakom znaku je dodijeljen neki broj (ASCII kod). Znači brojčane vrijednosti tih znakova je moguće uspoređivati kao i svake druge brojeve (malo slovo 'a' je 97, veliko slovo 'X' je 88, itd...).

To understand what recursion is, you must first understand recursion.
Poruka je uređivana zadnji put sri 4.6.2014 20:35 (rustweaver).
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice