Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
&Alex&
19 / 19 / 3
Регистрация: 21.03.2010
Сообщений: 221
1

Передача значений из одной функции в другую

13.04.2010, 13:44. Просмотров 848. Ответов 10
Метки нет (Все метки)

Как сделать чтоб с этой функции:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int string(char * ch)
{
int big=0,small=0,i;
for(i=1;i<ch[i];++i)
 {
  if(ch[i]>=65 && ch[i]<=90)
   big++;
  else if(ch[i]>=97 && ch[i]<=122)
   small++;
 } 
  if(big==0)
   printf("small!");
  else if(small==0)
   printf("BIG!");
  else
   printf("BIG & small");
  return 0;
}
передавались значение в эту:
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main()
{
 int string(char * ch);
 char ch[100];
 gets(ch);
 string(ch);
 getch();
 return 0;
}
и потом чтоб main() анализировала эти значения.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2010, 13:44
Ответы с готовыми решениями:

Передача значения массива из одной функции в другую
В функции re вводятся 2 строковые переменные Как передать их значения в другую функцию?

Передача переменой из одной ф-ции. в другую
Всем привет. кто мог бы сказать как я могу передать переменую из одной функции в другую ? надо из...

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

Ссылка goto из одной функции в другую
Доброго времени суток! Возник следующий вопрос: неужели имея в программе 2 функции, нельзя из одной...

Перенос значения из одной функции в другую
Всем привет! :) Такая проблема: нужно сделать программу, которая считывает текст из некоего файла,...

10
Alex5
1124 / 784 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
13.04.2010, 14:07 2
Цитата Сообщение от &Alex& Посмотреть сообщение
Как сделать чтоб с этой функции передавались значение
Можно использовать ссылки ( references )
C++
1
2
3
4
5
6
7
8
//int string(char * ch)
int string(char * ch, int & big, int & small)
{
//int big=0,small=0,i;
int i;
big=0;
small=0;
// ...
C++
1
2
3
4
5
6
int main()
{
// ...
string( ch, big, small);
//..
}
0
romex
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
13.04.2010, 14:09 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

самый простой способ: сделать переменные функции string глобальными, а потом оперировать ими из main.
Например:

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
#include <stdio.h>
int big=0,small=0,i;
 
#include <stdio.h>
int main()
{
 int string(char * ch);
 char ch[100];
 gets(ch);
 string(ch);
 printf("\nbig:%d\n",big);
 getch();
 return 0;
}
 
int string(char * ch)
{
for(i=1;i<ch[i];++i)
 {
  if(ch[i]>=65 && ch[i]<=90)
   big++;
  else if(ch[i]>=97 && ch[i]<=122)
   small++;
 } 
  if(big==0)
   printf("small!");
  else if(small==0)
   printf("BIG!");
  else
   printf("BIG & small");
  return 0;
}
Так делать не правильно:
C
1
for(i=1;i<ch[i];++i)
но дело ваше
1
&Alex&
19 / 19 / 3
Регистрация: 21.03.2010
Сообщений: 221
13.04.2010, 14:11  [ТС] 4
Мне нужно чтоб передавалось с помощью return-a.

Добавлено через 2 минуты
А как? Вот так?
C
1
2
3
4
5
6
         {
                if(isupper(str[i])==0)
                        big++;
                else
                        small++;
          }
0
13.04.2010, 14:11
romex
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
13.04.2010, 14:13 5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
int big=0,small=0,i;
for(i=1;i<ch[i];++i)
 {
  if(ch[i]>=65 && ch[i]<=90)
   big++;
  else if(ch[i]>=97 && ch[i]<=122)
   small++;
 } 
  if(big==0)
   printf("small!");
  else if(small==0)
   printf("BIG!");
  else
   printf("BIG & small");
  return big;
}
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main()
{
 int string(char * ch),big;
 char ch[100];
 gets(ch);
 big=string(ch);
 printf("\nbig:%d\n",big);
 getch();
 return 0;
}
Если вы используете условие завершения цикла
C
1
i<ch[i];
то ваша программа может прийти к ошибке сегментации
0
&Alex&
19 / 19 / 3
Регистрация: 21.03.2010
Сообщений: 221
13.04.2010, 14:20  [ТС] 6
Нужно передать значения small и big у main(), а потом анализировать:если big>0 то значит маленькие буквы и т.д.
0
romex
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
13.04.2010, 14:23 7
С помощью return можно передавать только одну переменную, используйте глобальные.

Вместо
C
1
for(i=1;i<ch[i];++i)
лучше
C
1
for(i=0;i<strlen(ch);++i)
0
&Alex&
19 / 19 / 3
Регистрация: 21.03.2010
Сообщений: 221
13.04.2010, 14:25  [ТС] 8
Цитата Сообщение от romex Посмотреть сообщение
С помощью return можно передавать только одну переменную, используйте глобальные.
А можно передать одну, затем следующую...?
0
romex
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
13.04.2010, 14:36 9
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от &Alex& Посмотреть сообщение
А можно передать одну, затем следующую...?
Нельзя

Можете использовать структуру:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct mystruct string(char * ch)
{
int big=0,small=0,i;
struct mystruct bigsmall;
for(i=1;i<ch[i];++i)
 {
  if(ch[i]>=65 && ch[i]<=90)
   big++;
  else if(ch[i]>=97 && ch[i]<=122)
   small++;
 } 
  if(big==0)
   printf("small!");
  else if(small==0)
   printf("BIG!");
  else
   printf("BIG & small");
bigsmall.big=big;
bigsmall.small=small;
  return bigsmall;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
struct mystruct{
 int big;
 int small;
}
int main()
{
 struct mystruct bigsmall;
 int string(char * ch);
 char ch[100];
 gets(ch);
 bigsmall=string(ch);
 printf("big:%d small:%d",bigsmall.big,bigsmall.small);
 getch();
 return 0;
}
1
&Alex&
19 / 19 / 3
Регистрация: 21.03.2010
Сообщений: 221
13.04.2010, 14:40  [ТС] 10
Структуры мне не надо. У меня просто стоит задание:
Определить функцию:
оценивающая, какими буквами - большими или маленькими представлены буквы строки.
0
romex
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
13.04.2010, 14:45 11
А в чем собственно проблема? Вы определили эту функцию, а данные из нее вы можете получать с помощью структуры в return или как описал *Alex5* .
0
13.04.2010, 14:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2010, 14:45

Как перенести переменные из одной функции в другую?
Есть программа #include &lt;stdio.h&gt; #include &lt;locale.h&gt; #include &lt;time.h&gt; int date() {...

Передача параметров и возврат значений из функции
Помогите пожалуйста с задачей на Си.На тему функции.Не знаю как решить так хоть разобрать смогу её....

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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