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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2011, 19:47   #1
Dmitry_Web
Пользователь
 
Аватар для Dmitry_Web
 
Регистрация: 01.11.2011
Сообщений: 43
По умолчанию Массивы C++

Задан массив из k символов. Создать два новых массива: в первый перенести все цифры из исходного массива, во второй – все остальные символы.
Заранее огромное спасибо!
P.S. Писать наиболее просто. C++ 6
Dmitry_Web вне форума Ответить с цитированием
Старый 01.11.2011, 23:03   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

a) Можете написать строку кода, которая резервирует место под ("создаёт") массив digits из k символов?
б) Можете написать код, который бы для (уже имеющегося) символа c проверял бы, возвращает ли (уже имеющаяся) функция isdigit(char) "истину" и в зависимости от этого выводил бы на экран "тру" и "не тру"?
Abstraction вне форума Ответить с цитированием
Старый 01.11.2011, 23:19   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Dmitry_Web

Заранее огромное спасибо!

за что вы нас благодарите?

Писать наиболее просто.

"Папа, ты с кем сейчас разговаривал?" (c)
Rififi вне форума Ответить с цитированием
Старый 01.11.2011, 23:27   #4
Dmitry_Web
Пользователь
 
Аватар для Dmitry_Web
 
Регистрация: 01.11.2011
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
a) Можете написать строку кода, которая резервирует место под ("создаёт") массив digits из k символов?
б) Можете написать код, который бы для (уже имеющегося) символа c проверял бы, возвращает ли (уже имеющаяся) функция isdigit(char) "истину" и в зависимости от этого выводил бы на экран "тру" и "не тру"?
Не совсем понял Ваш ответ, можно код? И желательно обьяснение, буду благодарен.
P.S. Программирование идёт туго
P.S. По поводу пункта б: выводить на экран нужно только массивы, если я вас правильно понял.

Цитата:
Заранее огромное спасибо!

за что вы нас благодарите?
За ответы.

Последний раз редактировалось Dmitry_Web; 01.11.2011 в 23:39.
Dmitry_Web вне форума Ответить с цитированием
Старый 02.11.2011, 00:01   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Не совсем понял Ваш ответ, можно код? И желательно обьяснение, буду благодарен.
Это не ответ, это вопросы. Все понимают, что программирование может "идти туго", но очень редкие филантропы принимают такое состояние дел за индульгенцию от необходимости прилагать любые усилия.
Поэтому, ещё раз.
а) Вы хотите приказать компьютеру сделать массив digits для хранения k символов, k предопределено. Какими именно словами Вы выразите это желание на C++? Если не получается ответить на этот вопрос, настоятельно советуется прочитать некоторый материал по теме "массивы". Например. Ещё например, поближе.
б) Можете написать код, который бы для (уже имеющегося) символа c проверял бы, возвращает ли (уже имеющаяся) функция isdigit(char) "истину" и в зависимости от этого выводил бы на экран "тру" и "не тру"?
Abstraction вне форума Ответить с цитированием
Старый 02.11.2011, 16:09   #6
_kilik_
Пользователь
 
Аватар для _kilik_
 
Регистрация: 16.08.2011
Сообщений: 69
По умолчанию

криво получилось( башка совсем не варит

Код:
#include<iostream>
using namespace std;

int main(){
	setlocale(LC_ALL,"Russian");
	int k;
	int size_num=0,size_all=0;
	cout<<"введите размер масива \n";
	cin>>k;
	char *mass = new char[k+1];
	cout<<"заполните масив \n";
	cin>>mass;
	for (int i=0;mass[i]!='\0';i++){
		if(mass[i]>47 && mass[i]<58)
			size_num++;
		else
			size_all++;
	}
	char *num=new char[size_num+1];
	char *all=new char[size_all+1];

	int n=0, m=0;
	for (int i=0;mass[i]!='\0';i++){
		if(mass[i]>47 && mass[i]<58){
			num[n]=mass[i];
			n++;
		}
		else{
			all[m]=mass[i];
			m++;
		}
	}
	num[n]=all[m]='\0';

	cout <<"vivod \n";
	cout<<num<<endl<<all<<endl;
	delete [] num;
	delete [] all;
	delete [] mass;

	system("pause");
	return 0;

}
_kilik_ вне форума Ответить с цитированием
Старый 02.11.2011, 16:32   #7
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Код:
#include <cctype>
#include <vector>
#include <iostream>

using namespace std;

int main()
{
  
  //заполнение массива
  vector<char> mas;
  cout << "Enter k: ";
  int k; cin >> k;
  cout << "Enter " << k << " symbols: ";
  for (int i = 0; i < k; ++i)
  {
    char buf; cin >> buf;
    mas.push_back(buf);
  }

  //распределение значений
  vector<char> nums, notnums;
  for (vector<char>::const_iterator iter = mas.begin(); iter != mas.end(); ++iter)
  {
    if (isdigit(*iter))
      nums.push_back(*iter);
    else
      notnums.push_back(*iter);
  }

  //вывод полученных массивов, думаю, сами напишете

}
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 02.11.2011, 19:16   #8
Dmitry_Web
Пользователь
 
Аватар для Dmitry_Web
 
Регистрация: 01.11.2011
Сообщений: 43
По умолчанию

_kilik_ спасибо, но до динамических массивов не дошли.
И Вам спасибо, Сtrl, но библиотеки <cctype> <vector> так же не проходили.

Нужно использовать что - то вроде:
Цитата:
char c
if ((c >= '0' && c <= '9')

Последний раз редактировалось Dmitry_Web; 02.11.2011 в 19:18.
Dmitry_Web вне форума Ответить с цитированием
Старый 02.11.2011, 22:05   #9
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

СтОит определиться, на чем мы пишем. Если на c++, то зачем вот это
Код:
for (vector<char>::const_iterator iter = mas.begin(); iter != mas.end(); ++iter)
{
if (isdigit(*iter))
nums.push_back(*iter);
если мы можем просто написать
Код:
copy_if(mas.begin(), mas.end(), back_inserter(nums), isalpha);
Son Of Pain вне форума Ответить с цитированием
Старый 04.11.2011, 05:24   #10
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Son Of Pain, а else-ветвь? Тут, конечно, неплохо бы for_each с лямбда-функцией, но C++0x далеко не все компиляторы реализовали.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
указатели на массивы и массивы указателей blacktener Общие вопросы C/C++ 16 13.06.2011 20:45
Динамические массивы и массивы варианты N@stya Помощь студентам 0 11.06.2010 21:09
С++, Массивы, динамические массивы. -Sunshine- Помощь студентам 1 19.04.2010 02:17
Массивы evgenjke Помощь студентам 0 16.02.2010 22:53
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12