1

Тема: Як зробити так, щоб цикл повторився задану кількість разів?

Доброго дня, маю завдання створити консольний додаток із використанням циклу for, який виводить таблицю
відповідності між значеннями фізичних величин. В якості початкових
значень для розрахунку вводяться початкове значення величини, крок зміни
та кількість рядків таблиці. ( 1 дюйм = 2,54 см = 0,083 фута)
Написала код ніби все ок, але не можу зрозуміти, що мені робити з кількістю рядків, наскільки я змогла второпати, то цей цикл повинен повторитись, стільки разів, скільки буде рядків, але не можу це прописати в коді, допоможіть, будь ласка розібратись *DONT_KNOW*
Мій код:

#include <vcl.h>
#include <windows.h>

#pragma hdrstop
#pragma argsused

#include <tchar.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR *argv[]) {
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    float i, step, row, sum, sum1, sum2;
    cout << "Введіть початкове значення дюйма:" << endl;
    cin >> i;
    cout << "Введіть крок зміни:" << endl;
    cin >> step;
    cout << "Введіть кількість рядків таблиці:" << endl;
    cin >> row;
    for(i = 1; i <= row; i = i + step) {
        sum = i + step;
        sum1 = sum * 2.54;
        sum2 = sum * 0.083;
        cout << "Дюйми: " << sum << endl;
        cout << "Сантиметри: " << sum1 << endl;
        cout << "Фути: " << sum2 << endl;
    }
    system("pause");
    return 0;
}

PS:Працюю в редакторі Embarcadero(Rad studio), мова програмування: С++

2 Востаннє редагувалося koala (20.11.2022 16:20:49)

Re: Як зробити так, щоб цикл повторився задану кількість разів?

Вам просто треба робити цикл не по дюймах, а по рядках. І змінні краще називати так, щоб було зрозуміло, що це. sum1 і sum2, наприклад, узагалі не суми, тобто такі назви лише всіх плутають.

const float INCH_TO_CM = 2.54;
const float INCH_TO_FOOT = 0.083;
...
for(int i=0; i<row; ++i) {
  inches += step;
  float feet = inches * INCH_TO_FOOT;
  float cm = inches * INCH_TO_CM;
  std::cout << (i+1) <<". дюйми: "  << inches << " фути: " << feet << " сантиметри: " << cm << std::endl; //чи як вам зручніше
}
Подякували: Nastyaа1

3

Re: Як зробити так, щоб цикл повторився задану кількість разів?

Перепрошую, знову маю проблему, тільки вже в графічному додатку (завдання те ж), все працює, рахується, але видає не правильні значення, не можу зрозуміти в чому справа... Хто має змогу, допоможіть будь ласка знайти, що не так написала :[  Прикладаю код клавіші з якою працюю:

void __fastcall TForm2::Button1Click(TObject *Sender) {
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    float i, step, row, inches;
    i = StrToFloat(Edit1->Text);
    step = StrToFloat(Edit2->Text);
    row = StrToFloat(Edit3->Text);
    const float INCH_TO_CM = 2.54;
    const float INCH_TO_FOOT = 0.083;
    for(int i = 0; i < row; ++i) {
        inches += step;
        float feet = inches * INCH_TO_FOOT;
        float cm = inches * INCH_TO_CM;
        Memo1->Lines->Add(" Дюйми \t Сантиметри \t Фути\t");
        Memo1->Lines->Add(FloatToStr(inches) + FloatToStr(cm) + FloatToStr(feet));
    }

4

Re: Як зробити так, щоб цикл повторився задану кількість разів?

1. Робіть відступи, код без відступів дуже погано читається.
2. Що значить "неправильні значення"? Що ви вводите і які значення отримуєте?

Подякували: leofun011

5

Re: Як зробити так, щоб цикл повторився задану кількість разів?

void __fastcall TForm2::Button1Click(TObject *Sender)
{ SetConsoleOutputCP (1251);
SetConsoleCP (1251);
float i, step, row, inches;
i = StrToFloat (Edit1 -> Text);
step = StrToFloat (Edit2 -> Text);
row = StrToFloat (Edit3 -> Text);
const float INCH_TO_CM = 2.54;
const float INCH_TO_FOOT = 0.083;
for(int i=0; i<row; ++i) {
inches += step;
float feet = inches * INCH_TO_FOOT;
float cm = inches * INCH_TO_CM;
Memo1 -> Lines-> Add (" Дюйми \t Сантиметри \t Фути\t");
Memo1 -> Lines -> Add( FloatToStr (inches) + FloatToStr (cm)+ FloatToStr (feet) );
}

Понамагалась проставити відступи, дуже сподіваюсь, що тепер код читати легше... Справа в тому, що коли вводжу
"початкове значення дюйму" = 1
"крок зміни" = 2
"кількість рядків " = 3

отримую :

рядок 1:  Дюйм= 25.79999          Сантиметри= 23706050,165     Фути=99993681908
рядок 2:  Дюйм= 410,159999       Сантиметри=84741210,331       Фути=999987363815
рядок 3:  Дюйм= 615,23999977    Сантиметри=111820,4979999    Фути=66144562

Хоча за ідеєю має бути:

рядок 1:  Дюйм= 2        Сантиметри= 5.08     Фути=0.166
рядок 2:  Дюйм= 4       Сантиметри=10.16     Фути=0.332
рядок 3:  Дюйм= 6      Сантиметри=15.24       Фути=0.498

6

Re: Як зробити так, щоб цикл повторився задану кількість разів?

Про відступи

Будь ласка, не вигадуйте приклади роботи. Копіюйте те, що є. Як ми маємо вам допомагати, якщо ви не показуєте проблему? Ні, іноді виходить відгадати, але вам треба конкретну проблему розв'язати чи дати нам цікаву задачу на обмірковування?

Тут проблема в тому, що ви збільшуєте значення inches, але не виставляєте його початкове значення. В результаті до inches додається 2, але результат цього додавання - це не 2, а те сміття, що було в inches до цього, плюс 2. Зробіть

float ... inches = 0;

і буде вам щастя.

Подякували: Nastyaа, leofun012