Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
Ленка
0 / 0 / 0
Регистрация: 01.08.2009
Сообщений: 24
#1

потоковый ввод - C++

07.04.2010, 16:14. Просмотров 2255. Ответов 16
Метки нет (Все метки)

всем привет!
ситуация такая: при выполнении считываются только R2 и h, не могу понять, в чем дело. dev-c++ просто выдает "step t = нажмите любую клавишу для выхода", а если запускать через MS Visual C++ выдает ошибку "damage after normal block at ". в чем дело? помогите, пожалуйста, код-то простой вроде.

C++
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
#include <iostream>       
 
 #include <stdlib.h> 
 
     
using namespace std; 
 
 
int main () {
    double R2=0;
    double h=0;
    double t=0;   
    
    cout<<"R2= ";
    cin>>R2;
        
    cout<<"step r = ";
    cin >>h;
        
    cout<<"step t = ";
    cin >>t;   
          system ("PAUSE")  ;
   
   return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2010, 16:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос потоковый ввод (C++):

Потоковый ввод и ввод данных. Работа с числами - C++
Ввести с экрана два нат. числа. Найти частное первого на второе и определить, встречается ли среду его дробной части цифра 3( рассматривать...

потоковый ввод - вывод - C++
всем доброго времени суток. мне вот недавно задали написать программу которая реализует несколько процедур стандартной библиотеки...

Потоковый ввод из файла - C++
Такой вопрос. Считываю данные из текстового файла с помощью потоков и записываю их в двусвязный список. В файле данных для 4 элементов...

Потоковый ввод/вывод - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; int main(int argc, char* argv) { FILE* in = fopen(&quot;xxx.txt&quot;,...

потоковый ввод с консоли - C++
Всем привет! Нужно в цикле вводить строки с консоли, пока пользователю не надоест. Вопрос: как пользователю завершить ввод? Такой код: ...

Потоковый ввод-вывод - C++
Написать программу, которая будет добавлять в текстовый файл введенную с клавиатуры информацию Следует предусмотреть возможность выбора...

16
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
07.04.2010, 16:18 #2
wxDev-C++ все хавает

Добавлено через 13 секунд
ошибок в коде нет
1
Ленка
0 / 0 / 0
Регистрация: 01.08.2009
Сообщений: 24
07.04.2010, 16:20  [ТС] #3
я уже два компилятора скачала( может с машиной что-то не то?
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
07.04.2010, 17:00 #4
Ленка, а это так задуманно, что программа три числа считывает и ничего не выводит?
Я синтаксических ошибок тоже не увидел, на что VS ругается - не понятно...
0
Ленка
0 / 0 / 0
Регистрация: 01.08.2009
Сообщений: 24
07.04.2010, 17:03  [ТС] #5
да нет, это кусок программы, я уже вырезала и оформила в отдельную, все равно у меня оба компилятора не хотят слушаться. уже на считывании этом косяк, я даже не могу проверить, что там у меня дальше происходит, хоть об стену бейся.
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
07.04.2010, 17:18 #6
Ленка, так Вы бы всю программу выложили...
0
Ленка
0 / 0 / 0
Регистрация: 01.08.2009
Сообщений: 24
07.04.2010, 17:22  [ТС] #7
ну вот что-то в этом духе...



C++
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <iostream>       
 #include <fstream>
 #include <stdlib.h> 
 
     
using namespace std; 
 
double coef(double x, double y);
double coef1 (double x, int i, int j);
double coef2 (double x, int i, int j);
double fi (double x);
 
int main () {
    double R2=0;
    double h=0;
    double t=0;
    const double T=0.5;
    const double y0=1;
    const double y1=1;
    const double s=1;    
    
    ofstream fout("result.txt");
    
    cout<<"R2= ";
    cin>>R2;
        
    cout<<"step r = ";
    cin >>h;
        
    cout<<"step t = ";
    cin >>t;    
    
    
    int n=R2/h; 
    int m=T/t;  
    double* p = new double [n];
    double* q = new double [n];
    double a, b, c, d, x=0; 
 
    int i=0, j=0;
    
//динамический массив
    double** y = new double* [n];                
    for (int k=0; k<n+1; k++) y[k]=new double[m];
   
 
 
    for (i=0; i<n+1; i++) {                                                   
             y[i][0]=y0;
            }
 
for (j=0; j<n; j++){
    
   p[0]=1;
   q[0]=0; 
    
    for(i=1; i<n+1; i++) {                                                   //прямо ход прогонки
             x=i*h;
             
             a=coef2(x,i,j)/h/h/x;
             b=1/t+coef1(x,i,j)/h/h/x+coef2(x,i,j)/h/x/h;
             c=coef1(x,i,j)/h/h/x;
             d=fi(x)*(-1)-y[i][j]/t;
             
             p[i]=c/(b-a*p[i-1]);                                  
             q[i]=(a*q[i-1]-d)/(b-a*p[i-1]);
             }
             
    y[n][j+1]=(y[n][j]/t+y1*2/h/h/x*coef(R2,y[n][j])*s*h-q[n]*2/h/h/x*coef(R2,y[n][j])-fi(x))/(1/t-2/h/h/x*coef(R2,y[n][j])*(h*s+1+p[n]));
             
    for (i=n; i>-1; i--)  {                                                  //обратный ход прогонки
        y[i][j+1]=y[i+1][j+1]*p[i]+q[i];
        fout << y[i][j+1] << "  ";
        }
   fout << endl;     
        }    
        delete [] y;
        delete [] p;        
        delete [] q;        
      system ("PAUSE")  ;
   
   return 0;
}  
 
 
double coef(double x, double y) {
       return x*y;
       }
       
double coef1 (double x, int i, int j) {
       int m,n;    
       double** y = new double* [n];                
       for (int k=0; k<n+1; k++) y[k]=new double[m];
       return (1/2*(coef(x,y[i+1][j])+coef(x,y[i][j])));
       }
       
double coef2 (double x, int i, int j) {
       int m,n;
       double** y = new double* [n];                
       for (int k=0; k<n+1; k++) y[k]=new double[m];
       return (1/2*(coef(x,y[i][j])+coef(x,y[i-1][j])));
       }
       
double fi (double x) {
       return 1;}
0
Nike775
3 / 2 / 1
Регистрация: 01.04.2010
Сообщений: 30
07.04.2010, 17:26 #8
у меня никаких ошибок таже не пишет
проверь компилятор
0
Ленка
0 / 0 / 0
Регистрация: 01.08.2009
Сообщений: 24
07.04.2010, 17:28  [ТС] #9
да два компилятора стоит, говорю же. ошибок не выдает, только прога не работает.
0
Lаmer
7 / 7 / 4
Регистрация: 24.03.2010
Сообщений: 25
07.04.2010, 18:46 #10
У меня вылетела с ошибкой "Переменная 'n' используется без инициализации".

А что делает эта программа?
0
Ленка
0 / 0 / 0
Регистрация: 01.08.2009
Сообщений: 24
07.04.2010, 19:39  [ТС] #11
решает нелинейное уравнение теплопроводности, если вам это что-то говорит)
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
07.04.2010, 22:42 #12
Цитата Сообщение от Ленка Посмотреть сообщение
C++
1
2
double* p = new double [n]; 
double* q = new double [n];
А действительно - переменной n даже объявления нигде не увидел, тем более - инициализации...
0
Ленка
0 / 0 / 0
Регистрация: 01.08.2009
Сообщений: 24
07.04.2010, 22:52  [ТС] #13
там выше буквально строкой. dev c++ съел. на ввод пользователем я уже подзабила, вбила руками в константы. теперь еще с памятью что-то((
C++
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <iostream>       
 #include <fstream>
 #include <stdlib.h> 
 
     
using namespace std; 
 
double coef(double x, double y);
double fi (double x);
 
int main () {
    double R2=1;
    double h=0.05;
    double t=0.01;
    const double T=0.5;
    const double y0=1;
    const double y1=1;
    const double s=1;    
    
    
    
    int n; 
    int m;  
    m=T/t+1;
    n=R2/h+1;
    float* p = new float [n];
    float* q = new float [n];
    float a, b, c, d, x=0; 
    int i=0, j=0;
    
 
    float** y = new float* [n];                
    for (int k=0; k<n+1; k++) y[k]=new float[m];
   
 
   for (i=0; i<n; i++) {                                                   
        for (j=0; j<m; j++)
             y[i][j]=0;
            }
 
    for (i=0; i<n+1; i++) {                                                   
             y[i][0]=y0;
            }           
      x=h;            
                  
 
    ofstream fout("result.txt");     
for (j=0; j<n; j++){
    
   p[0]=1;
   q[0]=0; 
 
    for(i=1; i<n+1; i++) {                                                   
             x=h*i;
             
             a=1/2*(x*y[i][j]+x*y[i-1][j])/h/h/x;
             b=1/t+(1/2*(coef(x,y[i][j])+coef(x,y[i+1][j])))/h/h/x+(1/2*(coef(x,y[i][j])+coef(x,y[i-1][j])))/h/x/h;
             c=(1/2*(coef(x,y[i][j])+coef(x,y[i+1][j])))/h/h/x;
             d=fi(x)*(-1)-y[i][j]/t;
             
             p[i]=c/(b-a*p[i-1]);                                  
             q[i]=(a*q[i-1]-d)/(b-a*p[i-1]);
             }
             
    y[n][j+1]=(y[n][j]/t+y1*2/h/h/x*coef(R2,y[n][j])*s*h-q[n]*2/h/h/x*coef(R2,y[n][j])-fi(x))/(1/t-2/h/h/x*coef(R2,y[n][j])*(h*s+1+p[n]));
             
    for (i=n-1; i>-1; i--)  {                                                  
        y[i][j+1]=y[i+1][j+1]*p[i]+q[i];
        fout << y[i][j+1] << "  ";
        }
   fout << endl;     
        }    
   for (i = 0; i < n; i++) {
    delete [] y[i];
    delete [] y;
     }
 
        delete [] p;        
        delete [] q;        
      system ("PAUSE")  ;
   
   return 0;
}  
 
 
double coef(double x, double y) {
       return y *x;
       }
 
double fi (double x) {
       return 1;}

при отладке переменные a,b,c,d не меняются, постоянно остаются 0, 100, 0, -101.
если посчитать вручную, то там и близко такого нет
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
07.04.2010, 23:04 #14
Цитата Сообщение от Ленка Посмотреть сообщение
for (int k=0; k<n+1; k++) y[k]=new float[m];
условие неверное
for ( int k = 0; k < n; ++k )
И как-то очень много переменных на мой взгляд, да ещё и с такими содержательными именами...
1
Ленка
0 / 0 / 0
Регистрация: 01.08.2009
Сообщений: 24
07.04.2010, 23:43  [ТС] #15
не помогло((

а переменные все нужны, тут уж никуда не деться. все они - либо коэффициенты перед функциями, либо счетчики, как их называть по-другому не знаю, у меня фантазии не хватает.
0
07.04.2010, 23:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2010, 23:43
Привет! Вот еще темы с ответами:

Потоковый ввод/вывод текста - C++
Добрый день! Помогите пожалуйста разобраться. Почему при вводе текста в консоли, он сохраняется каракулями? #include &lt;cstdlib&gt; ...

Потоковый ввод/вывод wchar_t - C++
Здравствуйте, есть простенький код #include &lt;fstream&gt; #include &lt;iterator&gt; #include &lt;cctype&gt; template&lt;class InputIt, class...

потоковый ввод и вывод строки С++ - C++
Ввести с клавиатуры строку символов. Вывести строку в обратном порядке на экран. В задаче использовать потоковый ввод и вывод строки

Потоковый ввод / вывод файлов - C++
Помогите пожайлуйста исправить ошибки в коде. В функции OemToChar пишет &quot;char*&quot; не совместим с параметром &quot;LPWSTR&quot; #include &quot;stdafx.h&quot; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.