Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод чисел с цифрами 1 или 3 
:(
    Опции темы
Гость_Vitek
Дата 21.4.2005, 17:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Добрых суток господа! Помогите мне пожалуйста!
Мне нужно выполнить задание на C++:
Ввести целочисленный массив
1)Вывести все числа, в которых есть цифры 1 или 3.
2)Определить тип последовательности (возрастающая, убывающая, переменная)

Господа, кто разбирается в программирование, буду вам чрезмерно благодарен если вы мне поможете с этим заданием! Никак не могу с ними разобраться. Для меня это что-то сверхестественное.

_____________________
С уважением,
Виктор.
  Вверх
Akina
Дата 21.4.2005, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



1)
Код

If (instr(str(Number),"1")+instr(str(Number),"3"))>0 then msgbox "Есть 1 или 3" else msgbox "Нет ни 1, ни 3"

2)
Код

for i=1 to n-1
x=x+sign(k(i)-k(i+1))
next
select case x
case n-1
msgbox "Убываем"
case 1-n
msgbox "Возрастаем"
case else
msgbox "Всяко было"
end select

А на С++ сам перекладывай - лениво мне...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
sergejzr
Дата 21.4.2005, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Первое: (Если бы Вы воспользовались поиском, то нашли бы 99% похожую задачу smile )

Код

#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define ARRAY_SIZE 10
int main(int argc, char **argv)
{
    int array[ARRAY_SIZE] = { 800, 12, 73, -20, 399, 291, 45, -21, 61, 77 };
    int newarray[ARRAY_SIZE]; // новый массив для чисел с 1 или 3
    int i, j, a = 0;
    
    for(i = 0; i < ARRAY_SIZE; i++)
    {
        for(j=array[i];j!=0;j=j/10)
       {
          int rest=j%10;
         if (rest==3||rest==1) //берём те, который в остатке 1 или 3
          {
            newarray[a]=array[i]; a++; goto found;
          }
       }
found:;
    }
    for(int u=0;u<a;u++)
        cout<<newarray[u]<<" ";
    getch();
    return 0;
}



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Guest
Дата 21.4.2005, 18:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Akina, я бы с удовольствием переложил если бы умел...! Я в информатике очень плохо разбираюсь! smile
Мне вообще три проги надо сделать было, но одну я сам смог написать, а вот эти две - это я никак не осилю! Так что, если я Вас не отвлекаю, и если у Вас будет минутка свободного времени (если это конечно не больше по времени займет), то я буду Вам очень благодарен, если Вы это переложете на С++. Просто я правда в информатике не понимаю. А тут нам проги задали делать...Ужас!

sergej.z, а там ошибка какая то... пишет - Error directive: Must use C++ for the type iostream.
  Вверх
sergejzr
Дата 21.4.2005, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Ну так юзайте С++ smile
Во первых надо сохранить файл в что нибудь типа xxx.cpp

И, если компилим на юниксах
g++ xxx.cpp


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
sergejzr
Дата 21.4.2005, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Ну или в строчке 25: замените
Код

cout<<newarray[u]<<" "; 

на
Код

printf("%i ",newarray[u]);


и в первой строчке
Код

#include <iostream.h>

на
Код

#include "stdio.h"



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Guest
Дата 21.4.2005, 19:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











sergej.z, мне так неловко отнимать у Вас время, но если Вам не трудо, не могли бы вы представить, что пытаетесь помочь дереву, которое в этом ничего не понимает! smile))
У меня на компьютере стоит "Borland C++ for DOS", не могли бы вы мне сделать так, чтобы я просто мог скопировать с этого форума то, что Вы напишете и вставить в мой "Borland C++ for DOS" и чтобы мне не надо было ничего изменять, удолять настраивать и т.д. Просто, чтобы скопировать и работало. А то я полный ноль в программирование!!!! Пожалуйста! Если не очень трудно, сделайте!
  Вверх
sergejzr
Дата 21.4.2005, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Я такими компилерами не пользовался, но вот это должно сработать полюбому:

Код

#include "stdio.h"
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define ARRAY_SIZE 10
int main(int argc, char **argv)
{
    int array[ARRAY_SIZE] = { 800, 12, 73, -20, 399, 291, 45, -21, 61, 77 };
    int newarray[ARRAY_SIZE]; // новый массив для чисел с 1 или 3
    int i, j, a = 0;
    
    for(i = 0; i < ARRAY_SIZE; i++)
    {
        for(j=array[i];j!=0;j=j/10)
       {
          int rest=j%10;
         if (rest==3||rest==1) //берём те, который в остатке 1 или 3
          {
            newarray[a]=array[i]; a++; goto found;
          }
       }
found:;
    }
    for(int u=0;u<a;u++)
        printf("%i ",newarray[u]);
    getch();
    return 0;
}


А расширение у файла какое делаете?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Guest
Дата 21.4.2005, 19:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











а так 3 Errors:
1)Statement missing ;
2)Undefined symbol 'u'
3)Expression syntax

и 2 Warnings:
1)Parameter 'argc' is never used
2)Parameter 'argv' is never used

А вот в самой первой программе, которую Вы написали была всего одна ошибка.(Error: Must use C++ for the type iostream).

А это Вы какую прогу написали? Которая выводит числа с цифрами 1 или 3? Или которая определяет тип последовательности? И почему в программе по русски написанно(//берём те, который в остатке 1 или 3 ; // новый массив для чисел с 1 или 3), это нормально? это так и оставлять? А расширение я не трогал.
  Вверх
Guest
Дата 21.4.2005, 19:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А как переложить на C++ то, что Akina написал?
  Вверх
Guest
Дата 22.4.2005, 10:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Прочитав пол книги по C++ смог написать вот это:

Код

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<iostream.h>
void main(void)
{int n, m, i=0, a[100];
textcolor(10); clrscr();
{cout<<"Imput:";cin>>m;
cout<<"Imput number:";
for(int i=0; i<m; i++)cin>>a[i];
for(i=0; i<m; i++)cout<<a[i]<<",";}
for(i=0; i<m; i++)
{n=a[i];
while (n!=0)
{if(n%10==1 || n%10==3)cout<<a[i]<<",";
n=n/10;}
}
getch();
}


Это то, что типа должно выводить числа с цифрами 1 и 3. Ошибок вроде нет, но как то она не очень то и работает. Я сделал это применяя то, что мы сейчас в институте проходим, т.е. самые элементарные операторы, операции и т.д.
Вот просьба у меня такая: не могли бы вы ее подкорректировать, чтоб она заработала так, как надо?! Очень прошу, HELP ME!
  Вверх
Dov
Дата 22.4.2005, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88



Код
#include<stdio.h>   
#include<stdlib.h>  
#include<conio.h>   
#include<iostream.h>
    
void main(void)
{
    int n, m, a[100];    

    cout << "Imput: ";
    cin >> m;  
    cout << "Imput number: \n";    
    for( int i = 0; i < m; i++ )
        cin >> a[i];    
    for( i = 0; i < m; i++ )
        cout << a[i] << "  ";
    cout << endl;    
    
    for( i = 0; i < m; i++ )
    {
        n = a[i];   
        while( n )
        {
            if( n % 10 == 1 || n % 10 == 3 )
            {
                cout << a[i] << "  ";
                break;
            }
            n /= 10;            
        }
    } 
    cout << endl;
    getch();
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Guest
Дата 23.4.2005, 01:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Dov, о, огромное Вам спасибо! Все работает, все идеально! И сделанно как раз так, как нужно! Еще раз СПАСИБО! Вы меня очень выручили! Теперь в пятницу я могу со спокойной душой идти в институт! И все благодаря Вам!!! Еще раз СЕНКС!!!
  Вверх
Guest
Дата 23.4.2005, 16:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вопросик возник. Что это значит?
Код

n /= 10;

  Вверх
sergejzr
Дата 23.4.2005, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Код

n=n/10;

smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Guest
Дата 23.4.2005, 16:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











и вот это?
Код

cout << "Imput number: \n"; 

а конкретно конец этой строки интересует.
Код

: \n";

  Вверх
sergejzr
Дата 23.4.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Переход строки то же самое что endl


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Guest
Дата 23.4.2005, 16:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











sergej.z, понятно, спасибо!

Итак, господа, вот что у меня получилось! Благодаря Вам и книги по С++:

Первая прога, которая суммирует все числа заканчивающиеся на 1 или 3 РАБОТАЕТ и выглядит так:

Код

#include<conio.h> 
#include<iostream.h> 
#include<math.h> 
#include<stdio.h> 
void main(){int i, n, s=0, a[100]; 
textcolor(10); clrscr(); 
cout<<"Enter N:";cin>>n; 
for(i=0; i<n; i++){cout<<"Enter Number:";cin>>a[i];} 
for(i=0; i<n; i++)cout<<a[i]<<','; 
for(i=0; i<n; i++) 
if((a[i]%10==1 || a[i]%10==3)) s=s+a[i]; 
for(i=0; i<n; i++) 
if((a[i]%10==-1 || a[i]%10==-3)) s=s+a[i]; 
cout<<endl<<"Result:"<<s;getch();} 


Вторая прога, которая выводит числа с цифрами 1 или 3 тоже РАБОТАЕТ и выглядит так:

Код

#include<stdio.h>    
#include<stdlib.h>  
#include<conio.h>    
#include<iostream.h> 
    
void main(void) 
{ 
    int n, m, a[100];    

    cout << "Imput: "; 
    cin >> m;  
    cout << "Imput number: \n";    
    for( int i = 0; i < m; i++ ) 
        cin >> a[i];    
    for( i = 0; i < m; i++ ) 
        cout << a[i] << "  "; 
    cout << endl;    
    
    for( i = 0; i < m; i++ ) 
    { 
        n = a[i];    
        while( n ) 
        { 
            if( n % 10 == 1 || n % 10 == 3 ) 
            { 
                cout << a[i] << "  "; 
                break; 
            } 
            n /= 10;            
        } 
    } 
    cout << endl; 
    getch(); 
}


Третья прога, которая определяет тип последовательности как не странно тоже работает smile и выглядит так:

Код

#include <iostream.h> 
#include <conio.h> 

int sign(int value) 
{ 
    return (value < 0) ? -1 : 
           (value > 0) ?  1 : 
           /*else*/       0 ; 
} 

void main() 
{ 
    int a[100], n, i; 
    cin >> n; 
    for(i = 0; i < n; ++i) 
        cin >> a[i]; 
    
    int x = 0; 
    for (i = 0; i < n - 1; ++i) 
        x += sign(a[i] - a[i + 1]); 

    if      (x == 1 - n) cout << "up"; 
    else if (x == n - 1) cout << "down"; 
    else                 cout << "???"; 
    
    cout << flush; 
    getch(); 
}

  Вверх
Guest
Дата 26.4.2005, 15:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем привет! Люди добрые, в пятницу уже надо проги сдовать! Сами пргоги уже есть и работают! При сдачи программ я должен объяснить преподу буквально каждую строчку! С первоми двумя я полностью разобрался! Не могли бы Вы мне объяснить мою третью прогу?! Прям буквально каждый значок, оператор....ПЛИИИЗ!

Вот собственно вот эта прога, которую надо объяснить:

Код

#include<iostream.h>
#include<conio.h>
int sign(int value)
{
if(value<0) return -1;
if(value>0) return  1;
return 0;
}
void main()
{
int a[100], n, i;
cin>>n;
for(i=0; i<n; ++i)
cin>>a[i];
int x=0;
for(i=0; i<n-1; ++i)
x+=sign(a[i]-a[i+1]);
if     (x==1-n)cout<<"up";
else if(x==n-1)cout<<"down";
else           cout<<"???";
cout<<flush;
getch();
}


Зарание спасибо!
  Вверх
Guest
Дата 26.4.2005, 21:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











int sign(int value) Объявили, что процедура "sign" возвращает значение целого типа (т.е. int), и на входе в неё передаётся переменная типа int, которую мы внутри этой функции называем value.
Внутри этой функции:
if(value<0) return -1;
if(value>0) return 1;
return 0;
1 строчка: если значение переменной, которую мы называем value меньше 0, то программа заканчивает выполнять эту функцию, присваивая этой функции значение -1, если value>0 то функция продолжает выполнятся, и переходит на 2 строчку .
2 строчка: если value больше 0, то программа заканчивает выполнять эту функцию, присваивая этой функции значение +1, иначе: третья строчка присваивает функции значение 0.
Итого: если value<0 то sign=-1? если value>0 то sign=1 если value=0, то sign=0.

void main() Начало самой программы. () означают, что программа не берёт из вызвавшей её программы (операционной системы) никаких данных, а void что в операционную систему программа тоже ничего не возвращает. В С++ сама программа всегда называется main.

int a[100], n, i; Обьявили, что а- это массив из 100 элементов, каждый из которых типа int (целое число), ещё объявили переменные n и i типа int.

cin>>n; прочитали значение n.

for(i=0; i<n; ++i)
cin>>a[i]; Читаем значения массива a[i], с i=0, до тех пор пока i не станет = n. Т.е. заполнили все элементы массива с 0-ого, до n-1-ого (всего n штук). i++,означает, что с каждым разом i увеличивается на 1.

int x=0; объявили x-целое равное 0

for(i=0; i<n-1; ++i)
x+=sign(a[i]-a[i+1]); x+=что-нибудь, это тоже, что и x=x+что-нибудь, т.е. увеличение x на что-нибудь. sign(a[i]-a[i+1]) равен -1, если a[i]-a[i+1]<0 (т.е. a[i]<a[i+1]), равен 0 если a[i]=a[i+1], и т.д. (см. функцию "sign")

if (x==1-n) cout<<"up"; если x в результате предыдущих вычислений окажется равным 1-n (вожможно лишь в случае, когда a[i]-a[i+1]<0 при всех значениях i, т.е массив возрастающий), то прога пишет up , если нет - то выполняет, то что после else

else if(x==n-1)cout<<"down"; проверяет x=n-1? если да (т.е. массив нисходящий) то пишет down если нет то вполняет то что после else

cout<<"???"; пишет ??? (возможно только тогда, когда x не равен 1-n и не равен 1-n)

cout<<flush; пишет flush (может имелось ввиду finish?)

getch(); Ждёт пока не нажмём какую-нибудь кнопку, после нажатия программа заканчивается.


Итого: Мы в программу вводим n чисел, а она говорит нам up если каждое сило больше предыдущего, down если наоборот, и ??? если числа идут вразнобой.
При этом программа использует написанную нами функцию sign, которую я уже охарактеризовал.

  Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0677 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.