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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2012, 16:44   #1
mosssr
 
Регистрация: 21.11.2012
Сообщений: 4
По умолчанию Динамический массив. Строки.

Нужна помощь. Написать программу, которая определяет, сколько символов введено с клавиатуры и
сколько из них числовых символов. Если можно, то добавьте небольшие комментарии к действиям.
mosssr вне форума Ответить с цитированием
Старый 21.11.2012, 16:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
// dsf.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <conio.h>

int _tmain(int argc, _TCHAR* argv[])
{
	int al=0,nu=0;
	// Считываем посимвольно
	for(char c=getch();c!=13;c=getch()){printf("%c",c);
	//Если это числобуква
		if(iswalnum(c)){
			// увеличиваем нужные переменки
			if(iswdigit(c)) nu++; else al++;
		}
	}
	printf("\n%d - %d",al,nu); getchar();
	return 0;
}
Подойдет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.11.2012, 17:13   #3
mosssr
 
Регистрация: 21.11.2012
Сообщений: 4
По умолчанию

Мне для хранения строк надо использовать динамические массивы символов (размер массива определять в процессе ввода).
mosssr вне форума Ответить с цитированием
Старый 21.11.2012, 17:46   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
размер массива определять в процессе ввода
А откуда ты знаешь сколько символов будет вводится?
Как ты себе это представляешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.11.2012, 00:05   #5
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Есть способ, это надо обратится к консольному буферу объекта istream.
Код:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;


int main(){
	char* str, *ptr;
	int len;

	cout << "enter str: ";

	while(cin.get() == '\n'); 
	cin.unget(); 

	len          = cin.rdbuf()->in_avail(); // получим размер входного буфера
	str          = new char[len]; // создаём в куче буфер для строки 
	str[--len] = '\0';
	cin.rdbuf()->sgetn(str, len);  // с консольного-буфера читаем символы в буфер

	cin.ignore();
	cout << str << endl; // считанная строка
	cout << "str length: " << len << endl; // кол-во символов

	// подсчёт кол-во цифр в строке
	for(len = 0, ptr = str; *ptr; *ptr++) {
		if((*ptr >= '0' && *ptr <= '9'))
			++len;
	}
	cout << "str count digits: " << len << endl;

	delete[] str;

	cin.ignore();
    return 0;
}
Nuklon вне форума Ответить с цитированием
Старый 22.11.2012, 04:33   #6
mosssr
 
Регистрация: 21.11.2012
Сообщений: 4
По умолчанию

А зачем в программе вот это "c!=13" ? Это с неравно 13. Что это значит?
Как сделать, чтобы в первой программе он цифры тоже считал за символы? А то он ведь их не считает.

Последний раз редактировалось mosssr; 22.11.2012 в 04:37.
mosssr вне форума Ответить с цитированием
Старый 22.11.2012, 10:28   #7
masax
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 248
По умолчанию

может стоит сначала строку считать в буфер и потом посчитать кол-во символов?
Контакты
skype, почта: bm@kwax.ru
masax вне форума Ответить с цитированием
Старый 22.11.2012, 12:25   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
masax
А ты не знаешь, сколько введет пользователь. Кстати буфер ввода тоже имеет свои ограничения, так что ту либо автору придется в цикле постоянно пересоздавать массив+1 элемент, либо динамическими списками.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический массив С++ FitzPNZ Общие вопросы C/C++ 0 20.12.2011 22:24
Динамический массив, массив указателей alexalisa Паскаль, Turbo Pascal, PascalABC.NET 4 22.04.2011 21:33
динамический массив? gramp Microsoft Office Excel 2 26.02.2011 14:41
Динамический массив - или всё таки не динамический? vedro-compota Общие вопросы C/C++ 30 10.12.2010 23:22
Динамический массив Zhanna5006 Помощь студентам 7 10.01.2010 14:09