Programski jezik c++

poruka: 17
|
čitano: 2.162
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
Programski jezik c++

Evo ovako trebam kod za ispis jednakih brojeva koje unesem.Npr. ako unesem 1,2,4,5,1,4,2 da mi se ispiše da broja 1 ima uneseno 2 puta il broja 5 samo jednom.Može li se to uopće ikako izvesti?

 
0 0 hvala 0
14 godina
offline
Programski jezik c++
Sumnjam da je takvo sto moguce...
LoL NordicEU : Heineken01
 
1 0 hvala 1
17 godina
neaktivan
offline
Programski jezik c++

#include <iostream>
using namespace std;

int main() {
   
   int x(100);
   int one = 0;
   int two =0;
   int three = 0;
   int four = 0;
   int five = 0;
   int six = 0;
   int seven = 0;
   int eight = 0;
   int nine = 0;
   int ten = 0;
   
   while (x != 0) {
   
   cout << "unesite brojeve: ";
   cin >> x;
      
      if (x == 1) {
         
         one++;
         
      } else if (x == 2) {
         
         two++;
         
      } else if (x == 3) {
         
         three++;
         
      } else if (x == 4) {
         
         four++;
         
      } else if (x == 5) {
         
         five++;
         
      } else if (x == 6) {
         
         six++;
         
      } else if (x == 7) {
         
         seven++;
         
      } else if (x == 9) {
         
         nine++;
         
      }
   }
   
   cout << "Ispisano je " << one << " jedinica " << endl;
   cout << " Ispisano je " << two << " dvojka " << endl;
   cout << "Ispisano je " << three << " trojki " << endl;
   cout << "Ispisano je " << four << " cetvorki " << endl;
   cout << "Ispisano je " << five << " petica " << endl;
   cout << "Ispisano je " << six << " sestica " << endl;
   cout << "Ispisano je " << seven << " sedmica " << endl;
   cout << "Ispisano je " << eight << " osmica " << endl;
   cout << "Ispisano je " << nine << " devetki " << endl;
   
   return 0;
   
}

 
1 0 hvala 1
14 godina
offline
Programski jezik c++
Ja upisem 11 i di si sad?
LoL NordicEU : Heineken01
 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Programski jezik c++

Za brojeve do 100 (proširiti po volji):

 

#include <iostream>
using namespace std;
#define MAX 100

int main(){
    int i, pom, brojac[MAX] = {0};

    do{
       cout << "Unesi broj: ";
       cin >> pom;
       brojac[pom]++;
    }while(pom);

    for(i = 1; i < MAX; i++)
       if(brojac[i])
          cout << i << " -> " << brojac[i] << " puta\n";
    return 0;
}

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
14 godina
offline
Programski jezik c++
Bolje je koristiti mapu jer se onda mogu bez razmisljanja i masivmi brojevi upisat
LoL NordicEU : Heineken01
 
1 0 hvala 0
13 godina
neaktivan
offline
Re: Programski jezik c++

Može mi ko reć šta da stisnem za ispis jel ovo unesi broj nema kraja?

 

15 godina
neaktivan
offline
Programski jezik c++

Tracer ti je dao valjano rjesenje, koje je i najbolje a i najjednostavnije

Moj PC  
1 0 hvala 0
15 godina
offline
Re: Programski jezik c++
Griphook kaže...

Može mi ko reć šta da stisnem za ispis jel ovo unesi broj nema kraja?

 

Unos ti prestaje kad unese 0.

I would love to change the world, but they won't give me the source code
17 godina
neaktivan
offline
Re: Programski jezik c++
Griphook kaže...

Može mi ko reć šta da stisnem za ispis jel ovo unesi broj nema kraja?

 

Uneses nulu i prekinut ce ti se izvodenje programa i ispisati rezultat.

17 godina
offline
Re: Programski jezik c++
Griphook kaže...

Može mi ko reć šta da stisnem za ispis jel ovo unesi broj nema kraja?

 

Stisni 0, pa ćeš završiti program.

Tracer ti je dao ogledni algoritam, kako ćeš ga implementirati, tvoja stvar.

Poruka je uređivana zadnji put sri 8.8.2012 12:51 (Floki).
13 godina
offline
Re: Programski jezik c++
Griphook kaže...

Može mi ko reć šta da stisnem za ispis jel ovo unesi broj nema kraja?

 

Ono je isto kao da je napisao
do

{

   //radnja

}

while(pom != 0);

17 godina
offline
Re: Programski jezik c++
KKristijan kaže...
Bolje je koristiti mapu jer se onda mogu bez razmisljanja i masivmi brojevi upisat

Pa, napiši onda mapu, pače dobro je imati više rješenja, mada je ovdje korištenje indexa niza kao brojača i najjednostavnije i najbolje rješenje.

17 godina
neaktivan
offline
Re: Programski jezik c++
KKristijan kaže...
Ja upisem 11 i di si sad?

Jeb* ga jos sam "zelen" sto se tice programiranja, recimo uopce mi nije pala na pamet do...while petlja koju je iskoristio Tracer. {#}

15 godina
offline
Programski jezik c++

Evo ti moga rjesenja koje ti moze primati sve brojeve u opesgu long long, a i moze se lako promijeniti ako pozelis nesto promijeniti:

#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
#include <algorithm>
#include <cstddef>
#include <map>

using namespace std;

typedef long long llint;

template <typename type>
size_t outputWidth(type object){
   stringstream ssTemp;   
   ssTemp<<object;
   
   string sTemp;
   ssTemp>>sTemp;

   return sTemp.length();
}


template <typename K, typename V>
void printPair(const pair<K,V> output, size_t keyWidth, size_t valueWidth){
   cout<<"| "<<setw(keyWidth)<<output.first<<" | "<<setw(valueWidth)<<output.second<<" |"<<endl;
}

template <typename type>
void printRow(type object,size_t times){
   for(size_t i = 0;i<times;i++)
       cout<<object;
   cout<<endl;
}

int main(){
   map<llint, llint> numbers;
   const string numberHeader("Numbers"),timesHeader("Times");
   size_t numberWidth=outputWidth(numberHeader), timesWidth = outputWidth(timesHeader);

   llint temp;
   do{
       cin>>temp;
       numbers[temp]++;

       numberWidth = max(outputWidth(temp),numberWidth);
       timesWidth = max(outputWidth(numbers[temp]),timesWidth);
   }while(temp != 0);
   
   printRow('-',numberWidth+timesWidth+7);
   printPair(make_pair(numberHeader,timesHeader),numberWidth,timesWidth);
   printRow('-',numberWidth+timesWidth+7);
   for(map<llint,llint>::iterator it = numbers.begin(); it!= numbers.end(); it++)
       printPair(*it,numberWidth,timesWidth);   
   printRow('-',numberWidth+timesWidth+7);
   return 0;
}

I would love to change the world, but they won't give me the source code
Poruka je uređivana zadnji put sri 8.8.2012 14:07 (captain_soap_McTawish).
 
2 0 hvala 0
17 godina
offline
Programski jezik c++

Da, defaultno nepostojeći value ima vrijednost 0, dakle ovako.

A za key se uzme string, nije važno koliki je broj, za value broj njegovih ponavljanja.


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

int main () {
    map<string, int> mapa;
    map<string, int>::iterator it;
    string broj;
    int brojBrojeva;

    cin>> brojBrojeva;
    for(int i=0; i<brojBrojeva; i++)
    {
       cin>> broj;
       mapa[broj] += 1;
    }
    for(it=mapa.begin(); it!=mapa.end(); it++)
    {
       cout<< (*it).first << " " << (*it).second << endl;
    }
       
    return 0;
}

Poruka je uređivana zadnji put sri 8.8.2012 14:27 (Floki).
 
3 0 hvala 0
15 godina
offline
Re: Programski jezik c++
Floki kaže...

Zašto ne onda jednostavnije sa mapom, preko if testiraš uvjet imaš li element, ako da, povećavaš za jedan, ako ne, novi element u mapi.

Mene je to defaultnom vrijednosti nekog keya koji jos ne postoji, zbunjivalo. No pronasao sam negdje da ce defaultna vrijednost za int biti 0, pa mislim da ti taj if uvjet nije potreban. Ja sam jos u svom kodu htio fino formatirati ispis u tablicu pa sam zato ovoliko komplicirao, pa ce meni za unos:

INPUT: 23 23 23 23 23 23 23 23 23 23 23 23 1293238 990 312 8 9 0 1 2 3

OUTPUT:
-------------------
| Numbers | Times |
-------------------
|       0 |     1 |
|       8 |     1 |
|       9 |     1 |
|      23 |    12 |
|     312 |     1 |
|     990 |     1 |
| 1293238 |     1 |
-------------------

 

I would love to change the world, but they won't give me the source code
Poruka je uređivana zadnji put sri 8.8.2012 14:07 (captain_soap_McTawish).
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice