powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите исправить ошибки в программах на С++.
25 сообщений из 83, страница 1 из 4
Помогите исправить ошибки в программах на С++.
    #33594810
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем, кто читает эту тему! Люди добрые! Помогите, пожалуйста, исправить ошибки в программе, написанной на С++. Для начала коротко о себе. Я - студент-заочник 1-го курса, делающий лабы. А заочник я из-за инвалидности, поэтому не могу приходить в институт за консультацией и ищу помощи в инете. И вот задание 2-ой лабы и программа, в которой всего один недостаток:
Код: plaintext
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.
Лабораторная работа №  2 

 

Тема: Алгоритмы с разветвлениями. Условный оператор.

Задание: Написать программу для решения поставленной задачи (см. варианты заданий). Исходные данные и результаты вывести в табличной форме.


 

Порядок выполнения работы:

 

После ввода исходных данных выполнить очистку экрана и вывести результаты следующим образом. В верхней части экрана должны располагаться строки:

 

Лабораторная работа №  2 

Тема: “Условный оператор”

\ Выполнил:  фамилия имя \

 

С помощью спецсимвола табуляции первые две строки должны быть размещены по центру экрана, а третья — чуть правее. Далее должны следовать четыре пустые строки и потом — исходные данные и результаты работы программы (в табличной форме).

 Варианты заданий: 

 8 .Дано действительное число а. Вычислить f(a), если 
             0  при x<= 0 
f(x)=    x*x-x при  0 <x<= 1 
            x*x-sin(x*x) в остальных случаях
Текст программы имеет вид:
Код: plaintext
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.
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <windows.h>

#pragma hdrstop
#pragma argsused
/////////////////////////////////////////////////////////////////
char bufRus[ 256 ];
char* Rus(const char* text)
{
CharToOem(text, bufRus);
return bufRus;
}
char* Rus(char* text)
{
 CharToOem(text,text);
 return text;
}
/////////////////////////////////////////////////////////////////
double main(){
   double a, x, f;
   cout<<Rus("Введите действительное число а: ");
   cin>>a;
   a=x;
   clrscr();
   cout<<Rus("\t\t\t\tЛабораторная работа № 1");
   cout<<endl;
   cout<<Rus("\t\t\t\tТема: \"Условный оператор\" " );
   cout<<endl;
   cout<<Rus("\t\t\t\t\t\\Выполнил: Чашенков Сергей\\\r\n\n\n\n");
   cout<<endl;
   if(x<= 0 ) f= 0 ; cout<</*"\n\n%s\n",*/Rus("При х=")<<x;
                          cout<<Rus(" f(x)=0");
                          cout<<endl;
   if(x> 0 &&x<= 1 ) f=x*x-x; cout<</*"\n\n%s\n",*/Rus("При х=")<<x;
                                            cout<<Rus(" f(x)=x*x-x=")<<f;
                                            cout<<endl;
   if (x> 1 ) f=x*x-sin(x*x); cout<</*"\n\n%s\n",*/Rus("При х=")<<x;
                                           cout<<Rus(" f(x)=x*x-sin(x*x)=")<<f;
                                           cout<<endl;
   getch();
}
Недостаток в выводе результатов. При вводе числа, например, 2 выводится вот что:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
                              Лабораторная работа №  1 
                               Тема: "Условный оператор"
                                      \Выполнил: Чашенков Сергей\


При х= 2 .53991е- 314  f(x)= 0 
При х= 2 .53991е- 314  f(x)=x*x-x=- 2 .53991е- 314 
При х= 2 .53991е- 314  f(x)=sin(x*x)=- 2 .53991е- 314 
Именно так! Вместо числа 2 и результата, выводится 2.53991е-314 и (-2.53991е-314). В паскале в таких случаях просто пишется в объявлении переменной - ":0:2". Типа выводить два знака после запятой. А здесь как?!
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33594899
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)

cout<<Rus("\t\t\t\tЛабораторная работа № 1");
cout<<endl;
==
cout<<Rus("\t\t\t\tЛабораторная работа № 1")<<endl;
2) Не рекомендуется смешивать вызовы <iostream> и <stdoi.h>
Просто плохой стиль. Тем более что очистка экрана и getch в конце вам собственно на фиг не нужны.

3) if(x<=0) f=0; cout<</*"\n\n%s\n",*/Rus("При х=")<<x;
cout<<Rus(" f(x)=0");
cout<<endl;
После IF должен идти ОПЕРАТОР или ОПЕРАТОРНЫЙ БЛОК. В вашем случае
(видимо) должно быть несколько операторов, стало быть , должен быть операторный блок.

4) По логике работы три ветки взаимоисключающие, ну так и пишите их взаимоисключающими, с else.

5) по поводу формата -- смотрите в сторону манипуляторов <iostream>

6) У вас (видимо) был введен 0 на входе, но он и должен быть нулем без всяких форматов. У вас же печатается какая-то фигня вообще (я не понял почему), так что совет - приведите в порядок логику работы программы сначала, а затем еще раз прогоните и посмотрите на результаты. Желательно вообще-то все три ветки прогонять, а не одну. Если опять будут вопросы, шлите также и ввод , а не толко вывод (один Бог знает, что вы там набивали).
Хорошим тоном в таких случаях считается сделать вывод также и исходных данных, чтобы было видно, что они вводятся, и вводятся правильно.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33595720
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv1)

cout<<Rus("\t\t\t\tЛабораторная работа № 1");
cout<<endl;
==
cout<<Rus("\t\t\t\tЛабораторная работа № 1")<<endl;
В одной теме мне посоветовали сделать как в первом случае, но я проверил второй способ - работает и с ним. Просто сначала у меня эта строка имела вид:
Код: plaintext
cout<<"\t\t\t\t\r\n",Rus("Лабораторная работа № 1")<<endl;
Компилятор в этой строке выдавал ошибку. Мне посоветовали изменить её либо так:
Код: plaintext
cout<<"\t\t\t\t",Rus("Лабораторная работа № 1")<<endl;
, либо так:
Код: plaintext
1.
cout<<"\t\t\t\t\r\n",Rus("Лабораторная работа № 1");
cout<<endl;
Но после этого у меня программа компилировалась, но строка "Лабораторная работа № 1" (а вместе с ней и все строки, т.к. я их преобразовал подобно этой) не выводилась. Маленько поломав мозги, я преобразовал строки:
Код: plaintext
1.
cout<<"\t\t\t\t\r\n",Rus("Лабораторная работа № 1");
cout<<endl;
в
Код: plaintext
1.
cout<<Rus("\t\t\t\tЛабораторная работа № 1");
   cout<<endl;
MasterZiv2) Не рекомендуется смешивать вызовы <iostream> и <stdoi.h>
Просто плохой стиль.Хм... А покажи мне место где я их смешал... MasterZivТем более что очистка экрана и getch в конце вам собственно на фиг не нужны.Читай внимательнее задание лабы:
Код: plaintext
После ввода исходных данных выполнить очистку экрана...
А getch(); используется для того, чтобы можно было увидеть результат работы программы.

MasterZiv3) if(x<=0) f=0; cout<</*"\n\n%s\n",*/Rus("При х=")<<x;
cout<<Rus(" f(x)=0");
cout<<endl;
После IF должен идти ОПЕРАТОР или ОПЕРАТОРНЫЙ БЛОК. В вашем случае
(видимо) должно быть несколько операторов, стало быть , должен быть операторный блок. Что-то я маленько недопонял... Приведи пример. А! Должно быть ты имеешь ввиду сделать так:
Код: plaintext
1.
2.
 if(x<= 0 ) {f= 0 ; cout<</*"\n\n%s\n",*/Rus("При х=")<<x;
                          cout<<Rus(" f(x)=0");
                          cout<<endl;}

MasterZiv4) По логике работы три ветки взаимоисключающие, ну так и пишите их взаимоисключающими, с else.Я так пробовал... Если написать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
if(x<= 0 ) f= 0 ; cout<</*"\n\n%s\n",*/Rus("При х=")<<x;
                         cout<<Rus(" f(x)=0");
                         cout<<endl;
   else if(x> 0 &&x<= 1 ) f=x*x-x; cout<</*"\n\n%s\n",*/Rus("При х=")<<x;
                                                   cout<<Rus(" f(x)=x*x-x=")<<f;
                                                   cout<<endl;
   else if (x> 1 ) f=x*x-sin(x*x); cout<</*"\n\n%s\n",*/Rus("При х=")<<x;
                                                  cout<<Rus(" f(x)=x*x-sin(x*x)=")<<f;
                                                  cout<<endl;
выдаётся ошибка о том, что else потеряно. Если написать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
if(x<= 0 ){ f= 0 ; cout<</*"\n\n%s\n",*/Rus("При х=")<<x;
                         cout<<Rus(" f(x)=0");
                         cout<<endl;
   [else if(x> 0 &&x<= 1 ) f=x*x-x; cout<</*"\n\n%s\n",*/Rus("При х=")<<x;
                                                     cout<<Rus(" f(x)=x*x-x=")<<f;
                                                     cout<<endl;
   [else if (x> 1 ) f=x*x-sin(x*x); cout<</*"\n\n%s\n",*/Rus("При х=")<<x;
                                                   cout<<Rus(" f(x)=x*x-sin(x*x)=")<<f;
                                                   cout<<endl;]]
выдаётся ошибка синтаксиса.

MasterZiv6) У вас (видимо) был введен 0 на входе, но он и должен быть нулем без всяких форматов. У вас же печатается какая-то фигня вообще (я не понял почему), так что совет - приведите в порядок логику работы программы сначала, а затем еще раз прогоните и посмотрите на результаты. Желательно вообще-то все три ветки прогонять, а не одну. Если опять будут вопросы, шлите также и ввод , а не толко вывод (один Бог знает, что вы там набивали).
Хорошим тоном в таких случаях считается сделать вывод также и исходных данных, чтобы было видно, что они вводятся, и вводятся правильно.
Хм... Видимо ты невнимательно прочёл моё сообщение. А я писал: "При вводе числа, например, 2 выводится вот что:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
   Лабораторная работа №  1 
                               Тема: "Условный оператор"
                                      \Выполнил: Чашенков Сергей\


При х= 2 .53991е- 314  f(x)= 0 
При х= 2 .53991е- 314  f(x)=x*x-x=- 2 .53991е- 314 
При х= 2 .53991е- 314  f(x)=sin(x*x)=- 2 .53991е- 314 
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33595858
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parenyok
Не плоди темы, а лучше ЧИТАЙ ТО, ЧТО ТЕБЕ ПИШУТ....
Если у тебя много времени, то у других его не настолько много...
Учи матчасть... ("Блин..",- сказал я и тихо грязно выругался )

Сказал же тебе уже Какабас Барабас, что:
Код: plaintext
1.
a=x;
приводит к ошибке. По умолчанию переменные не инициализируются каким-либо значением (т.е. в переменной находтся всякий мусор...)...
Так как ты вводишь данные в переменную а, то этим кодом:
Код: plaintext
1.
a=x;
ты уничтожаешь то полезное, что успел сделать...

К сведению: в программировании выражение a=b не эквивалентно выражению b=a ...
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33595909
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ура!!! Решил попробовать заменить а=х на х=а и использовать скобки для задания блока:
Код: plaintext
1.
2.
3.
4.
if(x<= 0 ) {
     f= 0 ; cout<</*"\n\n%s\n",*/Rus("При х="<<x; 
     cout<<Rus(" f(x)=0"; 
     cout<<endl; 
   }
Заработало! И никаких else не надо!

Теперь проблема с третьей лабой.
Задание:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Лабораторная работа №  3 

Тема: Операторы цикла. Вычисления с некоторой точностью.
Задание: Написать программу для решения поставленной задачи (см. варианты заданий).

Замечания:

	Для хранения целых чисел вместо типа данных int рекомендуется использовать тип unsigned long int, для хранения действительных чисел — тип double. 
	В качестве результатов работы программы обязательно вывести на экран не только значение суммы, но и заданную точность, количество учтенных слагаемых и значение последнего слагаемого (для проверки). 

Варианты заданий:


 8 .	Даны действительные числа x, e (x<> 0 , e> 0 ). Вычислить с точностью e:

беск.     x^ 2 *k
сумма  --------
k= 0      ( 2 ^k) * k!
(беск. = знак бесконечности; сумма = знак суммы. В числителе - х в степени 2k, а в знаменателе - 2 в степени k умноженная на факториал k, не относящийся к степени.) Текст программы имеет вид:
Код: plaintext
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.
//---------------------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <windows.h>

#pragma hdrstop
#pragma argsused
//---------------------------------------------------------------------------
char* Rus(char* text);
int main(){
  const int max= 500 ;
  double x, e;
  clrscr();
  printf(Rus("Введите значение х!=0:"));
  scanf("%d", &x);
  do
  {
     if (x= 0 ) printf(Rus("Ошибка! Х не должно равняться 0! Попробуйте снова:\n"));
        printf(Rus("Введите значение х не равное 0:"));
        scanf("%d", &x);
  }
  while (x= 0 );
  printf(Rus("Введите точность e>0:"));
  scanf("%d", &e);
  do
  {
     if (e<= 0 ) printf(Rus("Ошибка! E должно быть больше 0! Попробуйте снова:\n"));
        printf(Rus("Введите значение е>0:"));
        scanf("%d", &e);
  }
  while (e<= 0 );
  bool done=true;
  double sum= 1 , y=sum, a, b;
  for (int k= 0 ; fabs(sum)>e; k++){
    a= 2 ;
    while (a>=k){
      b= 1 *a;
      a++;
    }
    sum*=pow(x, 2 *k)/(pow( 2 ,k)*b;
    y+=sum;
    if(k>max){
       printf(Rus("\nРяд расходится!"));
       done=false; break;
    }
  }
    if(done){
       printf(Rus("\nРезультат функции %6.2f с точностью %6.2f при х=%6.2f получен после %6.2f итераций", sum, e, x, k);
    }
    getch();
  }
/////////////////////////////////////////////////////////////////
char* Rus(char* text)
{
 CharToOem(text,text);
 return text;
}
/////////////////////////////////////////////////////////////////
Ошибка в строке
Код: plaintext
sum*=pow(x, 2 *k)/(pow( 2 ,k)*b;
В сообщении об ошибке написано "Ожидание". Помоги!
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33595963
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. У тебя помесь while и for, некошерно как-то :)
1.1. вот за это: "while (x=0);" - по рукам битой !
далее, подобные фрагменты:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
printf(Rus("Введите значение х!=0:"));
  scanf("%d", &x);
  do
  {
     if (x= 0 ) printf(Rus("Ошибка! Х не должно равняться 0! Попробуйте снова:\n"));
        printf(Rus("Введите значение х не равное 0:"));
        scanf("%d", &x);
  }while (x== 0 );
почему бы не написать например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
  for(x= 0 ;x== 0 ;)
  {
     printf(Rus("Введите значение х!=0:"));
     scanf("%d", &x);
     if (x== 0 ) printf(Rus("Ошибка! Х не должно равняться 0! Попробуйте снова:\n"));
  }
2. Факториал на каждом проходе сначала будешь считать ?
3. Складывать ряд вещественных чисел от бОльших к меньшим - приведет к потере точности.
4. "Ошибка в строке sum*=pow(x,2*k)/(pow(2,k)*b;" - на первый взгляд, это ведь сумма, зачем *= ????
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33596176
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C. parenyok
Не плоди темы, а лучше ЧИТАЙ ТО, ЧТО ТЕБЕ ПИШУТ....
Если у тебя много времени, то у других его не настолько много...
Учи матчасть... ("Блин..",- сказал я и тихо грязно выругался )Знаешь, что?! Если у других времени мало, то они не регистрируются на форумах подобно этому и уж по крайней мере не ищут темы тех, которым отказали в помощи и не пишут там "оскорбительные" письма, отбивая желание у тех, кто согласился помочь, а делают свои дела! Тем более я в предыдущей теме писал и в этой пишу, что Я НЕ ПРОШУ ПИСАТЬ ЗА МЕНЯ ПРОГИ, А ТОЛЬКО ИСПРАВИТЬ ОШИБКИ!!! А людям, которые знают С++ (пускай даже на базовом уровне) ошибки исправить не составит большого труда, потому как я сейчас изучаю как раз только азы этого языка! А тот, кто не хочет помочь, тот просто проявляет свою гордость, что, мол, он может книгу почитать, вместо этого у других время отнимает! Если так, то для чего вообще этот форум создавали???!!!

Станислав C.Сказал же тебе уже Какабас Барабас, что:
Код: plaintext
1.
a=x;
приводит к ошибке. Ой! Да спасибочки ему на добром слове... И спасибо тебе, Стас, что сжалился надо мной и включил в прогу функцию, хотя оказывается можно просто поменять а=х на х=а и в операторах условия "{ }" поставить! А не затруднит ли тебе в этой проге (см. выше) исправить ошибки?
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33596413
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во! Карабас Барабас! А ты чё тут делаешь?! Нет, ну спасибо, конечно, что ты проявил желание мне помочь, но просто с вашей со Стасом стороны как-то по нахальски получается: в самой первой теме, которую я создал, меня кинули. Во второй - тоже. Дак ещё и в эту включились...
Карабас Барабас1. У тебя помесь while и for, некошерно как-то :)
А чё тут такого некошерного-то?
Карабас Барабас1.1. вот за это: "while (x=0);" - по рукам битой !
далее, подобные фрагменты:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
printf(Rus("Введите значение х!=0:"));
  scanf("%d", &x);
  do
  {
     if (x= 0 ) printf(Rus("Ошибка! Х не должно равняться 0! Попробуйте снова:\n"));
        printf(Rus("Введите значение х не равное 0:"));
        scanf("%d", &x);
  }while (x== 0 );
почему бы не написать например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
  for(x= 0 ;x== 0 ;)
  {
     printf(Rus("Введите значение х!=0:"));
     scanf("%d", &x);
     if (x== 0 ) printf(Rus("Ошибка! Х не должно равняться 0! Попробуйте снова:\n"));
  }
Хм... А какая разница-то?
Карабас Барабас2. Факториал на каждом проходе сначала будешь считать ?Всмысле...
Карабас Барабас3. Складывать ряд вещественных чисел от бОльших к меньшим - приведет к потере точности.Хм... Ну я вычисляю сумму положительных чисел по формуле
Код: plaintext
1.
2.
беск.     x^ 2 *k
сумма  --------
k= 0      ( 2 ^k) * k!
А иначе как? Вот в книге Павловской на стр. 50-51 и в практикуме на стр. 40-41 приведены примеры подобно моей лабе. Но я не пойму почему в задачах требуется найти значения функций по одной формуле, а в программе они вычисляются абсолютно по другой формуле.
Карабас Барабас4. "Ошибка в строке sum*=pow(x,2*k)/(pow(2,k)*b;" - на первый взгляд, это ведь сумма, зачем *= ????
Posted via ActualForum NNTP Server 1.3А это и многое другое я взял из книг. Книга Павловской стр. 50-51 и практикум стр. 40-41.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33596500
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parenyokВо! Карабас Барабас! А ты чё тут делаешь?!Мне непонятен странный тон ....
parenyokХм... А какая разница-то?В твоем варианте дважды стоит один и тот же scanf
parenyok Карабас Барабас2. Факториал на каждом проходе сначала будешь считать ?Всмысле...в прямом смысле. подумай, как будет считаться факториал на 10000-м, 10001-м, 10002-м проходах. Впрочем, такого факториала не вычислить точно.

parenyok Карабас Барабас3. Складывать ряд вещественных чисел от бОльших к меньшим - приведет к потере точности.Хм... Ну я вычисляю сумму положительных чисел по формуле
Код: plaintext
1.
2.
беск.     x^ 2 *k
сумма  --------
k= 0      ( 2 ^k) * k!
А иначе как?Обычно для сохранения точности сложение большого количества чисел начинают с меньших. Потому что нельзя получить правильный результат, вычисляя 1е100 + 1е-100 (пример очень грубый)
parenyok Карабас Барабас4. "Ошибка в строке sum*=pow(x,2*k)/(pow(2,k)*b;" - на первый взгляд, это ведь сумма, зачем *= ????А это и многое другое я взял из книг. Книга Павловской стр. 50-51 и практикум стр. 40-41.разбирая логику программы, я понял, что sum - это промежуточное значение, которое будет прибавляться к общей сумме. Зачем же ты каждый раз умножаешь это значение на величину очередного члена ряда ?
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33596655
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лови, паренек... Основной алгоритм вычислений:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
S= 1 ;
n= 0 ;
while ((S>e)&&(n<max))
{
//Вычисление очередного члена ряда:
//Последующий член ряда отличается от предыдущего на x^2/(2*n), где n=1,2,3,...
/*
 Вот, кстати, тебе и ответ на вопрос:
 "Но я не пойму почему в задачах требуется найти значения функций по 
  одной формуле, а в программе они вычисляются абсолютно по другой 
  формуле."
*/
if (n== 0 )
  S= 1 ;
else
{
 S *=x*x/ 2 /n;
}

//Вычисление суммы ряда
Sum+=S;
n++;
}

Остальное додумай сам...
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33597865
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НАписать так :

Код: plaintext
1.
cout<<"\t\t\t\t\r\n",Rus("Лабораторная работа № 1")<<endl;

это все равно, что написать так:
Код: plaintext
1.
cout<<Rus("Лабораторная работа № 1")<<endl;

А надо было написать так:
Код: plaintext
1.
cout << "\t\t\t\t\r\n" << Rus("Лабораторная работа № 1") << endl;


Да, веселый топег попался !!
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33597873
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заработало! И никаких else не надо!

ELSE НАДО !!!
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33597936
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У, блин....

Как бы не выругацца...

Предлагаю такое "соревнование" : parenyok, ты пиши каждую строчку своей программы, и за ней пишы , что она делает. По кусочкам можно, не все сразу.
А мы будем говорить, правильно ты думаешь, или нет. А если неправильно, будешь заново писать, что оно делает, либо менять свою программу чтобы она делала то, что ты говоришь....
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33597960
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
// Лажовая функция - портит входные данные.
// Она вообще работать не будет на самом деле. Будет защита памяти.
char* Rus(char* text)
{
 CharToOem(text,text);
 return text;
}

...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33598262
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
// Лажовая функция - портит входные данные.
// Она вообще работать не будет на самом деле. Будет защита памяти.
char* Rus(char* text)
{
 CharToOem(text,text);
 return text;
}


Да, входные данные портит безвозвратно. Но для целей "вывел на консоль и забыл" - другого и не надо... Функция работает! (я, как "автор" этой функции сначала все проверил) И явных ошибок (типа Access violation или др.) в пределах учебной программы пользователя Паренек не выдает!!!
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33598491
cpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpp
Гость
Станислав C. MasterZiv
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
// Лажовая функция - портит входные данные.
// Она вообще работать не будет на самом деле. Будет защита памяти.
char* Rus(char* text)
{
 CharToOem(text,text);
 return text;
}


Да, входные данные портит безвозвратно. Но для целей "вывел на консоль и забыл" - другого и не надо... Функция работает! (я, как "автор" этой функции сначала все проверил) И явных ошибок (типа Access violation или др.) в пределах учебной программы пользователя Паренек не выдает!!!



чаще читаем MSDN, господа. Много думаем.


MSDNIf the CharToOem function is being used as an ANSI function, the string can be translated in place by setting the lpszDst parameter to the same address as the lpszSrc parameter . This cannot be done if CharToOem is being used as a wide-character function.

так что память нихрена не испортится
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33598930
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cppтак что память нихрена не испортитсяИспортится, испортится - вызови ее дважды, делов-то
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33598962
cpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpp
Гость
ничего не портится

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
char c[ 80 ];
	strcpy(c,"привет мир");
	CharToOem(c,c);
	puts(c);
	OemToChar(c,c);
	puts(c);
	CharToOem(c,c);
	puts(c);

привет мир тебе
яЁштхЄ ьшЁ Єхсх
привет мир тебе


а если просто два раза вызвать - то испортится строка - но она imho по любому испортится, даже если буферы разные - конвертация такая.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33599153
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C.
Функция работает! (я, как "автор" этой функции сначала все проверил) И явных ошибок (типа Access violation или др.) в пределах учебной

Функция НЕ работает. Я тоже проверил. (да и проверять-то тут нечего).

Завалится она на строке:
Код: plaintext
1.
printf(Rus("Введите значение х!=0:"));

попытавшись записать в сегмент, где данные только для чтения.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33599319
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите исправить ошибку в четвёртой лабе. Задание:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Лабораторная работа №  4 
Тема: Использование функций.
Задание: Написать программу для решения поставленной задачи с использованием функции (см. варианты заданий). 
Отчет: Правила оформления отчета прежние.

Варианты заданий:
 8 . Даны действительные числа s,t. Получить

f ( t, - 2 *s,  1 . 17  ) + f (  2 . 2 , t, s-t ), где 

                2 *a – b – sin c
f(a,b,c)=	—————        
                       5  + c
Программа:
Код: plaintext
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.
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <windows.h>

#pragma hdrstop
#pragma argsused
//---------------------------------------------------------------------------
char* Rus(char* text);

void main(void)
{
  double s, t, a, b, c, f, f1, f2;
  clrscr();
  printf("%s",Rus("Введите число s: "));
  scanf("%f", &s);
  printf("%s",Rus("Введите число t: "));
  scanf("%f", &t);
  double del(double a, double b, double c);
  a=t;
  b=- 2 *s;
  c= 1 . 17 ;
  f1=del(a, b, c);
  printf("%s",Rus("При а=t="a", b=-2*s="b" и с="c" значение f1=(2*a-b-sinc)/(5+c)="f1";"));
  a= 2 . 2 ;
  b=t;
  c=s-t;
  f2=del(a, b, c);
  printf("%s",Rus("При а="a", b=t="b" и с=s-t="c" значение f2=(2*a-b-sinc)/(5+c)="f2";"));
  f=summa(f1, f2);
  printf("%s",Rus("Итак, f1+f2="f1"+"f2"="f"."));
  getch();
  }
}
  double del(double a, double b, double c){
  return(( 2 *a-b-sin{c})/( 5 +c));
}
double summa(double f1, double f2){
  return(f1+f2);
}
Ошибка в строке
Код: plaintext
printf("%s",Rus("При а=t="a", b=-2*s="b" и с="c" значение f1=(2*a-b-sinc)/(5+c)="f1";"));
В сообщении об ошибках написано: "Функциональная потеря вызова" (курсор при этом стоит на символе a, который в ковычках). Очевидно, что такая же ошибка и в строке
Код: plaintext
printf("%s",Rus("При а="a", b=t="b" и с=s-t="c" значение f2=(2*a-b-sinc)/(5+c)="f2";"));
Если что-то покажется странным, то сообщаю, что я писал программу на основе примера из книги Павловской стр. 74-75.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33599574
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv Станислав C.
Функция работает! (я, как "автор" этой функции сначала все проверил) И явных ошибок (типа Access violation или др.) в пределах учебной

Функция НЕ работает. Я тоже проверил. (да и проверять-то тут нечего).

Завалится она на строке:
Код: plaintext
1.
printf(Rus("Введите значение х!=0:"));

попытавшись записать в сегмент, где данные только для чтения.
В VC++ это так . А вот в Билдере все проходит "на ура"... Вот тестовый пример (на Билдере):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
#pragma hdrstop

//---------------------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#include <conio.h>

char *Rus(char *text)
{
CharToOem(text,text);
return text;
}

#pragma argsused

int main(int argc, char* argv[])
{
 printf(Rus("Введите действительное число а: "));
 getch();
        return  0 ;
}
У нашего дорогого Паренька установлен Билдер. Так что все будет "ОК"...
Хотя, конечно, прошу прощения за излишнюю самоуверенность...
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33599842
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЗавалится она на строке:
printf(Rus("Введите значение х!=0:"));



попытавшись записать в сегмент, где данные только для чтения.В каком стандарте написано, что строка "Введите значение х!=0:" - только для чтения ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33599872
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
parenyokПомогите исправить ошибку в четвёртой лабе. Задание:
Прa-а-а-тивный...
Вот тебе Программа:
Код: plaintext
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.
// ass1.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <windows.h>
#include <stdlib.h>

char *charBuf;
char* Rus(const char* text)
{
 if(charBuf!=NULL)
	 delete [] charBuf;
 charBuf=(char *)calloc( 256 ,sizeof(char));
 CharToOem(text,charBuf);
 return charBuf;
}

double del(double a, double b, double c);
double summa(double f1, double f2);

void main(void)
{
  double s= 0 . 00 , t= 0 . 00 , a= 0 . 00 , b= 0 . 00 , c= 0 . 00 , f= 0 . 00 , f1= 0 . 00 , f2= 0 . 00 ;
  clrscr();
  printf("%s",Rus("Введите s: "));
  scanf("%lf",&s);
  printf("\r\n%s",Rus("Введите t: "));
  scanf("%lf",&t);

  a=t;
  b=- 2 *s;
  c= 1 . 17 ;
  f1=del(a,b,c);
  printf("\r\n%s %4f %s %4f %s %4f",Rus("При a=t="),a,", b=-2*s=",b,", c=",c);
  printf("\r\n %s %4f %s\r\n",Rus(" функция f1=(2*a-b-sinc)/(5+c)="),f1,";");

  a= 2 . 2 ;
  b=t;
  c=s-t;
  f2=del( 2 . 2 ,t, s-t);
  printf("\r\n%s %4f %s %4f %s %4f ",Rus("При а="),a,", b=t=",b,"  c=s-t=",c);
  printf("\r\n%s %4f %s",Rus(" Функция f2=(2*a-b-sinc)/(5+c)="),f2,";");
  f=summa(f1, f2);
  printf("\r\n%s%f%s%f%s%f%s",Rus("Итак, f1+f2="),f1,"+",f2,"=",f,".");
  getch();
}

double del(double a, double b, double c){
  return ( 2 *a-b-sin(c))/( 5 +c);
}

double summa(double f1, double f2){
  return(f1+f2);
}



Найди 10 отличий!!!
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33600842
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас БарабасВ каком стандарте написано, что строка "Введите значение х!=0:" - только для чтения ?

А в каком стандарте написано, что ее можно менять ?

И, уж если о стандартах, какого типа это выражение ? А ?
(const char *) - можно ее менять ? Правда я действительно не знаю, написано ли это в стандарте. Смотреть ей-богу лень и смысла нет - все равно как минимум половина компиляторов кладет такие строки в защищенный от записи сегмент констант.
...
Рейтинг: 0 / 0
Помогите исправить ошибки в программах на С++.
    #33600845
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
printf("\r\n%s %4f %s %4f %s %4f",Rus("При a=t="),a,", b=-2*s=",b,", c=",c);


%4f нельзя, надо %4lf, ибо double а не float. Чебурахниццца иначе.
...
Рейтинг: 0 / 0
25 сообщений из 83, страница 1 из 4
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите исправить ошибки в программах на С++.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]