Вы находитесь на странице: 1из 13

Лекция 13.

10
Задание:
1. прокомментировать код программы
2. Определить и указать, что является исходными данными,
результатами,промежуточными данными; какие ограничения есть на исходные данные
3. Проверить код на избыточность и оптимальность, исправив его
#include "stdafx.h"
#include "locale.h"
#include "stdio.h"
#include "stdlib.h"
#include<conio.h>
#include "string.h"

#define L 300
#define LF 150
char *form(char d1, char d2);
int _tmain()
{
setlocale(LC_ALL, "Rus");
char s1[L];
char s2[L + LF];
char ss[2];
char str[LF];
char d1, d2;
int i = 0;
int j = 0;
int fl = 0; //dlina podstroki
int nach = -1;
int f = 0;
char maxs[LF];
int maxfl = 0;
int maxnach = -1;
printf("введите исходный текст (%d
символов)\n", L);
gets_s(s1);
printf("исходный текст\n");
puts(s1);
strcpy(s2, "");
strcpy(maxs, "");
for (i = 0; i < strlen(s1); i++)
{
if (_istdigit((int)s1[i])) // ...?
{
if (f == 1)
{
fl++;
strncat(s2, &s1[i], 1);
if (fl>maxfl)
{ maxfl = fl;
maxnach = nach;
strcpy(maxs, s2);
}
}
else
{
f = 1;
nach = i;
fl += 1;
strcpy(s2, "");
strncat(s2, &s1[i], 1);
if (fl > maxfl)
{
maxfl = fl;
maxnach = nach;
strcpy(maxs, s2);

} } }
else
{
nach = -1;
fl = 0;
f = 0;
strcpy(s2, "");
}
} // end for
if (maxfl > 0)
{printf(" длина %d начало %d подстрока
%s", maxfl, maxnach + 1, maxs);
}
else
{
printf("net podstroki");
}
}
Преобразование типов.

int atoi(s) - выполняет преобразование строки


s в Эта
int. строка s должна содержать допустимое
целое число. В противном случае возвращаемое
значение не определено.
После числа может следовать любой символ,
который не может быть частью целого числа.
Имеются в виду пробелы, символы табуляции и
пустой строки, знаки препинания и буквы.
Это значит, что, если функция atoi() вызывается с
аргументом "123.23",
будет возвращено целое значение 123,
а подстрока ".23" будет проигнорирована.
Пример:

char num1[80], num2[80];

printf("Введите первое число: ");


gets(num1);
printf("Введите второе число: ");
gets(num2);
printf("Сумма: %d.", atoi(num1)+atoi(num2));
Преобразование типов.

int atoi(s) - выполняет преобразование строки


s в int.

long atol(s) - выполняет преобразование строки


s в длинный int.

double atof(s) - выполняет преобразование


строки s в double.
Itoa() – преобразует целое число в строку.

ecvt(), gcvt(), fcvt() – преобразует


вещественное число в строку.
int sprintf(char *buffer, const char *format[,
argument, ...]) – формирование строки buffer в
соответствии с форматом.
sprintf(str, "%s %d %c", "один", 2, '3');
int sscanf (const char *buffer, const char
*format[, address, ...]) - чтение данных из
строки buffer по формату.
sscanf("привет 1 2 3 4 5", "%s%d", str, &i);

int i;
long lg;
i=atoi (”2014”); /*i=2014*/
lg=atol(”2014000”); /*l=2014000*/