C++ problem

poruka: 13
|
čitano: 1.775
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
C++ problem

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

struct Adresar
    {
       string ime;
       string prezime;
       string tel;
       string adresa;
       string drzava;
       string email;
    } Korisnik[40];

int main()
{
int n;

cout << "Koliko ljudi zelite upisati u adresar?"<< endl;
cin >> n;

int i;
for(i=0;i<n;i++)
{
cout << "Osoba broj " << i+1 << ":" <<endl;   
cout << "-----------------------" << endl << endl;
   
    cout << "Ime:\n" ;
    getline(cin, Korisnik[i].ime);
    cout << endl;
   
    cout << "Prezime:\n" ;
    getline(cin, Korisnik[i].prezime);
    cout << endl;
   
    cout << "Broj telefona:\n" ;
    getline(cin,Korisnik[i].tel);
    cout << endl;
   
    cout << "Adresa:\n" ;
    getline(cin, Korisnik[i].adresa);
    cout << endl;
   
    cout << "Drzava:\n" ;
    getline(cin, Korisnik[i].drzava);
    cout << endl;
   
    cout << "Email:\n" ;
    getline(cin, Korisnik[i].email);
    cout << endl;
}
   
   
   
    return 0;
}

 

Dakle treba se napravit upis korisnika u adresar, ali imam jedan problem,

a to je sto stalno kada uđe u for petlju preskače upis imena, tj. općenito preskače prvi getline.

A kada ulazi drugi put u petlju onda ga ne preskače i sad mi ništa nije jasno gledam u ovo

već sat vremena, pa ako bi neko mogo pogledat.

 

Hvala.

 
0 0 hvala 0
15 godina
neaktivan
offline
RE: C++ problem

Koristi  samo cin i to ti se nece dogadati

 

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

struct Adresar
    {
       string ime;
       string prezime;
       string tel;
       string adresa;
       string drzava;
       string email;
    } Korisnik[40];

int main()
{
int n;

cout << "Koliko ljudi zelite upisati u adresar?"<< endl;
cin >> n;

int i;
for(i=0;i<n;i++)
{
    cout << "Osoba broj " << i+1 << ":" <<endl;  
    cout << "-----------------------" << endl << endl;
  
    cout << "Ime:\n" ;
    cin >> Korisnik[i].ime;
    cout << endl;
  
    cout << "Prezime:\n" ;
    cin >> Korisnik[i].prezime;
    cout << endl;
  
    cout << "Broj telefona:\n" ;
    cin >> Korisnik[i].tel;
    cout << endl;
  
    cout << "Adresa:\n" ;
    cin >> Korisnik[i].adresa;
    cout << endl;
  
    cout << "Drzava:\n" ;
    cin >> Korisnik[i].drzava;
    cout << endl;
  
    cout << "Email:\n" ;
    cin >> Korisnik[i].email;
    cout << endl;
}
  
  
  
    return 0;
}

 

EDIT: nakon puno zurenja u tvoj prvotni kod shvatio sam sto se dogada.

cin dodaje newline znak u buffer i to moras ocistiti.

 

cin.getline();
To dodaj prije ulaska u petlju ako zelis koristiti prvobitnu verziju sa getline()

Poruka je uređivana zadnji put ned 18.4.2010 17:18 (rustweaver).
15 godina
neaktivan
offline
C++ problem

Hvala na pomoći.

 

I samo jedini problem je bio što mi kod adrese

treba više riječi, a cin uzima samo jednu .. al

dobro sredio sam s getline .. hvala puno jos jednom.

 
0 0 hvala 0
15 godina
neaktivan
offline
RE: C++ problem

Da, vidis, toga se nisam sjetio :P

 

i nema na cemu

15 godina
offline
C++ problem

Imam malih određenih prolema:

#include <iostream>
#include <cmath>

using namespace std;

int znam(int a){
    int br;
    do{
      a/=10;
      br++;
    }while(a);
    return br;
}

int pre(int a){
    int uk=0;
    for(int x=0;x<a;x++){
        uk+=((x+1)*9*pow(10,x));
    }
    return uk;
}

int main()
{
    int n;
    cin>>n;
    int zn=znam(n);
    int br=(n-pow(10,(znam(n)-1))+1);
    cout<<br<<endl;
    return 0;
}

Program mi ispisuje nekakva nelogičan razultat kad je ovako napisano. No kad uklonim:

int zn=znam(n);

 

Program mi sada ispiše točan rezultat. Molim za pomoć!

 

EDIT:

Problem riješen

 

U funkciji znam, zaboravio sam inicijalizirati varijablu br. Zato njezina vrijednost može biti bilo što. Trebao samo samo staviti:

int br=0;

 

Tako sa funkcija sada izgleda:

 

int znam(int a){
    int br=0;
    do{
      a/=10;
      br++;
    }while(a);
    return br;
}

 

 

Unatoč glupome nadimku kojeg ne mogu promijeniti,ne igram CoD i sl.
Poruka je uređivana zadnji put pon 25.4.2011 13:35 (captain_soap_McTawish).
 
0 0 hvala 0
14 godina
neaktivan
offline
C++ problem

Pocetnik sam u C++. Radim po knjizi "Naucite programirati uz C++" i zanima me kako napisati program koji sa standarnog ulaza

ucitava 15 brojeva manjih od 30 i za svaki broj ispisuje koliko se puta pojavio i  treba po mogucnosti uvesti polje koje sadrzi 30 brojila.

 
0 0 hvala 0
17 godina
offline
C++ problem

Hoće li ti ovaj tip biti dosta:

1. kroz petju while učitaš 15 brojeva  0-30

2. deklariraš polje int veličine 30 i index polja iskoristiš kao brojač polje[broj]++

3. ispišeš polje tako da broju 0 dodijeliš vrijednost na polje[0] - dakle 0 ti se pojavila toliko puta kolika je vrijednost polja[broj]

 

bit je da samostalno implementiraš ideju da ti index polja bude brojač za pojavljivanje brojeva

 

while(brojacUnosa <15)

{

      if(broj < 30 && broj >= 0)

     {

           polje[broj]++;

           brojacUnosa++;

     }

}

Poruka je uređivana zadnji put sub 30.4.2011 14:37 (Floki).
 
0 0 hvala 0
14 godina
neaktivan
offline
Re: C++ problem
Hvala puno skuzio sam zadatak
17 godina
offline
Re: C++ problem
ivanho kaže...
Hvala puno skuzio sam zadatak

To sam htio čuti, uvijek pokušaj smisliti nekakvi koncept po kojem ćeš nešto riješiti, pa ćeš brzo učiti{#}

14 godina
neaktivan
offline
Re: C++ problem
Floki kaže...

Hoće li ti ovaj tip biti dosta:

1. kroz petju while učitaš 15 brojeva  0-30

2. deklariraš polje int veličine 30 i index polja iskoristiš kao brojač polje[broj]++

3. ispišeš polje tako da broju 0 dodijeliš vrijednost na polje[0] - dakle 0 ti se pojavila toliko puta kolika je vrijednost polja[broj]

 

bit je da samostalno implementiraš ideju da ti index polja bude brojač za pojavljivanje brojeva

 

while(brojacUnosa <15)

{

      if(broj < 30 && broj >= 0)

     {

           polje[broj]++;

           brojacUnosa++;

     }

}

 

Samo mala nadopuna kolega... {#}: Ako znaš koliko puta se nešto treba ponoviti najbolje bi bilo koristiti for petlju. While je pogodnija kada se broj ponavljanja ne zna. Npr.:

 

for(int i = 0; i < 15; i++){

    cin >> pom;

    brojac[pom]++;

}

 

 

 

17 godina
offline
C++ problem

Ovdje se traži nešto drugo, registriraju se samo brojevi u intervalu 0-30, i tek 15 takvih zatvara petlju.

 

napisao je "učitava 15 brojeva manjih od 30", pa sam ja to protumačio na da treba učitati 15 brojeva, nego da treba učitati 15 brojeva manjih od 30

Poruka je uređivana zadnji put sub 30.4.2011 17:01 (Floki).
 
2 0 hvala 0
14 godina
neaktivan
offline
C++ problem

Da. U pravi si. Krivo sam pročitao zadatak - pretpostavio sam da se moraju samo unositi brojevi manji od 30.

Moj PC  
0 0 hvala 0
17 godina
offline
Re: C++ problem
TracerCPP kaže...

Da. U pravi si. Krivo sam pročitao zadatak - pretpostavio sam da se moraju samo unositi brojevi manji od 30.

NP, usput "Welcome home"{#}

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice