История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Топ:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Интересное:
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
2020-08-21 | 115 |
5.00
из
|
Заказать работу |
|
|
Передача в функцию массива строк выполняется какпередача массива указателей (этот прием может использоваться и для любых двумерных массивов), поэтому возможна без указания количества строк. Например:
void print (char *m[ ]);
int main ()
{char *s[]={"odin", "dwa", "try", 0 };
print (s);
_getch();
return 0;
}
void print (char *m[ ])
{for (int i=0; m[i]; ++i)
cout << m[i] <<endl;
}
Примеры работы со строками
Определение длины строки с помощью функции пользователя
int dlina_str (const char*);
int main()
{const int MAX = 80;
char buffer[MAX]="";
int count = 0;
while (true)
{ cout << "Enter a string < 80 characters:\n";
cin.getline(buffer, MAX);
if (! strcmp(buffer,"")) break; //если введена пустая строка, то выход
count= dlina _ str (buffer); //вызов функции определения длины строки
cout << endl << buffer << " " << count << endl;
}
return 0;
}
int dlina_str (const char* buf)
{ int k=0;
for(; buf[k]; k++);
return k;
}
Реверс строки ( перегрузка функций )
#include <string.h>
void rev_str (char *s); //прототип функции реверса строки s
// прототип функции реверса и пересылки строки
void rev_str (char *in, char *out);
//--------------------------------------------------------------
int main()
{ char s1[80], s2[80]; //определение символьных массивов
strcpy (s1, "abcdef");
rev_str (s1, s2);
cout << s2 <<"\n";
rev_str (s1);
cout << s1 <<"\n";
_getch();
return 0;
}
//--------------------------------------------------------------
//реверс строки по адресу s
void rev_str(char *s)
{int i, j;
char temp[80];
for (i=strlen(s)-1, j=0; i>=0; i--, j++)
temp[j] = s[i];
temp[j] = '\0';
strcpy (s, temp);
}
//--------------------------------------------------------------
//реверс строки in и передача результата по адресу out
void rev_str(char *in, char *out)
{ int i, j;
for (i=strlen(in)-1, j=0; i>=0; i--, j++)
out[j] = in[i];
out[j] = '\0';
}
Удаление начальных пробелов из строки
#include <string.h>
|
int main ()
{ unsigned char sst[80];
unsigned char dst[80];
int i=0, j=0;
cout << "\nInput string" << endl;
while ((sst[i] = _getch())!='\r') //посимвольный ввод в массив sst
_putch (sst[i++]); //и вывод
sst[i] = '\0'; //завершение строки
i=0;
while (sst[i] && sst[i] == ' ') //пока в строке есть символ и это пробел
i++; //ищем символ, отличный от пробела
while (sst[i]) //если еще не конец строки
dst[j++] = sst[i++]; //копируем символы
dst[j] = '\0'; //если конец копируемой строки sst,то завершаем строку dst
cout << "\n" << dst << endl;
_getch();
return 0;
}
Обратите внимание, что пропуск пробелов в строке s, начиная с позиции start, реализует также цикл:
for (int i=start; isspace (s[i]); i++);
Проверка, является ли строка целым числом
int main ()
{ char st[40];
int i;
cout << "\nInput string " << endl;
cin >> st;
i=0;
while (st[i] >= '0' && st[i] <= '9')
i++;
cout << "string: " << endl;
if (st[i]) // st[i] есть '\0', если введены только цифры
cout <<"NOT number \n" << endl;
else
cout <<"YES number\n"<< endl;
_getch();
return 0;
}
Проверка, является ли строка 16-ичным целым числом
#include <string.h>
int main ()
{
char st[20];
int i;
cout <<"\nInput 16 c/c" << endl;
cin >> st;
strupr (st); //преобразует строчные буквы в прописные, <string.h>
i=0;
while ((st[i] >= '0' && st[i] <= '9') || (st[i] >= 'A' && st[i] <= 'F'))
i++;
cout << "string ";
if (st[i]) // если st[i]!= '\0', то i номер первого ошибочного символа
cout << "NOT 16" << endl;
else
cout << "YES 16" << endl;
_getch();
return 0;
}
Проверка, является ли строка дробным числом без знака
int main ()
{
char st[20];
int i=0, ok = 0;
cout << " \nInput abc.def " << endl;
cin >> st;
if (st[i] >= '1' && st[i] <= '9')
{ while (st[i] >= '1' && st[i] <= '9') i++;
if (st[i] == '.')
{ i++;
if (st[i] >= '1' && st[i] <= '9')
{ while (st[i] >= '1' && st[i] <= '9')
i++;
|
ok = 1;
}
}
}
cout << "string:" << st << endl;
if (st[i] ||!ok)
cout << "NOT abc.def" << endl;
else
cout << " YES abc.def" << endl;
_getch();
return 0;
}
Перевод двоичного числа в десятичное
#include <string.h>
int main ()
{
char bin[16];
long int dec=0;
int i, v = 1;
cout << " \nInput number 2c/c (8 bit): " << endl;
cin >> bin;
for (i= strlen(bin)-1; i>=0; i--)
{
if (bin[i] == '1')
dec +=v;
v *=2; //вес следующего разряда
}
cout << "2:" << bin <<endl;
cout << "10:" << dec << endl;
_getch();
return 0;
}
Перевод шестнадцатеричного числа в десятичное
#include <string.h>
int main ()
{char st[5];
unsigned int dec;
int i, v=1, err = 0; // err = 1 – в строке недопустимый символ
cout << " \nInput 16 (<=FFFF):" << endl;
cin >> st;
strupr (st);
dec=0;
for (i= strlen(st) -1; i>=0; i--)
{ if (st[i] >= '0' && st[i] <='9')
dec +=v * (st[i]-'0'); //(int) '0' = 48 и т.д.
else
if (st[i] >= 'A' && st[i] <='F') //(int) 'A' = 65 и т.д.
dec +=v * (st[i]-55);
else //недопустимый символ
{err =1; break;
}
v *=16; //вес следующего разряда
}
if (!err)
cout << "16: --> 10: \n" << st << " --> " << dec << endl;
else
cout << "string:” << st <<” NOT 16-number" << endl;
_getch();
return 0;
}
|
|
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!