1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Помогите решить задачу на работу со строками в СИ, Turbo C++
Текст такой: Исходная строка содержит сведения о человеке: фамилию, инициалы, год рождения, рост в см. Эти сведения отделены друг от друга пробелами. Например: Иванов И.И. 1976 187 И.И. Иванов 187 1976 187 И.И. 1976 Иванов и т. п. Нужно вывести эти сведения на экран в следующем виде: Иванов И.И. 1976 года рождения имеет рост 187 см.
Начал решать самым дубовым способом, вот что получилось:
{ unsigned char s[80], f[30], in[4], year[4], r[3]; int k=0, a=0, b=0, c=0, q=0; //заставка printf("\n\nАвтор: \nВиталий\nCтудент группы Р-16062 \nЕкатеринбург 2007\n\n"); printf("\nИсходная строка содержит сведения о человеке: фамилию,\nинициалы, год рождения, рост в сантиметрах."); printf("\nЭти сведения расположены в произвольном порядке,\nотделены друг от друга пробелами.\n\nНапример:"); printf("\nИванов И.И. 1976 187\nИ.И. Иванов 187 1976\n187 И.И. 1976 Иванов и т.п.\n\nВывести эти сведения на экран в следующем виде:\n"); printf("Иванов И.И. 1976 года рождения имеет рост 187 см."); printf("\n\nВведите исходную строку....\n"); //ввод исходных данных gets(s);
//Ищем кол-во символов в фамилии... for (int l=0; l<80; l++) if ((s[l]>=160 && s[l]<=175) || (s[l]>=224 && s[l]<=239)) q=q+1; cout<<q; //Находим фамилию, инициалы, год рождения и рост и копируем их во вспомогательные массивы for (int i=0; i<80; i++)
{ for (int j=i; s[j]!=' '; j++) { r[c]=s[j]; c++; } break; } */ //вывод данных
puts(f); // cout<<" "; // puts(in); // cout<<" "; // puts(year); // cout<<" года рождения имеет рост "; // puts®; // cout<<" см.";
getche();
return 0; }
это работает с ощибками: Вместе с фамилией выдается еще несколько ненужных символов, иногда программа зависает, не правильно определяются Дата рождения и Рост.