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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2017, 10:16   #1
Fedmunty
Новичок
Джуниор
 
Регистрация: 05.12.2017
Сообщений: 1
По умолчанию Задан массив из k символов. Создать два новых массива: в первый перенести все цифры из исходного массива, во второй – все остальные символы. Язык C++.

Проблемы возникают с переносом элементов из исходного массива в новые.

Код:
#include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;



int main()
{
	const int m = 10;
	char n = 0;
	char a[m]; 
	cout << "Vvedite elementi massiva a: " << endl;
	for (n = 0; n < m; n++) 
		cin >> a[n];  
	cout << "a = {";
	for (n = 0; n < m; n++)
		cout << a[n] << " ";
	cout << endl;
 	
	char b[m], c[m];
	int k = 0, i = 0;
	for (n = 0; n < m; n++)
		if (a[n] == '1', '2', '3', '4', '5', '6', '7', '8', '9')
		{
			
			b[k] = a[n];
			k++;
		}
		else
		{
			c[i] = a[n];
			i++;
		}

	        cout << b[k] << " ";
			cout << endl;
			cout << c[i] << " ";
			cout << endl;


	system("pause");
	return 0;
   
}
Вот что выводит:
http://www.programmersforum.ru/attac...1&d=1512457965
Изображения
Тип файла: png Код.PNG (6.5 Кб, 191 просмотров)

Последний раз редактировалось Fedmunty; 05.12.2017 в 10:23. Причина: НЕ указан язык.
Fedmunty вне форума Ответить с цитированием
Старый 05.12.2017, 10:26   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
if (a[n] == '1', '2', '3', '4', '5', '6', '7', '8', '9')
Это что за бред? Если хотели сравнить со всеми, то так не сравнивают - используйте ||. Если оператор запятая заюзали (а вдруг 0_0), то явно неправильно.
И вообще http://en.cppreference.com/w/cpp/string/byte/isdigit
p51x вне форума Ответить с цитированием
Старый 05.12.2017, 10:46   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Fedmunty Посмотреть сообщение
if (a[n] == '1', '2', '3', '4', '5', '6', '7', '8', '9')
теоретически можно попробовать заменить на:
Код:
if (a[n] >= '0' && a[n] <= '9')
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.12.2017, 11:27   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Тыц

Скопитырено из этой темы
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 05.12.2017, 12:36   #5
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Оо .... Охренеть .. это даже компилится!!! чудеса прям.
С++ это прям лидер по сравнениям красного с квадратным.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 05.12.2017, 12:58   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Оо .... Охренеть .. это даже компилится!!! чудеса прям.
Почему нет? Что вас тут пугает?

Цитата:
С++ это прям лидер по сравнениям красного с квадратным.
Где вы это увидели? Тут сравнивается char и char. Дальше оператор запятая, которая к сравнению прямо не относится.
p51x вне форума Ответить с цитированием
Старый 05.12.2017, 13:07   #7
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Дальше оператор запятая, которая к сравнению прямо не относится.
Так вот именно не относится. То есть тут кодеру нужно очень внимательно следить за тем что он пишет. По хорошему компилятор должен был ругнуться. А так все скомпилилось и вроде бы нормально, но если вдруг ошибка то на ее поиски может уйти вечность.

А если код разрабатывает группа людей. Да еще и малознакомых друг другу. Собрали проект а он не работает. Но собрался. бррр...
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 05.12.2017, 14:02   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
То есть тут кодеру нужно очень внимательно следить за тем что он пишет.
C/C++ изначально предполагают, что прокладка между стулом и монитором достаточно квалифицированна и лучше знает.

Цитата:
По хорошему компилятор должен был ругнуться.
С какой стати? Ошибки тут нет, сужения тоже,... Может и на каждое деление он должен ругаться, а вдруг там 0 (хотя это еще как-то можно понять).

Цитата:
А если код разрабатывает группа людей. Да еще и малознакомых друг другу. Собрали проект а он не работает. Но собрался. бррр...
А если кто-то вместо максимума минимум искал и код опять же не работает, но собрался... И что значит "не работает"? Он работает именно так, как написано.
p51x вне форума Ответить с цитированием
Старый 05.12.2017, 14:35   #9
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Собрали проект а он не работает. Но собрался. бррр...
А на этот случай есть юнит-тесты.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 26.11.2020, 12:23   #10
RouOne
Новичок
Джуниор
 
Регистрация: 24.11.2020
Сообщений: 1
По умолчанию

#include <iostream>
using namespace std;



int main()
{
int m = 5;
char n = 0;
char a[m];
cout << "Vvedite elementi massiva a: " << endl;
for (n = 0; n < m; n++)
cin >> a[n];
cout << "a = { ";
for (n = 0; n < m; n++)
cout << a[n] << " ";
cout << "}"<< endl;

char b[m], c[m];
int k = 0, i = 0;
for (n = 0; n < m; n++)
{
if (a[n] >= '0' && a[n] <= '9')
{
b[k] = a[n];
k++;
} else
{
c[i] = a[n];
i++;
}
}
cout << "simvoli ";
for (int p=0; p < i; p++){
cout << c[p] << " ";
}
cout << endl;

cout << "chisla ";
for (i=0; i< k; i++){
cout << b[i] << " ";
}
cout << endl;

Последний раз редактировалось RouOne; 26.11.2020 в 12:24. Причина: Не дописал
RouOne вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверьте решение задачи: Дан массив. Получить новый массив, выбросив из исходного массива все члены со значением max(а1 ,а2 , ... , аn). Определить число элементов нового массива. ParkerVans Паскаль, Turbo Pascal, PascalABC.NET 5 23.10.2017 19:03
Дан одномерный массив из 30 элементов. Сформировать второй массив, в котором сначала идут все элементы первого массива, кратные 5, Olzhakesh C# (си шарп) 1 29.04.2014 23:49
Сформировать одномерный массив, элементами которого являются все положительные элементы исходного массива... sev48fire Помощь студентам 11 07.06.2012 11:06
Турбо ассемблер - построить массив путём сдвига исходного массива и умножить все элементы полученного массива на два Александр16 Помощь студентам 5 12.02.2012 20:30
Турбо ассемблер - построить массив путём сдвига исходного массива и умножить все элементы полученного массива на два Александр16 Помощь студентам 1 12.02.2012 19:56