Program C++ despre cât ar câștiga o persoană în timp dacă salariul ar fi de un ban pe zi (Nu sunt student la IT) (Programare, C++)

Harri Caceres a intrebat.

Am un proiect pentru a scrie un program care calculează cât ar câștiga o persoană într-o perioadă de timp dacă salariul său este de un penny în prima zi, doi penny în a doua zi și continuă să se dubleze în fiecare zi. Programul trebuie să ceară utilizatorului numărul de zile. Afișează un tabel care să arate cât a fost salariul pentru fiecare zi, apoi arată salariul total la sfârșitul perioadei. Rezultatul ar trebui să fie afișat în dolari, nu în numărul de bănuți.

Validarea intrărilor: Nu acceptați un număr mai mic de 1 pentru numărul de zile lucrate.

Acesta este codul meu de până acum și se pare că nu reușesc să îl fac să funcționeze corect (nu sunt student la IT)

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<iomanip.h>

int main()
{
    int days;
    double pennies = 0.01;
    double total = 0.0;
    double fixed;
    double showpoint;

    cout << "For how many days will the pay double?";
    cin >> days;

    cout << endl << "Day    Total Pay
";
    cout << "------------------------
";

    for (int count = 1; count <= days; count++)
    {
        cout << count << "tt$t" << (pow(2, pennies)) << endl;
    }

    cout << setprecision(2) << fixed << showpoint;
    cout << "--------------------------------
";
    cout << "Total  $t" << total << endl;

    getch();
    return 0;
}

Comentarii

  • ar trebui să te apuci să studiezi IT 😉 asta te ajută puțin la programare. Dar ar fi de asemenea de ajutor dacă puteți explica ce nu funcționează -.  > Por Hayt.
  • Ce vrei să spui prin can't seem to get it to work properly, , ce nu funcționează? Nu reușește să compileze? Dă o ieșire greșită pentru o anumită intrare? Altceva? –  > Por Frerich Raabe.
  • @RawN – Oh, da? Pot să vin să lucrez pentru tine timp de 32 de zile? Sugestie: în ultima zi, m-ai plăti $42949672.96 și în prima, doar $0.01 – rata de plată zilnică este ((2^num de zile) / 100) dolari – –  > Por enhzflep.
  • @enhzflep Sincer să fiu, nu m-am obosit să citesc toată întrebarea, doar titlul. Voi fi mai atent pe viitor. – user1593881
  • @RawN – Îmi pare rău dacă nu te-ai distrat și tu. Nu-i nimic rău, nu-i nimic rău. 😉 –  > Por enhzflep.
3 răspunsuri
Cod Gorila

Am încercat să explic modificările pe care le-am făcut, dar dacă ai nevoie să știi mai multe te rog să întrebi

// Headers for standard library features don't have .h on the end (normally)
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<iomanip>

int main()
{
    int days = 0;
    // double pennies = 0.01; Not needed.
    double total = 0.0;
    // If you don't initialise variables it will cause a crash or undefined behaviour.
    // double fixed;
    // double showpoint;

    while (days < 1)    // This prevents negative or 0 day contracts.
    {
        // You need to use the full name to cout or that abomination of a command using namespace std
        std::cout << "For how many days will the pay double?";
        std::cin >> days;
    }
    std::cout << std::endl << "Day    Total Pay
";
    std::cout << "------------------------
";

    // looping from 0 while less than days is more "normal".
    for (int count = 0; count < days;  count++)
    {
        double payForTheDay = (pow(2, count));
        std::cout << count << "tt$t" << payForTheDay << std::endl;
        total += payForTheDay;  // You need to increment the total.
    }
    // Not sure what this is about
    // std::cout << std::setprecision(2) << fixed << showpoint;
    std::cout << "--------------------------------
";
    std::cout << "Total  $t" << total << std::endl;

    getch();
    return 0;
}

obe

Încercați să înlocuiți (pow(2, pennies)) cu (pennies * pow(2, (count - 1)))

Note:

  1. Nu ar trebui să pennies de fapt, nu trebuie să se numească dollars?

  2. Pentru a calcula total, trebuie doar să îl măriți cu salariul zilnic pentru fiecare zi (de exemplu, în interiorul buclei în care se afișează fiecare rând din tabel).

Comentarii

  • Poate că cei care votează în jos vor dori să împărtășească un răspuns propriu..? –  > Por obe.
  • Trebuie să fiu de acord cu tine Obe, nu este nimic în neregulă cu ceea ce ai spus, nu înțeleg de ce a fost votat în jos. (Totuși, ai omis problema cu fișierele de antet și std 🙂 ) –  > Por Code Gorilla.
KOUSIK MANDAL

Deci, uitați-vă la baza problemei. Este practic o progresie geometrică.

Într-o progresie geometrică suma a n numere este;

Sn=a1((1-r^n)/(1-r))
[a1=first element(in your case 1);r=2(in this case)]

Folosiți formula pentru a obține numărul de bănuți pentru n zile. acum convertiți-l în valoare în dolari.

Dacă aveți nevoie de codul complet comentați aici.

Comentarii

  • Cred că răspunsul tău este foarte complex în comparație cu postul inițial. Deși răspunsul dvs. este corect, nu este o soluție C++ la problemă și nu ajută OP să afle unde a greșit. –  > Por Cod Gorila.

Tags: