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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2015, 17:02   #1
vladden123
Пользователь
 
Регистрация: 05.01.2015
Сообщений: 11
По умолчанию Дана строка символов до точки. Определить, сколько каких латинских букв в ней содержится

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

int main()
{
    int i=0,k=0;
    char s[]="Hello, world!.abcde";
    char *p=s;
  puts(p);

    for(i=0;i<strlen(p);i++)
    {

        if(s[i]=='.')
            break;

            printf("%c",s[i]);
    }

printf("\n");
 for(i=0;s[i]!='.';i++)
 {
 if((s[i]>'a')&&(s[i]<'z'))k++;
 if((s[i]>'A')&&(s[i]<'Z'))k++;
 }
printf("kolichestvo latinskih simvolov=%d\n",k);


system("pause");
return 0;
}
Как подсчитать сколько каких латинских букв в ней содержится?
vladden123 вне форума Ответить с цитированием
Старый 05.01.2015, 18:38   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Могу предположить, что регистр букв не важен.

Формируем массив на 25 элементов типа int;
Принимаем символ, переводим в верхний регистр.
Получаем код символа. Получаем номер элемента в массиве, который соответствует данному символу:
<номер элемента в массиве> = '<символ>' - 'A'; // тут с преобразованием типов
Этот элемент увеличиваем на единицу.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 05.01.2015, 19:21   #3
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

проверяем символ по его коду в таблице,
в C++Builder XE3 работает так, у вас может быть другой диапазон
Код:
#include <iostream.h>
#include <string.h>

void PrintAllSimvol(); //показать все символы

int main (){
 PrintAllSimvol();
 int total = 0;
 char str[] = "Строка string 12345   ,.,, AbCdFe!!!";
 cout << "\n\n\n" << str;
 for (int i = 0; i < strlen(str); i++){
	//ЗАГЛАВНЫЕ БУКВЫ
	if ( (64 < str[i]) && (str[i] < 91) ) {
		++total;
		}
	//строчные буквы
	if ( (96 < str[i]) && (str[i] < 123) ) {
		++total;
		}
	}
 cout << "\n\nTotal = " << total << '\n';
system("pause");
return 0;
}

void PrintAllSimvol(){
signed char test1;
for (int i= -128; i <= 127; i++) {
	test1 = i;
	cout << i << " : " << test1 << "  ";
	if (i % 10 == 0) {
		cout << endl;
		}
	}
}
#define TRUE FALSE //счастливой отладки
Aleksander550 вне форума Ответить с цитированием
Старый 05.01.2015, 23:31   #4
vladden123
Пользователь
 
Регистрация: 05.01.2015
Сообщений: 11
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define j 26

int main()
{
    int a[j] = { 0 };
    int i=0,k=0;
    char s[]="Hello, world!.abcde";
    char *p=s;

    puts(p);

    for(i=0;i<strlen(p);i++)
    {

        if(s[i]=='.')
            break;

            printf("%c",s[i]);
    }

printf("\n");
 for(i=0;s[i]!='.';i++)
 {
 if((s[i]>'a')&&(s[i]<'z'))k++;
 if((s[i]>'A')&&(s[i]<'Z'))k++;
 }
printf("kolichestvo latinskih simvolov=%d\n",k);



    for (; *p!='.'; ++p) {
        if (isalpha(*p)) {
            a[tolower(*p) - 'a']++;
        }
    }

    for (i = 0; i < j; ++i) {
        if (a[i]) {
            printf("%c = %d\n", i + 'a', a[i]);
        }
    }

    return 0;
}
сделал вот так)
vladden123 вне форума Ответить с цитированием
Старый 07.01.2015, 01:26   #5
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

Цитата:
Сообщение от vladden123 Посмотреть сообщение
Дана строка символов до точки. Определить, сколько каких латинских букв в ней содержится
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
const int n = 80;
bool ch(char sim)
{
	bool b = false;
	if(((sim >= 'a') && (sim <= 'z')) || ((sim >= 'A') && (sim <= 'Z')))
		b = true;
	return b;
}
int main()
{
	setlocale(LC_ALL, "Rus");
	char s[n],res[n];
	int k = 0, count = 0;
	cout << "Введите строку: ";
	gets(s);
	for(int i = 0; (s[i] != '.') && (i < strlen(s)); i++)
	{
		if(ch(s[i]))
		{
			res[k++] = s[i];
			count++;
		}
	}
	res[k] = NULL;
	if(!count)
		cout << "\nЛатинских букв нет!";
	else
	{
		cout << "\nКоличество латинских букв: " << count;
		cout << "\n\nЛатинские буквы: " << res << " ";
	}
	getch();
	return 0;
}
помог - жми на весы
Chainik! вне форума Ответить с цитированием
Старый 07.01.2015, 06:34   #6
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,602
По умолчанию

А что начальный код не работает? По моему мнению, начальный код является правильным. Скомпилировал и проверил. Программа выдала 10, т.е это правильная выдача
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки. Дана строка символов,среди которых есть двоеточие ( : ). Определить сколько символов ему предшествуют. Un1q Паскаль, Turbo Pascal, PascalABC.NET 2 11.12.2013 14:52
Дана строка символов. Подсчитать, сколько различных символов встречаются в ней. Вывести их на экран Алена_=))) Microsoft Office Word 1 17.06.2012 21:04
Дана строка текста.Определить какой из символов в ней больше . А или О? Райзат Фриланс 23 26.07.2010 21:20
Дана строка символов до точки. Определить, сколько слов содержат ровно три буквы "К". Evidence Паскаль, Turbo Pascal, PascalABC.NET 0 01.06.2009 20:40