Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Khm,kad Pascalovac radi u C++...

[es] :: C/C++ programiranje :: C/C++ za početnike :: Khm,kad Pascalovac radi u C++...

[ Pregleda: 2414 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Krejmer
Stefan Savić
Učenik
Rep Srpska,Gradiška

Član broj: 200438
Poruke: 19
*.teol.net.

Sajt: www.google.rs


Profil

icon Khm,kad Pascalovac radi u C++...17.05.2010. u 21:57 - pre 168 meseci
Imam problema sa ovime,zadatak glasi da se štampaju svi savršeni brojevi od 1 do n.

Ako može neko da objasni gdje sam pogriješio.
Code:
#include <stdio.h>
#include <iostream>
using namespace std;
bool savrsen(int x)
{
     int i,zb;
     for (i=1;i<=x/2;i++)
     {
       if (x % i==0) zb+=i;
     }
     if (zb==x) return true;
     else return false;
}
int main()
{
    int broj,i,n;
    bool Yes;
    printf("Savrseni brojevi do:\n");
    printf("n=");
    scanf("%d",&n);
    for (i=1;i<=n;i++)
    {
        broj=i;
        Yes=savrsen(broj);
        if (Yes) printf("\n%d",broj);
    }
    system("pause");
    return 0;
}    


Nadam se da sam pogodio podforum.
I da,ne zamjerajte Pascal programeru... :=)
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Khm,kad Pascalovac radi u C++...17.05.2010. u 22:22 - pre 168 meseci
Moraš da inicijalizuješ zb na 0 pre korišćenja.
 
Odgovor na temu

Krejmer
Stefan Savić
Učenik
Rep Srpska,Gradiška

Član broj: 200438
Poruke: 19
*.teol.net.

Sajt: www.google.rs


Profil

icon Re: Khm,kad Pascalovac radi u C++...18.05.2010. u 14:08 - pre 168 meseci
Jaoj,vidi ga radi.Hvala puno.


Ajde samo još nešto. ;)

U pitanju su stringovi.



Code:
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    char S[255];
    scanf("%s",S);
    if (S=="ABV") printf("ABV\n");
    else printf("Nesto tamo bezveze...\n");
    system("pause");
    return 0;
}



I uvijek on meni izbaci tamo nešto bezveze(ali bukvalno :) ).

 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Khm,kad Pascalovac radi u C++...18.05.2010. u 14:41 - pre 168 meseci
if (S=="ABV")
je uvek FALSE jer ti ovde pitaš da li je pokazivač na string jednak drugom pokazivaču na statički definisani string. Da bi poredio slova koristi funkciju, na primer strcmp
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
212.200.65.*

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Khm,kad Pascalovac radi u C++...18.05.2010. u 14:47 - pre 168 meseci
[ EDIT: pretekao me djoka_l ]


Mešaš C i C++ ;)

U C maniru:
Code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
    char S[255];
    scanf("%s",&S);
    if ( strcmp(S, "ABV") == 0 ) printf("ABV\n");
    else printf("Nesto tamo bezveze...\n");
    system("pause");
    return 0;
}

Ako zelis case-insensitive, koristi "stricmp" umesto "strcmp". Obrati paznju i na ampersand ispred S kod scanf.


U C++ maniru postoji vise nacina, recimo:
Code:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string S;
    cin >> S;
    if (S=="ABV") cout << "ABV" << endl;
    else cout << "Nesto tamo bezveze..." << endl;
    system("pause");
    return 0;
}

Dakle, nije <string.h>, nego <string>.

Ukratko, kada koristis niz char-ova, uporedjivanje vrsis funkcijom, kao sto je opisano. Uporedjivanje dvostrukim znakom jednakosti nije moguce jer zapravo uporedjujes pointere. Kod C++ string tipa to ipak mozes jer se radi o sasvim drugom mehanizmu.

 
Odgovor na temu

Krejmer
Stefan Savić
Učenik
Rep Srpska,Gradiška

Član broj: 200438
Poruke: 19
*.teol.net.

Sajt: www.google.rs


Profil

icon Re: Khm,kad Pascalovac radi u C++...18.05.2010. u 14:51 - pre 168 meseci
Kao što sam naslov kaže... ;)

Još jednom zahvaljujem.

To je ovako,svježe iskompajlirano.

Code:
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    char S[255];
    int s;
    scanf("%s",S);
    s=strcmp(S,"ABV");
    if (s==0) printf("\nABV\n");
    else printf("Nesto tamo bezveze...\n");
    system("pause");
    return 0;
}
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Khm,kad Pascalovac radi u C++...18.05.2010. u 14:58 - pre 168 meseci
Opet ne valja.

U scanf treba da se stavi &S, a ne S, kao što ti je X Files već napisao...
#include <iostream>
ne treba jer si ti napisao C program, a ne C++. Umesto njega stavi <string.h> i odluči da li ćeš da pišeš u C-u ili C++
 
Odgovor na temu

Krejmer
Stefan Savić
Učenik
Rep Srpska,Gradiška

Član broj: 200438
Poruke: 19
*.teol.net.

Sajt: www.google.rs


Profil

icon Re: Khm,kad Pascalovac radi u C++...18.05.2010. u 15:01 - pre 168 meseci
Radi program?

Mislim,ako je to neki red da se stavlja &S,negdje sam pročitao da nema potrebe,mada nema veze,ovako ću odsada &S iz prve ruke ;) .


A za drugi dio,onda nemam system("pause");

Pa trenutno mešam oba,tako da mi je svejedno.
 
Odgovor na temu

the_tosic

Član broj: 37314
Poruke: 381
*.dynamic.isp.telekom.rs.



+128 Profil

icon Re: Khm,kad Pascalovac radi u C++...18.05.2010. u 15:04 - pre 168 meseci
U scanf funkcijama parametar je adresa promenjive. A adresa promenjive se dobija sa &.
Zato ti je bolje da koristis cout i cin jer su njima parametri promenjive.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
212.200.65.*

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Khm,kad Pascalovac radi u C++...18.05.2010. u 15:08 - pre 168 meseci
Zapravo, u pravu si za ampersand (&). Kada se radi o nizovima bilo koje vrste, oni su odmah reprezentovani kao pointeri, tako da ne mora ampersand. Ipak, ja ga uvek stavljam.


system("pause") se nalazi u "stdlib.h", a ako se i nasao u <iostream>, to je zato sto je header ukljucen iz samog <iostream>-a, valjda :).
 
Odgovor na temu

Krejmer
Stefan Savić
Učenik
Rep Srpska,Gradiška

Član broj: 200438
Poruke: 19
*.teol.net.

Sajt: www.google.rs


Profil

icon Re: Khm,kad Pascalovac radi u C++...18.05.2010. u 15:10 - pre 168 meseci
E ljudi hvala,šta da kažem,tražio sam samo da mi ispravite kod,a vi maltene održali jedan školski čas. :D


Odsad znači #include <stdlib.h> .
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.COOL.ADSL.VLine.Verat.NET.



+1 Profil

icon Re: Khm,kad Pascalovac radi u C++...19.05.2010. u 08:13 - pre 168 meseci
U C++ je pozeljno da C zaglavlja ubacujes sa
Code:

#include <cstdlib>

potpunije objasnjenje na http://www.parashift.com/c++-f...mixing-c-and-cpp.html#faq-32.2
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Khm,kad Pascalovac radi u C++...

[ Pregleda: 2414 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.