Как я могу устранить эти ошибки и предупреждения? Также несколько вопросов из этой программы - PullRequest
0 голосов
/ 09 июля 2020

Я делаю программу, которая берет данные от различных ракет (кроме двигателей первой ступени) и вычисляет dV с новым, заменяющим двигателем. Вот код:

#include <stdio.h>
#include <math.h>

main () {

int choice;

do {

    printf ("\n1-Register rocket data");
    printf ("\n2-Change already registered data");
    printf ("\n3-Delete rocket data");
    printf ("\n4-Show registered rockets");
    printf ("\n5-Register substitute engine data");
    printf ("\n6-Calculate dV with substitute engine");
    printf ("\n0-End");

    scanf ("%d", &choice);

    switch(choice) {
        case 1:
            dV();
        break;

        case 2:
        break;

        case 3:
        break;

        case 4:
        break;

        case 5:
        break;

        case 6:
        break;

        }

    } while(choice != 0);

}


dV () {

    int count, x, i;
    float rockets[] , dV, wetMass, dryMass, Isp;

    printf ("How many rockets will be registered?");
    scanf ("%d", &x);

    while (i == 1) {

        for (count=1; count <= x; count++)


            printf ("\n\nWet Mass(kg): ");
            scanf ("%f", &wetMass);
            fflush (stdin);

            printf ("Dry Mass: ");
            scanf ("%f", &dryMass);
            fflush (stdin);

            printf ("Specific Impulse(Seconds): ");
            scanf ("%f", &Isp);
            fflush (stdin);

            printf ("\nType 1 to add a stage or 0 to end the process: ");
            scanf ("%d", &i);

            dV = (Isp * 9.8 * log(wetMass/dryMass) + dV);

            dV = rockets[x++];


            }

}

Ошибка:

ошибка: отсутствует размер массива в 'ракетах' (строка 50)

Предупреждения:

предупреждение: неявное объявление функции 'dV' [-Wimplicit-function-декларация} (строка 22) предупреждение: по умолчанию тип возвращаемого значения - int (Wimplicit-int) (строка 47)

Первый вопрос: Как сделать Я устраняю эти ошибки и предупреждения?

Второй вопрос: как я могу создать вектор с определенным пользователем количеством элементов? Пользователь должен иметь возможность зарегистрировать столько ракет, сколько захочет. Мой план состоит в том, чтобы вычислить dV для каждой ракеты и сохранить его в элементе вектора rocket [] после того, как будут предоставлены замещающие данные двигателя.

Третий вопрос: как я могу изменить значение уже определенного элемента в векторе?

Четвертый вопрос: как я могу назначать векторные элементы постепенно? Под этим я подразумеваю: данные первой зарегистрированной ракеты должны go соответствовать ракетам [0], вторые - ракетам [1] и т. Д. c.

редактировать: я забыл добавить это после строки 55

printf ("\ntype 1 to add a stage or 2 to end the process: ");
scanf ("%f", &i);

1 Ответ

0 голосов
/ 09 июля 2020

Чтобы удалить ошибки и предупреждения, внесите изменения, как показано ниже, т.е. создайте массив ракет с плавающей запятой после того, как вы получили значение x и инициализируйте i значением 1 перед его использованием в while, и добавьте void в тип возвращаемого значения функции dV, если какое-либо возвращаемое значение не требуется .

void dV () {

    int count, x, i;
    float  dV, wetMass, dryMass, Isp;

    printf ("How many rockets will be registered?");
    scanf ("%d", &x);

    float rockets[x];

    i=1;

    while (i == 1) {
.
.
}

Ответьте на ваш второй вопрос: либо сделайте ракеты как глобальный массив, либо верните его в основной с помощью функции dV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...