M@gelearn Ответов: 1

Мне нужна помощь с петлями..


Это фрагмент кода, в котором пользователь вводит массив чисел, затем выбирает его элементы и, наконец, среднее значение этих элементов.

Итак ... если пользователь набирает первый элемент и неправильно набирает второй, я хочу, чтобы моя программа напечатала то же самое, включая первый элемент с правильным значением, и начала с того момента, когда пользователь неправильно набрал второй элемент и так далее.

Это просто вопрос печати каждый раз, когда элементы были добавлены первыми со своими значениями и начинаются со следующего элемента до конца массива, где появляется меню, чтобы сделать среднее значение этих элементов.

.
..
else if(options == 4)
        {
            int mark[100], j, n, sum = 0, average;
            int temp4, status4;
            printf("\n\n\t 4. Average of n numbers using arrays");
            printf("\n\n\n\tInput number of elelments: ");
            status4 = scanf("%d", &n);
            while(status4 != 1)
            {
                while((temp4 = getchar()) != EOF && temp4 != '\n')
                {
                    printf("\n\n Input only numbers...");
                    Sleep(1500);
                    system("cls");
                    printf("\n\n\t 4. Average of n numbers using arrays");
                    printf("\n\n\n\tInput number of elelments: ");
                    status4 = scanf("%d", &n);
                }
            }
            system("cls");
            printf("\n\n\t 4. Average of n numbers using arrays");
            printf("\n\n\n\t%d elements were entered\n", n);
            for(j = 0; j < n; ++j)
            {
                printf("\n\tElement %d = ", j + 1);
                status4 = scanf("%d", &mark[j]);
                while(status4 != 1)
                {
                    while((temp4 = getchar()) != EOF && temp4 != '\n')
                    {
                        printf("\n\n Input only numbers...");
                        Sleep(1500);
                        system("cls");
                        printf("\n\n\t 4. Average of n numbers using arrays");
                        printf("\n\n\n\t%d elements were entered\n", n);
                        int k = j - 1;
                        for(k = 1; k < n; ++k)
                        {
                            printf("\n\tElement %d = %d\n", k, );
                        }
                        printf("\n\tElement %d = ", j + 1);
                        status4 = scanf("%d", &mark[j]);
                    }
                }
                sum += mark[j];
            }
            int options4;
            printf("\n 1. Average of the entered numbers"
                   "\n 2. Back to main menu"
                   "\n\n Select: ");
            status4 = scanf("%d", &options4);
            while(status4 != 1)
            {
                while((temp4 = getchar()) != EOF && temp4 != '\n')
                {
                    printf("\n\n Invalid option..");
                    Sleep(1500);
                    printf("\n\n Choose 1 or 2\n");
                    Sleep(1500);
                    system("cls");
                    printf("\n\n\t 4. Average of n numbers using arrays");
                    printf("\n\n\n\t%d elements were entered\n", n);
                    int k = j - 1;
                        for(k = 1; k <= n; ++k)
                        {
                            printf("\n\tElement %d = %d\n", k, );
                        }
                    printf("\n 1. Average of the entered numbers"
                           "\n 2. Back to main menu"
                           "\n\n Select: ");
                    status4 = scanf("%d", &options4);
                }
            }
            int i;
            for(i = 0; i < options4;)
            {
                if(options4 == 1)
                {
                    average = sum / n;
                    printf("\n Average of the entered numbers is %d\n", average);
                    Sleep(2500);
                    break;
                }
                else if(options4 == 2)
                {
                    printf("\n\n Back to main menu");
                    Sleep(2000);
                    system("cls");
                    menu();
                }
                else
                {
                    printf("\n\n Invalid option..");
                    Sleep(1500);
                    printf("\n\n Choose 1 or 2\n");
                    Sleep(1500);
                    system("cls");
                }
            }
        }
..
.


Что я уже пробовал:

Строки 41 и 68 не являются полными, пропуская 3-й аргумент, поскольку я оставил его специально.. Вот тут-то мне и нужна помощь.. Спасибо.

строки 41 и 68 одинаковы

printf("\n\tElement %d = %d\n", k, );

Gerry Schmitz

Поскольку мы не можем сказать, что такое "строка 41 или 68", вы должны добавить комментарий к коду, указывающий "где". Время-это деньги.

M@gelearn

printf("\n\tElement %d = %d\n", k, ); это строка 41 и то же самое для 68

Gerry Schmitz

А теперь вы хотите, чтобы мы посмотрели контекст?

jeron1

Можно ли сконцентрироваться на одном цикле и попытаться точно описать, что вы пытаетесь сделать?

Rick York

Часть проблемы заключается в том, что это, по-видимому, один монолитный кусок кода, и это никогда не бывает хорошей идеей, если этот монолит не состоит из дюжины строк. Разбейте вещи на функции, чтобы они были модульными, имея в виду, что, как правило, функции не должны делать очень много. В том, что я вижу в вашем коде, у вас есть несколько повторяющихся разделов кода, и они являются идеальными кандидатами для функций.

Кроме того - подумайте о принятии ваших входных данных из файлов. Я думаю, что это делает вещи намного быстрее и проще в отладке. Если вы сделаете это правильно, вы можете вызвать функцию для ввода, которая принимает указатель файла, который может быть stdin для пользовательского ввода или открытый файл, из которого вы можете читать.

1 Ответов

Рейтинг:
1

OriginalGriff

Мы более чем готовы помочь тем, кто застрял, но это не значит, что мы здесь, чтобы сделать все это для вас! Мы не можем сделать всю работу, вам либо платят за это, либо это часть ваших оценок, и было бы совсем несправедливо, если бы мы сделали все это за вас.

Поэтому нам нужно, чтобы вы сделали работу, и мы поможем вам, когда вы застряли. Это не значит, что мы дадим вам пошаговое решение, которое вы можете сдать!
Начните с объяснения, где вы находитесь в данный момент и каков следующий шаг в этом процессе. Затем расскажите нам, что вы пытались сделать, чтобы этот следующий шаг сработал, и что произошло, когда вы это сделали.
И так далеко ... вы не пробовали: вы копировали и вставляли материал в надежде, что он даст нам основу для того, чтобы закончить его за вас. Если бы вы написали остальное, вы бы знали, что делать, это не сложно.