Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Starter1
4 / 4 / 3
Регистрация: 27.03.2013
Сообщений: 45
#1

Уравнение больше реагирует на значение при инициализации переменной - C++

27.03.2013, 16:22. Просмотров 554. Ответов 18
Метки нет (Все метки)

Доброго времени дня! Возникла проблема не пойму в чем дело..
Вот кусок программы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
double x,y;
...............
    else if (i==1){
 
            double r=1;
            float z=0.005,k=0.00124,t=0.01;
            
            Sanf1(k,t);
                scanf("%f",&r);
    printf("r is: %F\n",r);
            
    if((r!=0)||(k!=0)){
                x=((1/r)*(1-pow(e,((-r)*(t/k)))));

это Санф
C++
1
2
3
4
5
6
7
float Sanf1(float a,float b){
    
    printf("Vvedite 4isla: ");
    scanf("%f%f",&a,&b);
    
    return(a,b);
}
(в принцтпе Санф можно и поставить как void)
Но проблема остается..Первое..
Уравнение больше реагирует на значение при инициализации переменной.Если ставится Р=0, то значение выражение пишется как -1.#iNDO0 ...как-то так.
Принтф Р ИЗ показывает пустое место..
Такое впечатление что выводится знак ЕОФ.
В общем поделитесь своими подсказками.

Добавлено через 15 минут
Менял тип возвращаемого значения Санф1 на воид..Все так же, как-то результат , похоже, вообще глух к вводу с клавиатуры.Да и почему вообще не выводит значения Р..

Добавлено через 9 минут
C++
1
2
3
4
5
6
7
float Sanf1(float a,float b){
    
    printf("Vvedite 4isla: ");
    scanf("%f%f",&a,&b);
    
    return(a,b);
}
Добавлено через 45 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    else if (i==1){
 
            double r=1;
            float z=0.005,k=0.00124,t=0.01;
            
            Sanf1(k,t);
                scanf("%f",&r);
    printf("r is: %F\n",r);
            
    if((r!=0)||(k!=0)){
                x=((1/r)*(1-pow(e,((-r)*(t/k)))));
                printf("x is:%f\n",x);
            }
Добавлено через 3 минуты
Интересно, есть ли форумы поживее?

 Комментарий модератора 
Используйте теги оформления кода. Называйте темы осмысленно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2013, 16:22     Уравнение больше реагирует на значение при инициализации переменной
Посмотрите здесь:

Ошибка при инициализации статистической переменной. - C++
Ребят есть задание: В класс строки (пользовательский класс ) добавить статическую защищенную (protected) переменную "счетчик...

Указание типа переменной и ссылки при объявлении\инициализации - C++
Здравствуйте! Возник такой вопрос-зачем нужно указывать тип ссылки при ее инициализации? При объявлении обычной переменной, компилятору...

При отладке программы вылетает окошко с ошибкой: использование переменной без инициализации - C++
код: #include <iostream> #include <conio.h> int A,n,m; using namespace std; void poisk1(); void poisk2(); int main() ...

Для чего при инициализации переменной писать на конце числа первую букву типа? - C++
Например, long long a=123456789123344LL чем будет отличаться от long long a=123456789123344 ?

Ошибка инициализации переменной - C++
Подскажите, пожалуйста, как исправить ошибку инициализации vp в данном случае? По идее, в итоге должно получиться три разных значения vp. ...

Непонятная ошибка инициализации переменной - C++
Можете объяснить плес, почему в этам коде ошипка? int x(int()); Пишет error LNK2019: ссылка на неразрешенный внешний символ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
27.03.2013, 16:36     Уравнение больше реагирует на значение при инициализации переменной #2
Ошибки в Sanf1 перепишете на
C++
1
2
3
4
5
void Sanf1(float & a,float & b){
 
printf("Vvedite 4isla: ");
scanf("%f%f",a,b);
}
Правте
C++
1
scanf("%f",r);
По видимому здесь
C++
1
if((r!=0)||(k!=0)){
нужно так
C++
1
if(r!=0 && k!=0){
А лучше приведите весь код и напишите задание которое нужно выполнить Дословно.
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
27.03.2013, 16:41     Уравнение больше реагирует на значение при инициализации переменной #3
Если Вы думаете, что все бросят свои дела и побегут быстрее Вам помогать, то Вы заблуждаетесь. Можете и подождать, раз Вам лень открыть любую книжку и прочитать, что "%f" это float, а не double

для double есть "%lf"

Добавлено через 3 минуты
Да и вообще тут ошибок больше чем правильного. Вы понимаете что происходит при
C
1
return (a,b)
Starter1
4 / 4 / 3
Регистрация: 27.03.2013
Сообщений: 45
27.03.2013, 16:41  [ТС]     Уравнение больше реагирует на значение при инициализации переменной #4
Гроссмах, я и со спецификаторами игрался.Насчет лень открыть книгу - это не так..Просто уже голова болит, да и на тему ввода-вывода вроде перелистал и КиР и Прата...Страуструп есть но по-честному еще рано.
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
27.03.2013, 16:43     Уравнение больше реагирует на значение при инициализации переменной #5
egor2116, В scanf нужнр передавать адреса памяти, в которые Вы хотите что-то записать.
Starter1
4 / 4 / 3
Регистрация: 27.03.2013
Сообщений: 45
27.03.2013, 16:44  [ТС]     Уравнение больше реагирует на значение при инициализации переменной #6
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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <string.h>
 
#define EOF -91
#define e 2.71
 
double Pint(double, double);
void Pint1();
double Sanf(double,double,double);
float Sanf1(float,float);
 
int  main(void){
    
    FILE* pf=NULL;
    char z[37];
    int i=0;
    pf=fopen("C:\\Documents and Settings..........\Spisok.txt","at+");
    
    for (i=0;i<27;i++){
        Pint1();
        printf("\t Laboratory\n");
        printf("\t Student1\n");
        if (pf!=NULL){
        fgets(z,sizeof(z),pf);
        printf (" %s\n",z);
    }
        
         
    else 
        printf("Failed\n"); 
        
double x,y;
.......
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
///////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////2_variant//////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
        else if (i==1){
 
            double r=1;
            float z=0.005,k=0.00124,t=0.01;
            
            Sanf1(k,t);
                scanf("%f",&r);
    printf("r is: %f\n",r);
            
    if((r!=0)||(k!=0)){
                x=((1/r)*(1-pow(e,((-r)*(t/k)))));
                printf("x is:%f\n",x);
            }
            else 
                printf ("FAiled1\n");
        
                scanf("%f",&z);
                if(((r*r)<100)|| (z>=0)) {
                y=(z*z)*asin((r)/pow((100-(r*r)),0.5));
                printf("y is:%f\n",y);
                }
                else
                    printf("Failed2\n");
                
Pint(x,y);      
        }
...
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
double Pint(double x,double y){
 
    printf("x is: %Lf\n\a",x);
    printf("y is: %Lf\n",y);
    
    int i=(27*2);
    
    while(i>0){
        printf("__");
        i--;
 
        if((i%27)==0){
            printf("\n");
        }
    }
    
    printf("\n");
    
    return(x,y);
}
void Pint1(){
 
    int i=(27*3);
 
while (i>0){
        printf("//");
        i--;
 
        if((i%27)==0){
            printf("\n");
        }
}
        printf("\n");
        
        return;
}
double Sanf(double a,double b,double c){
 
    printf("Vvedite 4isla: ");
    scanf("%f%f%f",&a,&b,&c);
    
    return(a,b,c);
}
float Sanf1(float a,float b){
    
    printf("Vvedite 4isla: ");
    scanf("%f%f",&a,&b);
    
    return(a,b);
}
вот вкратце....
KOPOJI
27.03.2013, 16:44
  #7

Не по теме:

Цитата Сообщение от Starter1 Посмотреть сообщение
Добавлено через 15 минут
Добавлено через 9 минут
Добавлено через 45 секунд
Добавлено через 3 минуты
Интересно, есть ли форумы поживее?
Итого: 27 минут 45 секунд.
Интересно, есть ли новички, которые читают правила при регистрации или после, или хотя бы мельком просматривают, вместо того, чтобы каждые две минуты писать "ну что там"?
Специально для Вас, читайте избранное
4.3 Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы, что на ваш вопрос ответят.
4.5 Не стоит ожидать, что на ваш вопрос ответят моментально. Ответ может быть дан как сразу, так и через некоторое время.
4.9 Используйте тэги форматирования текста для удобства восприятия ваших сообщений другими пользователями.

Starter1
4 / 4 / 3
Регистрация: 27.03.2013
Сообщений: 45
27.03.2013, 17:01  [ТС]     Уравнение больше реагирует на значение при инициализации переменной #8
Ну простите за нетерпение....Просто были опасения, что тема переедет на вторую страницу и никто ее даже не увидит..

Добавлено через 3 минуты
C++
1
return(a,b);
попробую ответить.
Возвращает аргументы функции в Main/

Добавлено через 10 минут
Спасибо за помощь!Действительно надо было под double ставить спецификаторы Lf. С маленькой -эль- все равно не хотело работать..Просто разные автора по-разному пишут применяемость спецификаторов.Пишут например., что Ф просто для типа с точкой и для ДАБл и для ФЛОАт.И что специальных спе6цификаторов под ФЛОАТ нет(С.Прата)
Спасибо за помощь
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
27.03.2013, 17:03     Уравнение больше реагирует на значение при инициализации переменной #9
Цитата Сообщение от Starter1 Посмотреть сообщение
return(a,b);
попробую ответить.
Возвращает аргументы функции
Цитата Сообщение от Starter1 Посмотреть сообщение
вроде перелистал и КиР
Эту книгу нужно перечитывать внимательно и до полного осмысления. Оператор , (запятая) возвращает крайний справа операнд, то есть функция вернёт одно значение - b.
Starter1
4 / 4 / 3
Регистрация: 27.03.2013
Сообщений: 45
27.03.2013, 17:23  [ТС]     Уравнение больше реагирует на значение при инициализации переменной #10
Понимаете, информации много, поэтому и хватаешь по верхам.Только при столкновении с чем-то конкретным начинаешь копать.Просто еще информация в разных книгах дается по-разному.А для ее адекватного осмысления возможно нужен опыт, которого у меня нет еще.

Добавлено через 2 минуты
easybudda,
Спасибо за полезный совет.
Почитаю подробнее.
интересует как сделать , чтобы возвращало два значения.

Добавлено через 13 минут
Оператор , (запятая) возвращает крайний справа операнд, то есть функция вернёт одно значение - b.

Не нашел.в КиР пишут:
Оператор reurn -это механизм возвращения значения из вызываемой функции в вызывающую.После return может идти любое выражение:
return выражение
По мере необходимости "выражение" преобразуется в тип, возвращаемый функцией согласно ее объявлению и определению.
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
27.03.2013, 17:24     Уравнение больше реагирует на значение при инициализации переменной #11
Цитата Сообщение от Starter1 Посмотреть сообщение
интересует как сделать , чтобы возвращало два значения.
Либо возвращать указатель на массив значений, либо передавать в функцию переменные по ссылке. Списком, как в PERL, не получится.
Starter1
4 / 4 / 3
Регистрация: 27.03.2013
Сообщений: 45
27.03.2013, 17:37  [ТС]     Уравнение больше реагирует на значение при инициализации переменной #12
По КиР Ф упоминается как спецификатр ДАБЛ.(с.166)

Добавлено через 6 минут
Цитата Сообщение от easybudda Посмотреть сообщение
Либо возвращать указатель на массив значений, либо передавать в функцию переменные по ссылке. Списком, как в PERL, не получится.
Это вариант Егора?!
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
27.03.2013, 17:40     Уравнение больше реагирует на значение при инициализации переменной #13
Цитата Сообщение от Starter1 Посмотреть сообщение
Не нашел
Говорю же - внимательнее читайте. 3 глава, раздел "Циклы while и for"

Цитата Сообщение от Starter1 Посмотреть сообщение
в КиР пишут:
A pair of expressions separated by a comma is evaluated left to right, and the type and value of the result are the type and value of the right operand.
Starter1
4 / 4 / 3
Регистрация: 27.03.2013
Сообщений: 45
27.03.2013, 18:02  [ТС]     Уравнение больше реагирует на значение при инициализации переменной #14
Цитата Сообщение от easybudda Посмотреть сообщение
A pair of expressions separated by a comma is evaluated left to right, and the type and value of the result are the type and value of the right operand.
Вот этого нет.Перелистал главу о циклах.У меня этого нет..можно приложить скан..не нашел
easybudda
27.03.2013, 18:16
  #15

Не по теме:

Цитата Сообщение от Starter1 Посмотреть сообщение
можно приложить скан
А есть вариант, что я это сам придумал?

Starter1
4 / 4 / 3
Регистрация: 27.03.2013
Сообщений: 45
27.03.2013, 18:53  [ТС]     Уравнение больше реагирует на значение при инициализации переменной #16
Вариант не исключается:если вы шутник && владеете аглицким..Даже у страуструпа не нашел этого.Возможно потому что мои книги на русском и перевод возможно некачественный

Добавлено через 14 минут
Несколько значений в Return

Добавлено через 5 минут
Может действительно написать class или struct, написать конструкторы.И Записать возврат класса
easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
27.03.2013, 19:07     Уравнение больше реагирует на значение при инициализации переменной #17
Цитата Сообщение от Starter1 Посмотреть сообщение
Может действительно написать class или struct, написать конструкторы.И Записать возврат класса
Если переменных всего две - так проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
void setAB(int & a, int & b) {
    a = 13;
    b = 69;
}
 
int main() {
    int a, b;
    setAB(a, b);
    std::cout << a << ' ' << b << std::endl;
    return 0;
}
А если больше - тем более есть смысл держать их в массиве/структуре/классе и передавать в ункцию/из функции по средствам ссылок/указателей

Не по теме:

Цитата Сообщение от Starter1 Посмотреть сообщение
если вы шутник
Олег Попов местный, кепку только потерял где-то...

easybudda
Эксперт С++
9458 / 5471 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
28.03.2013, 15:52     Уравнение больше реагирует на значение при инициализации переменной #18
Цитата Сообщение от Starter1 Посмотреть сообщение
Вот этого нет.Перелистал главу о циклах.У меня этого нет..можно приложить скан..не нашел
Ключевое слово "Перелистал" вместо рекомендованного "Внимательно прочитать". Для самых недоверчивых дома телефоном страничку сфотографировал. Вверху раздел, снизу абзац.
Уравнение больше реагирует на значение при инициализации переменной

И кстати. Вы бы само задание озвучили. Что-то мне подсказывает, что всё не так уж сложно...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2013, 18:19     Уравнение больше реагирует на значение при инициализации переменной
Еще ссылки по теме:

Ошибка инициализации переменной заданного типа - C++
Ошибка в 45ой и 59ой строках. Подскажите, как все-же правильно инициализировать переменную t типа &quot;rabotnik&quot;? /* Исходный список...

Выбор места инициализации переменной для лучшей производительности - C++
Скажите, постоянно приходится инициализировать переменную внутри метода класса пример int curent_h{}; От 50 до нескольких тысяч...

Непонятное значение в переменной при сложении - C++
Всем привет ) не занимался с++ уже два года и всё позабывал ) как можно объяснить значение переменной sum то что в конце 0 это понятно...

Выводится случайное значение переменной у при х=-3. Что делать? - C++
Задание: Вычислить и вывести на экран таблицу функции y=f(x) в интервале с шагом h. Результаты представить в виде таблицы: х у...


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

Или воспользуйтесь поиском по форуму:
Starter1
4 / 4 / 3
Регистрация: 27.03.2013
Сообщений: 45
28.03.2013, 18:19  [ТС]     Уравнение больше реагирует на значение при инициализации переменной #19
)) Да этот пример я помню..Но я не понял о том, что под ним говорится о ретурне..Я подумал, что применение запятой - это о возможности представления нескольких условий в цикле ФОР.
Yandex
Объявления
28.03.2013, 18:19     Уравнение больше реагирует на значение при инициализации переменной
Ответ Создать тему
Опции темы

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