1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Найдите Ошибку В Коде Пожалуйста

Тема в разделе "C/C++/C#", создана пользователем adelinamango, 10 апр 2014.

  1. adelinamango

    adelinamango New Member

    Репутация:
    0
    Регистрация:
    10 апр 2014
    Сообщения:
    3
    Симпатии:
    0
    Ввести массив целых чисел, количество элементов которого заранее не известно. Признаком конца ввода массива является ввод четырех чисел, дающих в среднем арифметическом 10. Вывести массив на экран
    Найдите и исправьте ошибку в коде пожалуйста

    Код:
    #include <stdio.h>
    #include <iostream>
    #include <windows.h>
    
    int main (void)
    {
    int *a;//Массив
    int n=0, i=0, s4, j, x=0, sum=0;//Размерность
    
    printf("vvedite razmernost' massiva: ");
    scanf_s("%i",&n);
    
    a = (int*) malloc (n * sizeof(int)); // Выделяем массиву память.
    
    for (int i = 0;i<n;i++)
    {
    printf("a[%i] = ",i);
    scanf_s("%i",&a[i]);
    }
    { 
    
    for(i=0;; i++) {
    
    a[i%4] = x;
    sum += x;
    if (i>=3) {
    for(s4=j=0; j<4; j++) s4 += a[j];
    if (s4==40) break;
    }
    }
    
    printf("%d\n", a[j]);}
    free(a);
    
    system("pause");
    return 0;
    }
     
  2. LuMee

    LuMee Well-Known Member

    Репутация:
    0
    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Давненько сями не баловался.. Вот мой вариант решения "в лоб":
    Код:
    #include <stdio.h>
    #include <iostream>
    #include <windows.h>
    
    // Размер шага для увеличения массива
    
    #define INCREMENT 4
    #define INT_SIZE sizeof(int)
    
    int main(void) {
    
    int* numbers = (int*)malloc(INT_SIZE * INCREMENT);
    int index = 0, size = INCREMENT;
    
    printf("Start entering numbers: \n");
    
    int keepRunning = 1;
    while(keepRunning) {
    // Увеличиваем размер массива, если чувствуем, что не помещаемся
    if (index + 1 == size) {
    // Создаем новый массив увеличенного размера
    int* tmp = (int*)malloc(INT_SIZE * (size + INCREMENT));
    // Копируем содержимое старого
    memcpy(tmp, numbers, size * INT_SIZE);
    // Старый удаляем, чтобы не терять память
    free(numbers);
    numbers = tmp;
    }
    
    scanf_s("%i", &numbers[index]);
    
    // Как только набралось хотя бы 4 элемента, можем начинать бегать по массиву 
    // и проверять последние четыре значения 
    if (index >= 3) {
    int sum = 0;
    for (int i = index - 3; i <= index; ++i) {
    sum += numbers[i];
    }
    
    if (sum == 40)
    keepRunning = 0;
    }
    
    index++;
    }
    
    // Ввод закончен, показываем массив
    printf("[");
    
    for (int i = 0; i < index; ++i) {
    printf("%i", numbers[i]);
    
    if (i < index - 1)
    printf(", ");
    }
    
    printf("]");
    
    free(numbers);
    
    return 0;
    }
     
  3. adelinamango

    adelinamango New Member

    Репутация:
    0
    Регистрация:
    10 апр 2014
    Сообщения:
    3
    Симпатии:
    0
    что такое keeprunning?)
     
  4. LuMee

    LuMee Well-Known Member

    Репутация:
    0
    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    Просто флажок, который используется в условии цикла. Пока он равен 1, приложение продолжает запрашивать элементы массива у пользователя. Когда сбрасывается в 0, цикл завершается, приложение переходит к показу введенного массива.
     
  5. adelinamango

    adelinamango New Member

    Репутация:
    0
    Регистрация:
    10 апр 2014
    Сообщения:
    3
    Симпатии:
    0
    благодарю вас!)
     
Загрузка...
Похожие Темы - Найдите Ошибку Коде
  1. fructus-temporum
    Ответов:
    1
    Просмотров:
    1.908
  2. alexey webware
    Ответов:
    1
    Просмотров:
    881
  3. vitte
    Ответов:
    17
    Просмотров:
    1.529
  4. deeeman
    Ответов:
    8
    Просмотров:
    1.066
  5. Serduko
    Ответов:
    13
    Просмотров:
    1.723

Поделиться этой страницей