[C++][Programi] Korištenje stringa, chara, petlje..

Započeo LuKsA, April 11, 2014, 14:39:16 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

1. Unos jedne riječi i prikazivanje samoglasnika i suglasnika iste.

#include <iostream>
#include <string>
#include <cctype>


using namespace std;

string vowel="aeiouAEIOU";
string conso="bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ";
string word;


int main()
{
    cout << "Unesite jednu rijec! Samo jedna rijec bude se izracunavala!" << endl;
   
    cin >> word;
cout<<"Suglasnici: ";
    for (int i=0; word [i] != '\0'; i++)
    {
         if ((conso.find(word[i])>= 0) && (conso.find(word[i])< conso.length()))
            { cout<<word[i]; }
    }
cout<<endl;
cout<<"Samoglasnici: ";
for (int i=0; word [i] != '\0'; i++)
    {
         if ((vowel.find(word[i])>= 0) && (vowel.find(word[i])< vowel.length()))
            {cout<<word[i]; }
    }
cout<<endl;
system("PAUSE");
return 0;
}





2. Ispisivanje svakog znaka u rečenici.

#include <iostream>
#include <string>
using namespace std;

int main()
{
  string str;
  int a;
  cout<<"Unesite recenicu!\n";
  getline(cin, str);
  for (int x=str.length()-1; x>=0; x--)
  {
cout << str[x];
  }
  cout<<endl;
}





3. Ispisivanje količine riječi u rečenici.

#include <iostream>
#include <sstream>
#include <string>

using namespace std;


int CountWords(std::string strString)
{
  int nSpaces = 0;
  unsigned int i = 0;
  while(isspace(strString.at(i)))
    i++;

  for(; i < strString.length(); i++)
  {
    if(isspace(strString.at(i)))
    {
      nSpaces++;
      while(isspace(strString.at(i++)))
        if(strString.at(i) == '\0')
          nSpaces--;
    }
  }
  return nSpaces + 1;
}

int main()
{
string str;
getline(cin, str);
cout<<CountWords(str)<<endl;
}





4. Unos broja i prikazivanje istog bez parnih / neparnih znamenaka.

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

string broj, broj2;

int main()
{
    cout << "Unesite neki broj(eve)!\n\n";
   
    cin >> broj;
broj2 = broj;
cout<<"\n\nOriginalni broj koji ste unijeli: "<<broj<<endl;
broj.erase(
  remove_if(broj.begin(), broj.end(), [](char s){ return s == '0' || s == '2' || s == '4' || s == '6' || s == '8';}),
  broj.end());
cout<<"\n\nVas broj bez parnih iznosi: ";
cout<<broj<<endl;

broj2.erase(
  remove_if(broj2.begin(), broj2.end(), [](char s){ return s == '1' || s == '3' || s == '5' || s == '7' || s == '9';}),
  broj2.end());
cout<<"\n\nVas broj bez neparnih iznosi: ";
cout<<broj2<<endl;
cout<<"\n\n";
system("PAUSE");
return 0;
}





5. Unos broja i zamjenjivanje njegovih znamenaka bez swap() funkcije.

#include <iostream>
#include <string>

using namespace std;

char broj[100];
int pos1, pos2;

int main()
{
    cout << "Unesite neki cijeli broj!\n\n";
    cin >> broj;
cout << "Sada unesite Argument A te nakon toga Argument B!\n\n";
cin >> pos1;
cin >> pos2;
pos1--;pos2--;
cout<<"\n\nOriginalni broj koji ste unijeli: "<<broj<<endl;
int Temp = broj[pos1];
broj[pos1] = broj[pos2];
broj[pos2] = Temp;
cout<<broj;
system("PAUSE");
return 0;
}
Aequam memento rebus in arduis servare mentem.

Samo jedno pitanje, bolje receno savjet/komentar, zasto koristis takve nazive varijabli? Jako los nacin jer ces jednom doci do kompliciranijeg programiranja sa tonom varijabli, klasa, itd. i onda ces se hvatati za glavu...

Nemoj samo mi reci da je to sad, kad bude kompliciranije da ces raditi po nekakvom standardu jer neces tek niti onda raditi. Jednom kad naucis krivo programirati tesko je to ispraviti ma koliko ti mislio da je ovo trivijalno. Najgore je sto ces praviti za nekoga nesto i poslije tebe ce doci neki drugi developer i "jebat ce mater" onome tko je napravio takvo smece od koda...

Nadam se da sam ti barem malo pomogao jer vidim da ti ne koristis nikakve standarde, a niti komentare u kodu koji su kljuc dobrog koda...

Neka zna onda te standarde

c/pp neko nepisano pravilo je da varijable imaju veliko pocetno slovo i UVIJEK ali UVIJEK ime varijable bude kao neki kratki opis sta ona radi ili malo slovo i onda compare rijeci pocne sa velikim slovom (a moze i povlakom u oba slucaja)...

recimo;

brojac
Brojac

korisnickoIme

ili
KorisnickoIme

ili korisnicko_Ime

Dobro ti je Zoran napisao posto si mi i sam rekao da mislis zaradjivati od programiranja to je kljuc, nitko te nikad nece sa takvim ne citljivim kodom, a i odma se uci prilagodljivosti timskom radu... Primjerice yless koji je stroj, radio je u microsoftu, sta mislis zasto vise ne radi...

njegovo znanje pada u vodu kada mu pogledas kod jer je malo rec sebican i da se izrazim ne je** ni 2 posto one koji ce raditi na kodu iza njega...
Poslednja Izmena: April 11, 2014, 19:56:46 POSLE PODNE od Slay
Kristijan Stipić

Ne kazu ljudi dzabe "Programiranje je umetnost". Slabo se u ucenju pridaje paznja izgledu jer se pocinje od svega par linija koji su laki za citanje i resevanje, ali to ostavlja "repove" za sobom koji kasnije mnogo smedaju. Moji licno misljenje je da se to uci i uz stalno forsiraje da se ispraviti. Ali opet estetika je osecaj, mislim da je refleksno napisati "KorisnickoIme" a ne "korisnickoIme" nekako to na oko izgleda logicnije.. Jednom prilikom mi je drug poslao neki program, kalkulato mislim da je bio, oni sad to rade na faxu, i ja ono gledam i "smejem" se, jer mi je nekako cudno da se kod sitnih operacija stavljaju komentari, ali eto, ima i to neku sustinu. Ja se vise oslanjam na osecaj i oko
Poslednja Izmena: April 11, 2014, 20:41:53 POSLE PODNE od Denis_Lapi

[FS] Bank Sistem
[TuT] Array Sistem (Napredna)


"Pa krenite na mene i provesce te se super ko kapetan Kuka kada levom brise dupe"

www.denis-lapi.com

Citat: Dude poslato April 11, 2014, 17:15:46 POSLE PODNE
Samo jedno pitanje, bolje receno savjet/komentar, zasto koristis takve nazive varijabli? Jako los nacin jer ces jednom doci do kompliciranijeg programiranja sa tonom varijabli, klasa, itd. i onda ces se hvatati za glavu...

Nemoj samo mi reci da je to sad, kad bude kompliciranije da ces raditi po nekakvom standardu jer neces tek niti onda raditi. Jednom kad naucis krivo programirati tesko je to ispraviti ma koliko ti mislio da je ovo trivijalno. Najgore je sto ces praviti za nekoga nesto i poslije tebe ce doci neki drugi developer i "jebat ce mater" onome tko je napravio takvo smece od koda...

Nadam se da sam ti barem malo pomogao jer vidim da ti ne koristis nikakve standarde, a niti komentare u kodu koji su kljuc dobrog koda...

To za faks bilo zato i koristim, naravno da bi koristio i koristio sam komentare kod vecih stvari, ali zasto da koristim za tih 20-50 linija koda komentare i neke specificirane nazive varijabli, polja koristim tek tolko jer smo isto morali.

Znam za te standarde u vezi naziva varijabli i primjenjujem ih, ali eto u ovim kodovima sam ih ne smatram da je potrebno koristit (mada razumijem da je sad trecoj osobi tesko predocit ako ima npr. 20 polja u nekom integeru, i onda za svaki se nesto assigna, ali to je mali zadatak i zato to radim :) )
Aequam memento rebus in arduis servare mentem.

Mozes li malo da mi pojasnis ove delove? Retko radim sa inputom teksta al ko zna mozda i to roknu na takmicenju: svideo mi se prvi zadatak te mi nije ovo jasno

    for (int i=0; word [i] != '\0'; i++)
    {
         if ((conso.find(word[i])>= 0) && (conso.find(word[i])< conso.length()))
            { cout<<word[i]; }
    }
cout<<endl;
cout<<"Samoglasnici: ";
for (int i=0; word [i] != '\0'; i++)
    {
         if ((vowel.find(word[i])>= 0) && (vowel.find(word[i])< vowel.length()))
            {cout<<word[i]; }
    }


na primer.. isto mi nije jasno ovo:

  for (int x=str.length()-1; x>=0; x--)
  {
cout << str[x];
  }


kao ni ovo :D haha

int CountWords(std::string strString)
{
  int nSpaces = 0;
  unsigned int i = 0;
  while(isspace(strString.at(i)))
    i++;

  for(; i < strString.length(); i++)
  {
    if(isspace(strString.at(i)))
    {
      nSpaces++;
      while(isspace(strString.at(i++)))
        if(strString.at(i) == '\0')
          nSpaces--;
    }
  }
  return nSpaces + 1;
}


Znam ja da vi imate preca posla nego da objasnjavate jednom klincu al i klinac bi da nauci nesto :P hvala unaapred i izvinite na smetnji
RESPECT: Blaeks, Yui_Sang, Gagi, Kapetan Husein, Luksa, Slay, Denis_Lapi, Zoran(Dude)

Programski jezici koje koristim: C, C#, Visual Basic, HTML, CSS, PHP (tek ucim).


Bio sam neaktivan (inace bi ti prije odgovorio) :)..

    for (int i=0; word [i] != '\0'; i++)
    {
         if ((conso.find(word[i])>= 0) && (conso.find(word[i])< conso.length()))
            { cout<<word[i]; }
    }
cout<<endl;
cout<<"Samoglasnici: ";
for (int i=0; word [i] != '\0'; i++)
    {
         if ((vowel.find(word[i])>= 0) && (vowel.find(word[i])< vowel.length()))
            {cout<<word[i]; }
    }


ide kroz svako slovo i ako slovo postoji ide pretrazuje dal postoji znak iz conso i vowel arraya (vidi gornji dio zadatka), te ih ispisuje naravno.

  for (int x=str.length()-1; x>=0; x--)
  {
cout << str[x];
  }


Pa loop petlja, ali sa decrementom a ne incrementom, uvijek svi rade loop petlje s povecanjem varijable, no ova je s smanjivanjem. (Cisto primjer da se loop petlja moze i na ovaj nacin rjesit, mada svi preferiraju increment. Ispisuje svaki znak iz tog stringa (str
  • ).)

    int CountWords(std::string strString)
    {
      int nSpaces = 0;
      unsigned int i = 0;
      while(isspace(strString.at(i)))
        i++;

      for(; i < strString.length(); i++)
      {
        if(isspace(strString.at(i)))
        {
          nSpaces++;
          while(isspace(strString.at(i++)))
            if(strString.at(i) == '\0')
              nSpaces--;
        }
      }
      return nSpaces + 1;
    }


    Ides po redu i gledas sta radi, ugl. funkcija broji rijeci u stringu (pomocu brojenja koliko recenica ima razmaka - praznih mjesta).
Poslednja Izmena: April 21, 2014, 17:34:26 POSLE PODNE od LuKsA
Aequam memento rebus in arduis servare mentem.