Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
4 / 4 / 7
Регистрация: 27.03.2013
Сообщений: 48
1

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

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

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

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 минуты
Интересно, есть ли форумы поживее?

 Комментарий модератора 
Используйте теги оформления кода. Называйте темы осмысленно.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2013, 16:22
Ответы с готовыми решениями:

Оператор не реагирует на значение переменной
Здравствуйте! Есть следующий код:if ( $attribute == 'pa_color') { $values =...

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

Ошибка при инициализации переменной делегатного типа
Нет в контексе removeSpaces Собственно вот код: /* * Created by SharpDevelop. * User:...

При русской переменной Like реагирует на ДЛИНУ, а не на содержание
Вот такая беда. Все работает нормально. <%Response.CharSet = 'windows-1251' Session.Codepage =...

18
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
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){
А лучше приведите весь код и напишите задание которое нужно выполнить Дословно.
1
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
27.03.2013, 16:41 3
Если Вы думаете, что все бросят свои дела и побегут быстрее Вам помогать, то Вы заблуждаетесь. Можете и подождать, раз Вам лень открыть любую книжку и прочитать, что "%f" это float, а не double

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

Добавлено через 3 минуты
Да и вообще тут ошибок больше чем правильного. Вы понимаете что происходит при
C
1
return (a,b)
0
4 / 4 / 7
Регистрация: 27.03.2013
Сообщений: 48
27.03.2013, 16:41  [ТС] 4
Гроссмах, я и со спецификаторами игрался.Насчет лень открыть книгу - это не так..Просто уже голова болит, да и на тему ввода-вывода вроде перелистал и КиР и Прата...Страуструп есть но по-честному еще рано.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
27.03.2013, 16:43 5
egor2116, В scanf нужнр передавать адреса памяти, в которые Вы хотите что-то записать.
1
4 / 4 / 7
Регистрация: 27.03.2013
Сообщений: 48
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);
}
вот вкратце....
0
KOPOJI
27.03.2013, 16:44
  #7

Не по теме:

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

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

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

Добавлено через 10 минут
Спасибо за помощь!Действительно надо было под double ставить спецификаторы Lf. С маленькой -эль- все равно не хотело работать..Просто разные автора по-разному пишут применяемость спецификаторов.Пишут например., что Ф просто для типа с точкой и для ДАБл и для ФЛОАт.И что специальных спе6цификаторов под ФЛОАТ нет(С.Прата)
Спасибо за помощь
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
27.03.2013, 17:03 9
Цитата Сообщение от Starter1 Посмотреть сообщение
return(a,b);
попробую ответить.
Возвращает аргументы функции
Цитата Сообщение от Starter1 Посмотреть сообщение
вроде перелистал и КиР
Эту книгу нужно перечитывать внимательно и до полного осмысления. Оператор , (запятая) возвращает крайний справа операнд, то есть функция вернёт одно значение - b.
1
4 / 4 / 7
Регистрация: 27.03.2013
Сообщений: 48
27.03.2013, 17:23  [ТС] 10
Понимаете, информации много, поэтому и хватаешь по верхам.Только при столкновении с чем-то конкретным начинаешь копать.Просто еще информация в разных книгах дается по-разному.А для ее адекватного осмысления возможно нужен опыт, которого у меня нет еще.

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

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

Не нашел.в КиР пишут:
Оператор reurn -это механизм возвращения значения из вызываемой функции в вызывающую.После return может идти любое выражение:
return выражение
По мере необходимости "выражение" преобразуется в тип, возвращаемый функцией согласно ее объявлению и определению.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
27.03.2013, 17:24 11
Цитата Сообщение от Starter1 Посмотреть сообщение
интересует как сделать , чтобы возвращало два значения.
Либо возвращать указатель на массив значений, либо передавать в функцию переменные по ссылке. Списком, как в PERL, не получится.
1
4 / 4 / 7
Регистрация: 27.03.2013
Сообщений: 48
27.03.2013, 17:37  [ТС] 12
По КиР Ф упоминается как спецификатр ДАБЛ.(с.166)

Добавлено через 6 минут
Цитата Сообщение от easybudda Посмотреть сообщение
Либо возвращать указатель на массив значений, либо передавать в функцию переменные по ссылке. Списком, как в PERL, не получится.
Это вариант Егора?!
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
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.
1
4 / 4 / 7
Регистрация: 27.03.2013
Сообщений: 48
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.
Вот этого нет.Перелистал главу о циклах.У меня этого нет..можно приложить скан..не нашел
0
easybudda
27.03.2013, 18:16
  #15

Не по теме:

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

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

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

Добавлено через 5 минут
Может действительно написать class или struct, написать конструкторы.И Записать возврат класса
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
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 Посмотреть сообщение
если вы шутник
Олег Попов местный, кепку только потерял где-то...

1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
28.03.2013, 15:52 18
Цитата Сообщение от Starter1 Посмотреть сообщение
Вот этого нет.Перелистал главу о циклах.У меня этого нет..можно приложить скан..не нашел
Ключевое слово "Перелистал" вместо рекомендованного "Внимательно прочитать". Для самых недоверчивых дома телефоном страничку сфотографировал. Вверху раздел, снизу абзац.
Уравнение больше реагирует на значение при инициализации переменной


И кстати. Вы бы само задание озвучили. Что-то мне подсказывает, что всё не так уж сложно...
0
4 / 4 / 7
Регистрация: 27.03.2013
Сообщений: 48
28.03.2013, 18:19  [ТС] 19
)) Да этот пример я помню..Но я не понял о том, что под ним говорится о ретурне..Я подумал, что применение запятой - это о возможности представления нескольких условий в цикле ФОР.
0
28.03.2013, 18:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2013, 18:19
Помогаю со студенческими работами здесь

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

Ошибка инициализации переменной при чтении структурированного файла
Почему выдаёт ошибку: &quot;Использована неинициализированная локальная переменная &quot;rr&quot;.&quot; При таком же...

В новом описанном классе при инициализации переменной вылетает ошибка.
type TForm1 = class(TForm) MainMenu1: TMainMenu; procedure FormCreate(Sender:...

VBA. Не работает оператор присваивания при инициализации переменной или массива
Добрый день! Помогите, в vba Не работает оператор присваивания при инициализации переменной или...

Как при инициализации файловой переменной указать файл из текущей папки?
Как при инициализации файловой переменной указать файл из текущей папки? Например: Assign(F,...

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru