Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 17

Написать программу ввода/вывода данных целого, вещественного и символьного типа

25.09.2010, 00:21. Показов 6842. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
"Написать программу ввода/вывода данных целого, вещественного и символьного типа без модификаторов и с допустимыми модификаторами. На дисплей выводятся строки, определяющие тип переменной и ее значение, следующего вида:
int <вводимое значение> <выводимое значение>
short int <вводимое значение> <выводимое значение>

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
main ()
{ char i[40];
 
  char *c = "0";
  char *ptr, p = 'e';
  char m[30];
 
 
 
  int l;
  long int n;
  float b;
  int d;
   clrscr ();
   gets(i);
 
 
 
 
 
   strcpy(m,i); //Copirovanie stroki 'i' v stroku 'm'
 
   
 
   ptr = strchr (i, p);
 
 
  d = strcmp (c,i); //Sravnenie strok
 
 
    if ( d == 0)
   printf ("Vvedeno chislo int 0");
  else {
  n = atol(i);  //preobrazovanie stroki v long int
 
  b = _atold(i);  //preobrazovanie stroki v double
 
 
 
 
  if (n < b && ptr)    //sravnenie peremennih
 
   printf("float <%s>  <%e>  ",m , b);
 
  else {
 
 
  if (b == 0)
   printf ("Char <%s> <%s>",m , i);
  else {
 
 
 
 
  if (n > b && ptr)    // povtornoe sravnenie peremennih iz-za vozmozhnosti otric chisla
 
   printf("float <%s>  <%e>  ",m , b);
 
    else {
 
 
 
    if (n < b )    //sravnenie peremennih
 
   printf("float <%s>  <%f>  ",m , b);
 
  else {
 
 
  if (b == 0)
   printf ("Char <%s> <%s>",m , i);
  else {
 
 
 
 
  if (n > b)    // povtornoe sravnenie peremennih iz-za vozmozhnosti otric chisla
 
   printf("float <%s>  <%lf>  ",m , b);
 
    else {
 
 
 
    printf("int <%s>  <%ld> \n",m , n);
 
 
    ;}
 
    ;}
        }
        }
 
 
 
    }
    }
    }
 
 
    getch ();
 
 
 
 
 
 
 return 0;
 
}
В общем, это мой вариант...НЕ ДОПИСАННЫЙ. прога вылетает при вводе числа -0.675262089200e60

помогите, как определить символы в строке после определенного символа...например: после символа "е" в строке перевести (в данном случае 60) в число.


Есть еще мысль по структуре...это полный перевод с помошью циклов и ввода булеан, определить количество введенных символов и знаки. и если есть точка и т.п.

будьте добры, напишите и свои варианты проги. или помогите в моем.
заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.09.2010, 00:21
Ответы с готовыми решениями:

Стек целого, вещественного и символьного типа
Доброго времени суток. Нужно разработать шаблон стека в виде растущего массива. Стек должен обеспечивать следующий состав операций: 1....

Написать программу хранения целочисленного, либо вещественного типа данных в переменной
Написать программу хранения целочисленного, либо вещественного типа данных в переменной. Выдаёт ошибку 'struct tag_var' has no member...

Составить программу для форматированного ввода и вывода данных заданного типа
помогите пожалуйста, только начали учить С и я еще не могу врубиться в него :wall: Составить программу для форматированного ввода и...

7
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
25.09.2010, 04:38
scanf() и printf()
найди описание для каждой функции (они очень различаются)
1
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 17
27.09.2010, 01:10  [ТС]
То есть мне определить длину строки и не заносить в память числа, стоящие до "е"?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
27.09.2010, 03:41
Цитата Сообщение от Silence_
В общем, это мой вариант...НЕ ДОПИСАННЫЙ. прога вылетает при вводе числа -0.675262089200e60
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
/* -0.675262089200e60 */
int main(void)
{
    double n;
    
    if (scanf("%le", &n) == 1)    
        printf("%e" "\n", n);
    
    return 0;
}
Code
1
2
3
4
[guest@localhost tmp]$ ./t
-0.675262089200e60
-6.752621e+59
[guest@localhost tmp]$
Добавлено через 4 минуты
"Написать программу ввода/вывода данных целого, вещественного и символьного типа без модификаторов и с допустимыми модификаторами.
вот эта часть задания смешивает ввод и вывод, как будто это одно и то же (они полностью независимы), модификаторы, обозначающие в scanf() одно, могут обозначать в printf() совсем другое (например %s и %s совсем по-разному работают, в scanf() %e ожидает float, а в printf() %e ожидает double, я не заостряюсь на том, что указатель, а что нет, просто провожу различия)
0
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 17
27.09.2010, 10:52  [ТС]
Тема то вся в том, что я не знаю заранее какая переменная вводится.
Вначале я должен ее определить как строку. а потом ,анализируя строку и преобразуя ее, должен определить что за переменная введена, вывести ее название, вывести то что было введено и вывести переменную уже в этом спецификаторе, который определен.
например: я ввожу 12
прога выводит, что я ввел шорт инт, выводит 12 и далее выводит преобразованную строку 12.
то есть я заранее не знаю, что вводит пользователь.
но я должен так проделать с любыми вариантами. дабл, ансайгнт, флоат, лонг, шорт, и чар.

Добавлено через 3 минуты
то, что надо %le в сканф надо вводить это понятно, при ожидании дабл.
я строку в дабл преобразовал заранее.
C
1
 b = _atold(i);  //preobrazovanie stroki v double
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
27.09.2010, 11:15
надо разделить задачу: ввод строки, определение, вывод
все эти этапы не зависят друг от друга

1. Get()
2. Select()
3. Print()

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
enum objtype { SHORT, INT, LONG, FLOAT, DOUBLE, CHAR };
 
union object {
    short si;
    int i;
    long li;
    float fn;
    double dn;
    char c;
};
 
struct input {
    union object obj;
    enum objtype type;
};
C
1
int Get(char *line, long maxline, FILE *ifp);
C
1
int Select(struct input *obj, const char *line);
C
1
int Print(struct input *obj, FILE *ofp);
Добавлено через 6 минут
а как ты собираешься различать short и unsigned или int и unsigned
1
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 17
27.09.2010, 16:17  [ТС]
ну int просто не существует...зависит от настроек компилятора. обычно short придает.
unsigned - тут точная задача не стоит.
этот тип можно не определять

Добавлено через 1 минуту
то есть ты предлагаешь оперировать указателями. я попробую. почитаю.
просто первая лаба на первом курсе. и такая вот запара
прокомментируй код пожалуйста

3 нижних

Добавлено через 3 минуты
Спасибо, что помогаешь
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
28.09.2010, 06:26
main() вызывает три функции, в каждой функции происходят нужные действия
первая функция считывает строку из файла (она может быть вызвана с stdin вместо файла)
когда она строку прочитала, мы эту строку передаём функции определения, а что там в строке в этой
когда функция определила что там в строке, она занесла это в структуру
и мы эту струтуру, в которой уже всё готово, передаём функции вывода
а функция вывода знает как нужно выводить (вызываем её с stdout)

каждая из функций может сообщить в main(), а получилось ли выполнить задачу
если задачу выполнить не получилось, то функция main() останавливается (пишет на экран сообщение "строка не получена" или "нет числа, одни буквы" или ещё что-нибудь делает)

простая функция Get()
C
1
2
3
4
5
6
int Get(char *line, long maxline, FILE *ifp)
{
    if (fgets(line, maxline, ifp) == NULL)
        return -1;
    return 0;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int main(void)
{
    char line[1000];
    int retval;
 
    retval = Get(line, sizeof line, stdin);
 
    if (retval != 0) {
        fprintf(stderr, "error: can't get line" "\n");
        return 1;
    }
 
    printf("%s" "\n", line);
 
    ...
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.09.2010, 06:26
Помогаю со студенческими работами здесь

Написать программу на языке С + + реализующая класс содержащий поля данных и методы ввода и вывода данных
Написать программу на языке С + + реализующая класс содержащий поля данных и методы ввода и вывода данных. это надо сделать в этой...

Написать программу в которой надо вывести матрицу вещественного типа
Надо вывести матрицу вещественного типа, найти её наибольший элемент и в конечной матрице эетот элемент поставить в положение верхнего...

Написать программу по формированию динамического вектора целого типа
Всем привет!Прошу помощи! Задача следующая: Диманический вектор Написать программу по формированию динамического вектора целого...

Написать программу ввода и вывода строки на C++
Регите пожалуйста !

Написать программу ввода 2 значений и вывода результата
Нужна помощь, сколько возился не выходит. Нужно написать программу в которой будет вносится 2 численных значения (давление и вес), а...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru