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

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

Восстановить пароль Регистрация
 
Starter1
4 / 4 / 3
Регистрация: 27.03.2013
Сообщений: 43
27.03.2013, 16:22     Уравнение больше реагирует на значение при инициализации переменной #1
Доброго времени дня! Возникла проблема не пойму в чем дело..
Вот кусок программы.

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++
Выводится случайное значение переменной у при х=-3. Что делать? C++
C++ Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае
Ошибка инициализации переменной заданного типа C++
C++ Для чего при инициализации переменной писать на конце числа первую букву типа?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
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
Модератор
Эксперт С++
 Аватар для Croessmah
11828 / 6807 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 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
Сообщений: 43
27.03.2013, 16:41  [ТС]     Уравнение больше реагирует на значение при инициализации переменной #4
Гроссмах, я и со спецификаторами игрался.Насчет лень открыть книгу - это не так..Просто уже голова болит, да и на тему ввода-вывода вроде перелистал и КиР и Прата...Страуструп есть но по-честному еще рано.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11828 / 6807 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
27.03.2013, 16:43     Уравнение больше реагирует на значение при инициализации переменной #5
egor2116, В scanf нужнр передавать адреса памяти, в которые Вы хотите что-то записать.
Starter1
4 / 4 / 3
Регистрация: 27.03.2013
Сообщений: 43
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
Сообщений: 43
27.03.2013, 17:01  [ТС]     Уравнение больше реагирует на значение при инициализации переменной #8
Ну простите за нетерпение....Просто были опасения, что тема переедет на вторую страницу и никто ее даже не увидит..

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

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

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

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

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

Добавлено через 6 минут
Цитата Сообщение от easybudda Посмотреть сообщение
Либо возвращать указатель на массив значений, либо передавать в функцию переменные по ссылке. Списком, как в PERL, не получится.
Это вариант Егора?!
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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
Сообщений: 43
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
Сообщений: 43
27.03.2013, 18:53  [ТС]     Уравнение больше реагирует на значение при инициализации переменной #16
Вариант не исключается:если вы шутник && владеете аглицким..Даже у страуструпа не нашел этого.Возможно потому что мои книги на русском и перевод возможно некачественный

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

Добавлено через 5 минут
Может действительно написать class или struct, написать конструкторы.И Записать возврат класса
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.03.2013, 15:52     Уравнение больше реагирует на значение при инициализации переменной #18
Цитата Сообщение от Starter1 Посмотреть сообщение
Вот этого нет.Перелистал главу о циклах.У меня этого нет..можно приложить скан..не нашел
Ключевое слово "Перелистал" вместо рекомендованного "Внимательно прочитать". Для самых недоверчивых дома телефоном страничку сфотографировал. Вверху раздел, снизу абзац.
Уравнение больше реагирует на значение при инициализации переменной

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

При отладке программы вылетает окошко с ошибкой: использование переменной без инициализации C++
Непонятное значение в переменной при сложении C++
C++ Выбор места инициализации переменной для лучшей производительности

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

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

Текущее время: 01:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru