Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2017, 11:47   #1
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
По умолчанию Заполнение файла n целыми случайными числами в интервале [-54, 33]

Заполнить файл n целыми случайными числами в интервале [-54, 33]. Вывести содержимое файла на экран и вычислить количество отрицательных среди них чисел, найти их произведение. У меня единственная проблема здесь: количество отрицательных чисел подсчитывается правильно, а вот произведение нет . Помогите мне, пожалуйста.
Код:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0, ""); // локализация
    char filename[280]; // массив для хранения пути к сохраняемому файлу
    int i, n = 0; // i - счетчик, n - количество чисел
    int a = 0; // a - текущее целое число
    int max = -54;
    int otrizchisla = 0;
    int proiz = 1;
    cout << "\n Введите путь к сохраняемому файлу и укажите имя файла \n\tнапример: D:\\ProgramC++\\Files1.txt \n";
    cin >> filename;
    ofstream F; // создание файловой переменной, поток для записи в файл
    F.open(filename, ios::trunc); // открытие файла на запись, режим "очистить файл"
    if (F.fail()) // если открытие файла прошло некорректно, то
    {
        cerr << "Ошибка открытия файла. Проверьте местоположение и имя файла! \n"; // вывод сообщения об ошибке
    }
    else
    {
        cout << "\n Введите количество чисел, n = ";
        cin >> n;
        cout << endl;
        // цикл для ввода целых чисел и записи их в файл
        srand((unsigned)time(NULL)); // генерация произвольной последовательности случайных чисел
        for(i = 0; i < n; i++)
        {
            a = -54 + rand() % 87;
            F << a << ' '; // запись в поток чисел, введенных с клавиатуры с разделением пробелом
            if(a < 0)
            {
            otrizchisla++;
            }
            proiz *= otrizchisla;
        }
        cout << "Количество отрицательных чисел: " << otrizchisla << endl;
        cout << "Произведение отрицательных чисел: " << proiz << endl;
    }
    F.close(); // закрытие потока
 
    int *mas = new int[n]; // создание динамического массива для данных из файла
    ifstream F1(filename); // создание файловой переменной, поток для чтения из файла
    for(i = 0; i < n; i++)
    {
        F1 >> mas[i];
    }
    F1.close(); // закрытие потока
 
    cout << "Содержимое файла " << filename << endl;
    for(i = 0; i < n; i++) // вывод на экран содержимого массива
    {
        cout << mas[i] << endl;
    }
    delete [] mas; // высвобождение памяти
 
    system("pause");
    return 0;
}
nightofpromises вне форума Ответить с цитированием
Старый 17.06.2017, 14:47   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 729
По умолчанию

Вот это условие должно выглядеть вот так:
Код:
if(a < 0)
{
    otrizchisla++;
    proiz *= a;
}
Cuprum5 вне форума Ответить с цитированием
Старый 17.06.2017, 15:07   #3
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Вот это условие должно выглядеть вот так:
Код:
if(a < 0)
{
    otrizchisla++;
    proiz *= a;
}
Спасибо большое!
nightofpromises вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать стек со случайными целыми числами в диапазоне –50 до +50 и преобразовать его в два стека. Первый должен содержать только п zenya1998 Паскаль, Turbo Pascal, PascalABC.NET 1 05.05.2016 17:14
Создать стек со случайными целыми числами. Найти максимальный элемент и вставить после него 0. Veronika_13 Помощь студентам 4 07.05.2014 23:44
Паскаль. Заполнить файл случайными целыми числами. Определить, сколько различных компонентов находится в файле. НужнаПомощь Паскаль, Turbo Pascal, PascalABC.NET 4 04.04.2014 21:18
Разработать программу для заполнения типизированного файла целыми числами в интервале [-150; 150]. Поменя Pan_rust Паскаль, Turbo Pascal, PascalABC.NET 0 24.05.2010 23:03
QBasic: Массив x(20) заполнить целыми случайными числами (1-100)... ski11 Помощь студентам 8 14.02.2010 14:08