Всем доброй ночи, делаю лабу на С++ Когда данные определяю внутри программы, то все отлично считает, но если мне нужно изменить числа, то перебивать их все очень долго. Естественно проще взять числа из файла., но столкнулся с проблемой, что числа либо вообще не считываются, либо какая-то "хрень" большая. До этого всегда кодил на С++ Builder 6, где со строками вроде как нормально работал, но жизнь заставила пересесть за Visual, а тут что-то по-другому PHP: #include "stdio.h" #include "stdafx.h" #include <conio.h> #include "math.h" #include<iostream> #include<fstream> double t[30]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}; //double N[30]={0.671293398237389, 0.79389953739567, 1.13945602395101, 1.52691642581218, 1.60171316874476, 1.58133000385315, 1.71423370637588, 1.63495791194266, 1.60874493239694, 2.19533518531663, 1.77834316252725, 1.98026892016333, 1.89870209051207, 1.79972185629265, 1.71633636210093, 1.91216614577929, 1.96049604384032, 2.0693272046881, 2.01174240045616, 1.08078730980692, 2.12499395897963, 2.9196879131742, 2.68917441733788, 2.53095916999601, 2.24293960051097, 2.06035426037763, 2.18684451147608, 2.37440010296456, 1.90086174688789, 1.84737406929494}; double eps=0.00001;double N0=0.5; void inputmatr(int l,double N[]) { FILE *input = fopen("D://input.txt","r"); for(int i=0; i<l; i++) fscanf_s(input, "%f", &N[i]); fclose(input); for(int i=0; i<l; i++) printf( "%3.8f",N[i]); printf("\n"); } ... ну тут уже сами вычисления Знаю, что поднимаю основы, но реально не работает Помогите, что делаю не так?
Если программируешь на C++, то желательно использовать STL, а не Cишные библиотеки. Пример: Code: #include <fstream> #include <iostream> ... bool LoadNumbers(string fileName, double arr[], int arrSize) { ifstream inFile(fileName); if (!inFile) { return false; } for (int i = 0; i < arrSize; ++i) { if (inFile.eof()) { inFile.close(); return false; } inFile >> arr[i]; } inFile.close(); return true; } void DisplayNumbers(double arr[], int arrSize) { for (int i = 0; i < arrSize; ++i) { cout << arr[i] << endl; } } Можно ещё так Code: #include <fstream> #include <iostream> #include <iterator> #include <algorithm> ... copy( istream_iterator<double>(ifstream("1.txt")), istream_iterator<double>(), ostream_iterator<double>(cout, "\n"));
Да пишу на С++ Способы выше работают (спасибо), но хотелось бы узнать еще пути решения вопроса Сишников на форуме много
strtod юзай Code: #include <stdlib.h> #include <stdio.h> int main( void ) { char *string, *stopstring; double x; long l; int base; unsigned long ul; string = "3.1415926This stopped it"; x = strtod( string, &stopstring ); printf( "string = %s\n", string ); printf(" strtod = %f\n", x ); printf(" Stopped scan at: %s\n\n", stopstring ); string = "-10110134932This stopped it"; l = strtol( string, &stopstring, 10 ); printf( "string = %s\n", string ); printf(" strtol = %ld\n", l ); printf(" Stopped scan at: %s\n\n", stopstring ); string = "10110134932"; printf( "string = %s\n", string ); // Convert string using base 2, 4, and 8: for( base = 2; base <= 8; base *= 2 ) { // Convert the string: ul = strtoul( string, &stopstring, base ); printf( " strtol = %ld (base %d)\n", ul, base ); printf( " Stopped scan at: %s\n", stopstring ); } }