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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2009, 09:07   #1
recond
 
Регистрация: 02.02.2009
Сообщений: 6
По умолчанию Как разбить число на массив?

Подскажите пожалуйста, как разбить число допустим "543" на массив int[3]={5,4,3} ?
recond вне форума Ответить с цитированием
Старый 02.02.2009, 10:14   #2
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Код:
var i:integer;
s:string;
begin
i:=543;
s:=inttostr(i);
showmessage(s[1] + s[2] + s[3]);
end;
ы )
r9m вне форума Ответить с цитированием
Старый 02.02.2009, 10:51   #3
recond
 
Регистрация: 02.02.2009
Сообщений: 6
По умолчанию

язык Delphi не знаю, но на сколько я его понял - это не совсем то, что мне надо
recond вне форума Ответить с цитированием
Старый 02.02.2009, 11:29   #4
alexov
Пользователь
 
Регистрация: 31.10.2008
Сообщений: 61
По умолчанию

Ето у нево паскаль!Вот для 3 значных!
Код:
#include <iostream>
using namespace std;

int main()
{
	int b;
	const int n=3;
	int a[n];
	cin>>b;
	a[0]=(b%1000-b%100)/100;
	a[1]=(b%100-b%10)/10;
	a[2]=b%10;
	for(int i=0; i<n; i++)
		cout<<a[i]<<endl;
	system("pause");
}
!Help Win Api!
alexov вне форума Ответить с цитированием
Старый 02.02.2009, 12:00   #5
recond
 
Регистрация: 02.02.2009
Сообщений: 6
По умолчанию

alexov, Все работает правильно, но как быть если пользователь введет не 3, а большее кол-во чисел. Как программа это узнает и как их потом посчитать?
recond вне форума Ответить с цитированием
Старый 02.02.2009, 12:05   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

можно вот так еще

прорамма считает колво цифр в числе и их сумму

Код:
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
void main ()

{
	int n;
	cout<<"N : ";
	cin>>n;
	
	int c=0,k=1,s=0;
	while(k>=1)
	{
		k=n/pow(10,(float)(c+1));;
		c++;		
    }
	for(int i=c-1;i>=0;i--)
	{
	  s+=(n%(int)(pow((float)10,(i+1))))/pow((float)10,i);
    }	
	cout<<"\nCifr - "<<c<<"\n"<<"summa - "<<s<<"\n";
	
	_getch();
}
или вот так

Код:
#include <iostream>
#include <conio.h>
int main() {
	int num;
	std::cin >> num;
	int kol = 0, sum = 0;
	while(num > 0){
		sum += (num % 10);
		++kol;
		num /= 10;
	}
	std::cout << sum << " " << kol;
	getch();
}
как цифры из этого в массив загнать думаю разберетесь

Последний раз редактировалось counter; 02.02.2009 в 12:08.
counter вне форума Ответить с цитированием
Старый 02.02.2009, 12:23   #7
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
void main ()

{
	int n;
	int *mas;
	cout<<"N : ";
	cin>>n;
	
	int c=0,k=1,s=0;
	while(k>=1)
	{
		k=n/pow(10,(float)(c+1));;
		c++;		
           }
	mas=new int[c];
	for(int i=0;i<c;i++)
	{
	  mas[i]=(n%(int)(pow((float)10,(i+1))))/pow((float)10,i);
	}	
	
	cout<<"\nmas : ";
	for(int i=0;i<c;i++)
	{
		cout<<" "<<mas[i];
	}
	
	_getch();
}
counter вне форума Ответить с цитированием
Старый 02.02.2009, 12:29   #8
recond
 
Регистрация: 02.02.2009
Сообщений: 6
По умолчанию

counter, я использовал первый вариант, все работает, но вот только компилятор ругается:
Код:
warning C4244: '=' : conversion from 'double' to 'int', possible loss of data
warning C4244: '+=' : conversion from 'double' to 'int', possible loss of data
Это можно избежать?
recond вне форума Ответить с цитированием
Старый 02.02.2009, 13:53   #9
breate
Пользователь
 
Аватар для breate
 
Регистрация: 30.12.2008
Сообщений: 78
По умолчанию держи

число цифр ограничено только типом переменной
Код:


/* 
 * File:   1136.cpp
 * Author: Breate
 *
 * Created on 2 Февраль 2009 г., 12:36
 */

#include <stdlib.h>
#include <iostream>
using namespace std;

/*
 * 
 */

int main(int argc, char** argv) {
    int b,c;
    short k=0;
    cin>>b;
    c=b;
    while(c)
    {
        c/=10;
        k++;
    }
    short *a=new short[k];
    for(int i=k-1;i>=0;i--)
    {
        a[i]=b%10;
        b/=10;
    }
    for(int i=0;i<k;i++)
        cout<<a[i]<<"  ";
    cin>>k;
    return (EXIT_SUCCESS);
}
Моя работа - Создание сайтов
breate вне форума Ответить с цитированием
Старый 02.02.2009, 14:04   #10
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от recond Посмотреть сообщение
counter, я использовал первый вариант, все работает, но вот только компилятор ругается:
Код:
warning C4244: '=' : conversion from 'double' to 'int', possible loss of data
warning C4244: '+=' : conversion from 'double' to 'int', possible loss of data
Это можно избежать?
Не явное приведение типа, покажите строчки на которых выдает
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как инфу от idwhois разбить по строкам? jay-forum Работа с сетью в Delphi 4 12.01.2009 16:11
Как разбить число по числам? maxim_ov Microsoft Office Excel 3 04.08.2008 16:23
как разбить таблицу при копировании StasSv Microsoft Office Excel 3 11.02.2008 10:23
как разбить текстовую ячейку на отдельные ячейки? zetrix Microsoft Office Excel 0 31.10.2006 07:46