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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2017, 16:00   #1
KariLex
Пользователь
 
Регистрация: 01.04.2017
Сообщений: 27
По умолчанию Считать из файла и произвести вычисления

Помогите пожалуйста, как можно сделать попроще процедуру OPEN, именно момент с массивом, остальное все нужно оставить
Код:
#include "stdafx.h"

#include <locale.h>
#include <math.h>
#include <stdio.h>
#include <conio.h>
//#include <stdlib.h>
#define size 15
#define element 4


double Input();
//int Open(double *mas);
int Open (double *x, double *b, double *h, double *eps);
int Entry();


int main()
{
	double x = 0, b = 0, h = 0, eps = 0, buf = 0, d;
	int prec,p;
	unsigned int k, count;
	double s, si, temp;
	double mas[element];
	char  *line = "======================================";
	char X = 'X', *fx = "F(x)", *nom = "№ чл.р.";
	FILE *fp; /*исходный файл*/
	FILE *fo;



	setlocale(LC_ALL, "Russian");
	printf("\tДанная программа предназначена для вычисления таблицы значений функции заданной в виде разложения в ряд.\n");

	
	p= Entry();
	if (p == 2) {
		/*/////////////////////////////////////////////////////////////////////////////////////*/
		Open(&x, &b, &h, &eps);
	}
	else {
		/*////////////////////////////////////////////////////////////////////////////////////*/
		printf("Введите нижнюю границу интервала x = ");
		x = Input();
		while (b < x)
		{
			printf("Введите верхнюю границу интервала b > %.2lf, b = ", x);

			b = Input();
		}
		buf = b - x;
		do
		{
			printf("Введите величину шага изменения аргумента h < %.2lf = ", buf);

			h = Input();
		} while (h > buf);
		do
		{
			printf("Введите точность вычисления функции eps(0..1), eps = ");

			eps = Input();
		} while ((eps < 0) && (eps > 1));

	}
	/*------------------------------------*/
		temp = eps;
		prec = 0;
		while (temp < 0.9999999)
		{
			prec++;
			temp *= 10;
		}
		printf("\n\n\n");
		printf("%s\n", line);

		printf("|  #| %*.*c| %*.*s| %*.*s|\n", 5 + prec, 3 + prec, X, 7 + prec, 3 + prec, fx, 6 + prec, 5 + prec, nom);
		printf("%s\n", line);
		count = 0;
		do
		{
			count++;
			s = 0;
			si = x;
			k = 0;
			while (fabs(si) > eps)
			{
				s += si;
				k++;
				si = (si*pow(x, 2)) / (2 * k * (2 * k + 1));
			}

			printf("|%3d| %*.*lf| %*.*lf| %9d|\n", count, 5 + prec, prec, x, 7 + prec, prec, s, k);

			x = x + h;
		} while (!(x > b));
		printf("%s", line);
		printf("\n");
	
	return 0;
}


double Input()
{
	double loc;
	int ver;
	do
	{
		fflush(stdin);
		ver = scanf("%lf", &loc);
		if (ver != 1)
		{
			printf("Введено не корректное значение, повторите ввод\n");
		}
	} while ((ver != 1)& ((getchar()) != '\n') );


	return loc;
}

int Open(double *x, double *b, double *h, double *eps)
{
	char filename[50]; /*имя  файла*/
	int i;
	double mas[element];
	//double x = 0, b = 0, h = 0, eps = 0;
	FILE *fp;

	printf("Введите имя исходного файла/ путь к файлу\n");
	/*scanf("%s", filename);
	fp = fopen(filename, "r");*/
	fp = fopen("C:\\Users\\Ekaterina\\Desktop\\KKR_2.txt", "r");
	if (fp == NULL)
	{
		perror("Error opening file");
		return 0;
	}
	else
	{
		printf("Файл открыт для чтения\n");
		printf("Информация, считанная из файла\n\n");
		for (i = 0; i < element; i++)
		{
			fscanf(fp, "%lf\n", &mas[i]);
			//printf("%.3lf\n", mas[i]);
		}
	}
	i = 0;
	*x = mas[i]; printf("x = %.3lf\n", x); i++;
        *b = mas[i]; printf("b = %.3lf\n", b); i++;
	*h = mas[i]; printf("h = %.3lf\n", h); i++;
	*eps = mas[i]; printf("eps = %.3lf\n", eps);
}

int Entry()
{
	int p;

	do
	{
		printf("Введите 1 для ввода значений с клавиатуры, введите 2 для считывания из файла: ");
		scanf("%d", &p);
	} while ((p <1 ) || (p > 2));


	return p;
}
Вложения
Тип файла: txt KKR_2.txt (11 байт, 133 просмотров)

Последний раз редактировалось KariLex; 12.06.2017 в 16:50.
KariLex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как в c++ считать с файла строку и загнать ее в переменную? что-б можно было считать 3-ю 4-ю и тд строки отдельно НАЧИНАЮЩИЙ_ПРО Помощь студентам 1 15.03.2017 16:28
По заданной формуле построить дерево и произвести вычисления с его помощью DmitryRadostev Visual C++ 1 05.04.2015 20:39
Произвести вычисления в подпрограммах.Помогите,пожалуйста Петр12345 Паскаль, Turbo Pascal, PascalABC.NET 0 24.04.2014 13:25
Как произвести простые вычисления ячеек в VB segail Microsoft Office Excel 18 13.12.2009 21:42
Pascal, файлы. Произвести распаковку файла AlexGur Помощь студентам 3 27.01.2009 17:23