Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2015, 13:29   #1
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию С++ Строки

Задание: вывести ФИО, посчитать кол-во букв "а" в строке, длину строки и первые буквы ФИО: т.е в моей программе KAI.

Как можно переделать более правильно(корректно)?
Возможно, есть какие-то стандартные функции вывода первых букв и тп.?

Код:
#include <conio.h>  
#include <iostream> 
#include <cstring>

 using namespace std;
 int main()
{   setlocale(LC_ALL , "Russian");
	
		char  str[] = "Korskanov Alexandr Ivanovuch";
		 
		int i=0,k=0;
		cout << " --- "<< str<< " --- "<< endl;
			
		do{
		if(str[i]=='a')
                k++;
                i++;
	    }
	while(str[i]!='\0');
	cout<<"Кол-во букв а= "<<k<<endl;
	cout<<"Длинна строки - "<<strlen(str)<<"\n";
	cout <<"Первые буквы имени: "<< str[0]<<str[10]<<str[19]<< endl;
		
	_getch();
	return  0; 
}
tane вне форума Ответить с цитированием
Старый 17.05.2015, 20:37   #2
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Код:
cout <<"Первые буквы имени: "<< str[0]<<str[10]<<str[19]<< endl;
У тебя же не всегда будет начинаться имя на 10 индексе, а фамилия на 19-ом.... Я думаю надо что-то наподобие такого:
Код:
char Первая_буква_имени, Первая_буква_отчества;
int индекс = 0;
for( начало строки; конец_строки; ++ )
    if( [текущий_индекс] == ' ' ){ 
        Первая_буква_имени = [текущий_индекс + 1];
        индекс = текущий_индекс;
        break; // заканчиваем цикл на первом пробеле
                  //так как в Первая_буква_имени в итоге будет содержатся
                  //первая буква отчества (нам нужна первая буква имени)
    }
for( индекс; конец_строки; ++ )
    if( [последующий_индекс] == ' ' ){
        Первая_буква_отчества = [последующий_индекс + 1];
        break; 
    }       
cout << "Первая буква имени: " << Первая_буква_имени << endl;
cout << "Первая буква отчества: " <<  Первая_буква_отчества <<endl;
Вот это вроде ни к чему:
Код:
 i++;
используй одну переменную и как индекс и как инкрементатор:
Код:
do{
		if(str[k]=='a')
                k++;
	    }
	while(str[k]!='\0');
	cout<<"Кол-во букв а= "<<k<<endl;

Последний раз редактировалось igoreshka3333; 17.05.2015 в 22:40.
igoreshka3333 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Упорядочить строки матрицы D (m. n) Лексикографически по неубыванию первых k элементов строки Анатолий171 Помощь студентам 123 04.07.2014 18:46
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и ANTON1994 Паскаль, Turbo Pascal, PascalABC.NET 5 09.02.2013 14:07
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10