Informatică, întrebare adresată de KeKeMachu, 8 ani în urmă

Cerința
Anul acesta unele magazine din România s-au hotărât să organizeze BlackFriday joia, altele de luni până joi, iar altele sâmbătă şi duminică. Ele au afişat n preţuri înainte de ieftinire şi cele n preţuri după ieftinire. Aflaţi ce produs s-a ieftinit cu cel mai mare procent.

Date de intrare
Fișierul de intrare blackfriday.in conține pe prima linie numărul n, pe a doua linie n numere naturale separate prin spații reprezentând preţurile înainte de ieftinire, iar pe a treia linie n numere naturale separate prin spații reprezentând preţurile corespunzătoare după ieftinire.

Date de ieșire
Fișierul de ieșire blackfriday.out va conține pe prima linie numărul k, reprezentând numărul de ordine din şirul de preţuri dat al produsului care s-a ieftinit cu cel mai mare procent.

Restricții și precizări
2 ≤ n ≤ 10
preţurile sunt numere naturale cuprinse între 1 şi 1.000.000.000.
dacă sunt mai multe preţuri care s-au ieftinit cu acelaşi procent se va afişa numărul de ordine mai mic.
preţurile după ieftinire sunt strict mai mici decât cele anterioare( evident).

Exemplu
blackfriday.in

3
8 15 200
4 6 160
blackfriday.out

2
Explicație
Primul produs s-a ieftinit cu 50%, al doilea cu 60% iar al treilea cu 20%. Deci al doilea produs s-a ieftinit cu cel mai mare procent, afişând astfel numărul său de ordine, adică 2.

Nu inteleg de ce imi da 0 puncte.

#include

using namespace std;
ifstream fin ("blackfriday.in ");
ofstream fout ("blackfriday.out");
int n,a[11],b[11],i,maxi=-1;
double proc(int a, int b)
{
double procent=0;
procent=(a-b)*100/a;
return procent;
}
int main()
{
fin>>n;
for(i=1;i<=n;i++)fin>>a[i];
for(i=1;i<=n;i++)fin>>b[i];
for(i=1;i<=n;i++)
{
if(proc(a[i],b[i])>maxi)maxi=proc(a[i],b[i]);
}
for(i=1;i<=n;i++)
if(proc(a[i],b[i])==maxi)
{
fout< return 0;
}
return 0;
}

Răspunsuri la întrebare

Răspuns de boiustef
2

problema e ca variabilele a,b,...  sunt declarate int si deci a/b este numar intreg  chiar daca vrei sa-l dai unei variabile reale...

de exemplu 10/3 este 3  si nu 3.33333  

double procent=0;


procent=(a-b)*100/a;     iata aici procent primeste numar intreg si nu real,  si mai ai cazuri asemanatoare

eu iti trimit codul meu sa faci cercetare, comparatie si analiza ... succes...

#include <iostream>


#include <fstream>


using namespace std;


int x[11], y[11];


int main()


{


   ifstream f("blackfriday.in");


   ofstream g("blackfriday.out");



   int n, i, ind;


   double p, pmax;


   f >> n;


   for (i=1; i<=n; ++i) f >> x[i];


   for (i=1; i<=n; ++i) f >> y[i];


    pmax=(double)(x[1]-y[1])/x[1]*100; ind=1;


   

   for (i=2; i<=n; ++i)


   {


       p=(double)(x[i]-y[i])/x[i]*100;


       if (p>pmax) {pmax=p; ind =i;}


   }



   g << ind;



   return 0;


}

Alte întrebări interesante