Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
28 / 8 / 1
Регистрация: 26.05.2010
Сообщений: 230
1

Как сделать так, чтобы процедура типа void возвращала значение?

13.01.2015, 12:46. Показов 2579. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Ребят, помогите поправить процедуру. Она должна быть типа void, но при этом нужно, чтобы возвращала значение. Заранее благодарю
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
#include <stdio.h>
    #include <math.h>
    #include <conio.h>
         
    void digit(int n, float &S)
    {         
         S=0;
         while(n!=0)
         {
              S=S+n%10;
              n=n/10;
         }          
    }
    
    int main() {
     
        int n;
        float S;
        
        printf("VVedite natural'noe chislo: ");
        scanf("%d",&n);
        digit(n,S);
        if (S>10) printf("\nVerno");
        else printf("\nNe verno");        
        getch();    
    }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2015, 12:46
Ответы с готовыми решениями:

Как сделать так чтобы функция каждый раз возвращала новое значение
Дана вот такая функция и она возвращает случайное число(Она работает) function montekarlo(diap1:...

Сделать так, чтобы функция возвращала как целые, так и дробные значения
Задача: нужно найти среднее арифметическое чисел в одномерном массиве разных типов. В main() у...

Как в VBA сделать так, чтобы функция возвращала массив?
Задача: пусть есть числа a, b. Причем a &lt; b. Создать массив, включающий числа из диапазона .

Как сделать так, чтобы функция rand() возвращала разные значения
Добрый вечер, как можно в visual studio в цикле каждый раз задавать новые рандомные значения...

8
122 / 24 / 6
Регистрация: 31.12.2014
Сообщений: 164
13.01.2015, 12:54 2
на то она и void, что нельзя написать return k; хотите ещё что-то передать обратно - передавайте ещё ссылки на переменные в функцию.
0
28 / 8 / 1
Регистрация: 26.05.2010
Сообщений: 230
13.01.2015, 12:58  [ТС] 3
ltkj, а я не передала разве?
Цитата Сообщение от Chimera_ Посмотреть сообщение
float &S
Буду благодарна, если покажете, как это правильно сделать
0
122 / 24 / 6
Регистрация: 31.12.2014
Сообщений: 164
13.01.2015, 13:04 4
Chimera_, Так у вас S нормально возвращается.

P.s. Почему он у вас float?
0
28 / 8 / 1
Регистрация: 26.05.2010
Сообщений: 230
13.01.2015, 13:13  [ТС] 5
Цитата Сообщение от ltkj Посмотреть сообщение
Почему он у вас float?
Препод так написала, не рискую перечить :-)
Цитата Сообщение от ltkj Посмотреть сообщение
Chimera_, Так у вас S нормально возвращается.
Не компилируется у меня

Добавлено через 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
#include <stdio.h>
    #include <math.h>
         
    void f(int n)
    {
         //это процедура, у нее нет возвращаемого значения
         int result;
         //result - сумма цифр натурального числа
         //цикл выполняется, пока n не равно 0, при каждом проходе делим n на 10
         for (result=0; n!=0; n/=10)
         {  //результирующую переменную суммируем с остатком от деления числа n на 10
            result+=n%10;   }
         //result равно сумме цифр переменной chislo
         //если сумма больше 10, то выводим Verno, иначе Ne verno
         if (result>10) printf("\nVerno");
         else printf("\nNe verno");
    }
    
    int main() {
     
        int chislo;
        printf("VVedite natural'noe chislo: ");
        scanf("%d",&chislo);
        //вызываем поцедуру
        f(chislo);
        getch();    
    }
Но велели переделать :-(
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
13.01.2015, 13:16 6
Лучший ответ Сообщение было отмечено Chimera_ как решение

Решение

Цитата Сообщение от Chimera_ Посмотреть сообщение
Не компилируется у меня
Потому что в C нет ссылок, только указатели.

Вариант 1:
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
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
void
digit(int n, float* s)
{
    float t;
    t = 0;
    while(n!=0) {
        t += n%10;
        n /= 10;
    }
    *s = t;
}
 
int
main(void)
{
    int n;
    float s;
 
    printf("VVedite natural'noe chislo: ");
    scanf("%d", &n);
    digit(n, &s);
    if (s>10)
        printf("Verno\n");
    else
        printf("Ne verno\n");
    getch();
 
    return 0;
}
но лучше Вариант 2:
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
#include <stdio.h>
#include <math.h>
#include <conio.h>
 
float
digit(int n)
{
    float t;
    t = 0;
    while(n!=0) {
        t += n%10;
        n /= 10;
    }
    return t;
}
 
int
main(void)
{
    int n;
    float s;
 
    printf("VVedite natural'noe chislo: ");
    scanf("%d", &n);
    s = digit(n);
    if (s>10)
        printf("Verno\n");
    else
        printf("Ne verno\n");
    getch();
 
    return 0;   
}
2
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
13.01.2015, 13:18 7
Зачем вообще делать void?!

C
1
2
3
4
5
6
7
8
float digit(int n, float S) {         
    S=0;
    while(n!=0) {
        S=S+n%10;
        n=n/10;
    }
    return S;          
}
1
122 / 24 / 6
Регистрация: 31.12.2014
Сообщений: 164
13.01.2015, 13:18 8
Упс, думал форум c++.. Удивлялся, почему не компилируется у человека)
0
28 / 8 / 1
Регистрация: 26.05.2010
Сообщений: 230
13.01.2015, 13:26  [ТС] 9
Boleon, именно void нужен был, Ваш вариант у меня изначально был реализован :-) Но спасибо :-)
0
13.01.2015, 13:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2015, 13:26
Помогаю со студенческими работами здесь

Как сделать, чтобы определенная переменная возвращала как и цифры, так и слова
То есть мне нужно, чтобы переменная принимала значения NaN, бесконечность, и иногда простой...

Сделать так, чтобы функция возвращала параметр
В общем, есть 3 матрицы, выведение их на экран и перемножение, сделанное через класс. Функции mult1...

Как сделать так,чтобы у меня запрашивало элементы массива до тех пор пока не будет введено верное значение типа double...
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Как сделать, чтобы функция "или" возвращала заданное мной значение
Возможно ли, чтобы функция &quot;или&quot; возвращала, заданное мной значение? Мне нужно, чтобы она...


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

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