Помощь - Поиск - Пользователи - Календарь
Полная версия: Лёгкая задача на одномерный массив
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Олежечег(быв. Олежик)
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;" и программа не пройдёт сразу, а будет ждать твоего нажатия клавиши.
объясните...что можно поставить в самом конце., чтобы программа, не выполнила действие сразу и не не исчесла, а дождалась хотя бы нажатия любой клавиши!


Очень помощь нужна.
пожалуйста(((
мисс_граффити
ну... как вариант.
проверяла в билдере (то есть можешь считать, что не проверяла никак 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) строки не использовала, контроля на корректность ввода нет.
volvo
Вообще-то вопрос поднимался буквально пару дней назад:
Массив
Олежечег(быв. Олежик)
Спасибо!


А не подскажете, как остановить программу, потому что даже с return 0 она после нажатия enter ? она сразу закрывается!
Может надо что то в программе поменять?
У меня DEV-C++
мисс_граффити
А что, ей должно быть все равно - нажимаешь ты что-то или нет? Она должна висеть вечно?
В паскале если пишешь readln; а потом нажимаешь enter - тоже закрывается.
а return тут вообще не при чем.
Олежечег(быв. Олежик)
Я в плане того....
Что я нажимаю ENTER, на микро доли секунды появляется ответ......и всё!!!
А Я хочу на него посмотреть)))
мисс_граффити
добавь еще getch();
Олежечег(быв. Олежик)
дело в том, что он выдаёт мне ошибку на том месте...
я решил использовать....
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.
как быть?
volvo
Цитата
если вводить больше, выскакивает проблема.
Ну, так не помещаются больше 10 цифр в int, отсюда и проблема... Верхняя граница типа int = INT_MAX, а это 2147483647... Нужно больше - надо переходить к более емкому типу...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.