IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Лёгкая задача на одномерный массив, Помощь в реализации на С++
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской
Реальное имя: Олег

Репутация: -  0  +


1. Ввести целое число N. Выделить из этого числа цифры, кратные 3, и записать их в одномерный массив.

Вот задача.
Как я помню ПАСКАЛЬ..
вот вроде реализация.


А на си..пока незнаю
помогите.

A - МАССИВ ;
chislo - это string!!!!

Код
begin
read(chislo);
i:=1;  
j:=1;      
  repeat  
      begin;  
         if ord(chislo[i])>=48 and ord(chislo[i])<=57 then     ('Tipa proverka na ot 0 do 9')
            begin
    if ( ord(chislo[i]) mod 3 )= 0 then    (Proverka vrode na nulevoy ostatok)
         begin
               a[j]:=chislo[i];        
                J :=j+1;
        end;
            end;
         i:=i+1;
   until i=length(chislo) or (ord(chislo[i])<=48 or ord(chislo[i])>=57;


+ концовка


вроде алгоритм очень простой.
конечно я его сдела более замухрированным))
Объясните...
как на С++ писать такую задачу..
и ещё вопрос....
В паскале перед концом можно поставить "readln;" и программа не пройдёт сразу, а будет ждать твоего нажатия клавиши.
объясните...что можно поставить в самом конце., чтобы программа, не выполнила действие сразу и не не исчесла, а дождалась хотя бы нажатия любой клавиши!


Очень помощь нужна.
пожалуйста(((

Сообщение отредактировано: Олежечег(быв. Олежик) -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 8)
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


ну... как вариант.
проверяла в билдере (то есть можешь считать, что не проверяла никак smile.gif )
int main(int argc, char* argv[])
{
int a, i=-1, ar[5];
cout<<"Pls, input the number"<<endl;
cin>>a;
while (a!=0){
if ((a%10)%3==0) {
i++;
ar[i]=a%10;
}
a/=10;
}
for (int j=0; j<=i; j++)
cout<<ar[j];
getch();
return 0;
}


моменты, которые оставила на твое усмотрение:
1) как задавать размерность массива (как ты это делал в паскале - я не видела)
2) порядок сохранения в массиве - обратный (то есть для числа 319 там будет 93)
выводи, как тебе удобнее - хоть в прямом, хоть в обратном порядке
3) строки не использовала, контроля на корректность ввода нет.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Вообще-то вопрос поднимался буквально пару дней назад:
Массив
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской
Реальное имя: Олег

Репутация: -  0  +


Спасибо!


А не подскажете, как остановить программу, потому что даже с return 0 она после нажатия enter ? она сразу закрывается!
Может надо что то в программе поменять?
У меня DEV-C++
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


А что, ей должно быть все равно - нажимаешь ты что-то или нет? Она должна висеть вечно?
В паскале если пишешь readln; а потом нажимаешь enter - тоже закрывается.
а return тут вообще не при чем.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской
Реальное имя: Олег

Репутация: -  0  +


Я в плане того....
Что я нажимаю ENTER, на микро доли секунды появляется ответ......и всё!!!
А Я хочу на него посмотреть)))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


добавь еще getch();


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской
Реальное имя: Олег

Репутация: -  0  +


дело в том, что он выдаёт мне ошибку на том месте...
я решил использовать....
system("pause");
...
вроде нормально работает.
теперь вопрос в другом....



#include <iostream>

using namespace std;

int main(int argc, char* argv[])
{
int a, i=-1, ar[5];
cout<<"Pls input the number"<<endl;
cin>>a;
while (a!=0){
if ((a%10)%3==0) {
i++;
ar[i]=a%10;
}
a/=10;
}
for (int j=0; j<=i; j++)
cout<<ar[j];

system("pause");
return 0;
}


если вводить менее 10 цифр..все нормально..
если вводить больше, выскакивает проблема.
он пишет 693.
как быть?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
если вводить больше, выскакивает проблема.
Ну, так не помещаются больше 10 цифр в int, отсюда и проблема... Верхняя граница типа int = INT_MAX, а это 2147483647... Нужно больше - надо переходить к более емкому типу...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 7:59
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name