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

Potrebna pomoc oko C-a

[es] :: C/C++ programiranje :: Potrebna pomoc oko C-a

[ Pregleda: 2115 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

damir9
Damir Rac

Član broj: 330679
Poruke: 16
*.dynamic.isp.telekom.rs.



Profil

icon Potrebna pomoc oko C-a07.04.2016. u 19:12 - pre 97 meseci
Imam problem sa prevodjenjem programa iz C++-a u C.
Program u C++-u koji radi dobro:
Code:
#include <cstdlib>
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main()
 {
     int n,d,q,i;
     int c[9];
     cout<<"Unesite dinarski iznos koji podizete: ";
     cin>>d;
     cout<<"Unesite sa koliko vrsta novcanica raspolazete: ";
     cin>>n;
     cout<<"Unseite dinarske iznose novcanica od najmanjeg do najveceg: \n";
     for(i=0;i<n;i++)
     {
         cout<<"Unesite vrednost novcanice br." <<i+1<<" ";
         cin>>c[i];
     }
    cout<<"ISPLATA\n";
     i=n-1;
     while((i>=0)&&(d>0))
     {
         q=d/c[i];
         d=d%c[i];
         if(q>0)
         {
             if(d>0) cout<<q<<" * "<<c[i]<<" + ";
             else cout<<q<<" * "<<c[i]<<" . ";
         }
         i--;
     }
     if(d>0) cout<<" od ukupnog iznosa ostalo je" <<d<< "dinara\n";
     system("PAUSE>>null");
    return 0;
}


Isti program u C-u koji ne radi kako treba:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main()
 {
     int n,d,q,i;
     int c[9];
     printf("Unesite dinarski iznos koji podizete: ");
     scanf("%d", &d);
     printf("Unesite sa koliko vrsta novcanica raspolazete: ");
     scanf("%d", &n);
     printf("Unseite dinarske iznose novcanica od najmanjeg do najveceg: \n");
     for(i=0;i<n;i++)
     {
         printf("Unesite vrednost novcanice br. %i+1 ");
         scanf("%s", &c[i]);
     }
     printf("ISPLATA\n");
     i=n-1;
     while((i>=0)&&(d>0))
     {
         q=d/c[i];
         d=d%c[i];
         if(q>0)
         {
             if(d>0) printf("%q    *    %c[i]    +    ");
             else printf("%q    *    %c[i]    .");
         }
         i--;
     }
     if(d>0) printf(" od ukupnog iznosa ostalo je %d dinara\n");
     system("PAUSE>>null");
    return 0;
}


Jos sam pocetnik u programiranju i ne mogu naci gresku u kodu. Hvala unapred.
 
Odgovor na temu

Nedja995

Član broj: 309141
Poruke: 55
*.dynamic.sbb.rs.



+1 Profil

icon Re: Potrebna pomoc oko C-a07.04.2016. u 19:38 - pre 97 meseci
Nisam pokretao kod ali ocigledni problemi koje sam zapazio su u upotrebi printf-a.
primer:
Code:
printf("%q    *    %c[i]    +    ");

pravilno:
Code:
printf("%d   *    %d    +    ", q, c[i]);

 
Odgovor na temu

damir9
Damir Rac

Član broj: 330679
Poruke: 16
*.dynamic.isp.telekom.rs.



Profil

icon Re: Potrebna pomoc oko C-a07.04.2016. u 19:58 - pre 97 meseci
Hvala puno, ali ne radi ponovo.
Mozda da je problem oko promenljive c ali nisam siguran.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Potrebna pomoc oko C-a07.04.2016. u 20:02 - pre 97 meseci
ni jedan printf u kojem imaš % ne valja. Pogledaj kako se koristi printf.
 
Odgovor na temu

damir9
Damir Rac

Član broj: 330679
Poruke: 16
*.dynamic.isp.telekom.rs.



Profil

icon Re: Potrebna pomoc oko C-a07.04.2016. u 20:31 - pre 97 meseci
Ispravio sam printf-ove ali i dalje ne radi dobro.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main()
 {
     int n,d,q,i;
     int c[9];
     printf("Unesite dinarski iznos koji podizete: ");
     scanf("%d", &d);
     printf("Unesite sa koliko vrsta novcanica raspolazete: ");
     scanf("%d", &n);
     printf("Unseite dinarske iznose novcanica od najmanjeg do najveceg: \n");
     for(i=0;i<n;i++)
     {
         printf("Unesite vrednost novcanice: ");
         scanf("%s", &c[i]);
     }
     printf("ISPLATA\n");
     i=n-1;
     while((i>=0)&&(d>0))
     {
         q=d/c[i];
         d=d%c[i];
     
         if(q>0)
         {
         if(d>0) printf("%d * %s +", q, c[i]); 
         else printf("%d * %s",q,c[i]);
            }
         i--;
}
      if(d>0) printf(" od ukupnog iznosa ostalo je %d dinara\n",d);

    system("PAUSE>>null");
    return 0;
}

Umesto ovog http://prntscr.com/apeobi
ja dobijem ovo http://prntscr.com/apen3u
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Potrebna pomoc oko C-a07.04.2016. u 21:08 - pre 97 meseci
I promenljiva q i svi elementi niza c su tipa int, i zato se za njih u printf formatu koristi %d. Ako koristiš nešto što nije %d (recimo %s) onda dolazi do pogrešnog prikaza. Zameni na oba mesta %s sa %d da bi prikaz bio ispravan.

Takođe, elementi niza c se ne učitavaju lepo jer opet koristiš %s (za char*) umesto %d (za int).

[Ovu poruku je menjao Mihajlo Cvetanović dana 07.04.2016. u 22:28 GMT+1]
 
Odgovor na temu

damir9
Damir Rac

Član broj: 330679
Poruke: 16
*.dynamic.isp.telekom.rs.



Profil

icon Re: Potrebna pomoc oko C-a07.04.2016. u 21:26 - pre 97 meseci
Hvala na pomoci ali ponovo mi sve isto prikazuje.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Potrebna pomoc oko C-a07.04.2016. u 21:29 - pre 97 meseci
Kasno sam primetio da istu grešku imaš i u scanf-u.

Elementi niza c se ne učitavaju lepo jer opet koristiš %s (za char*) umesto %d (za int).
 
Odgovor na temu

damir9
Damir Rac

Član broj: 330679
Poruke: 16
*.dynamic.isp.telekom.rs.



Profil

icon Re: Potrebna pomoc oko C-a07.04.2016. u 21:32 - pre 97 meseci
Hvala puno, radi sad sve ok :D
 
Odgovor na temu

[es] :: C/C++ programiranje :: Potrebna pomoc oko C-a

[ Pregleda: 2115 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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