1

Тема: Допоможіть будь ласка з написанням програм

Допоможіть будь ласка з написанням програм, тільки почав навчатись, 1 курс, дуже хочу навчитись програмувати.
Дуже прошу, якшо хтось візьметься допомагати, пишіть коментарі, щоб я зрозумів.
Дякую

Прихований текст

А
http://s7.postimg.org/uf0f84m6z/image.png
Б
http://s21.postimg.org/80k423fdz/image.png

Подякували: coder1

2 Востаннє редагувалося koala (10.11.2015 16:58:12)

Re: Допоможіть будь ласка з написанням програм

Вітаю пана в реальному світі. Тут для того, щоб навчитися програмувати, треба програмувати. Ніякі програми, написані іншими людьми, вам не допоможуть. Пишіть сюди, коли зайдете в глухий кут (тільки не плутайте глухий кут з 1) "набридло", 2) "треба провітритися" і 3) "ще не гуглив", це все не глухі кути) - викладайте: 1) код (бажано з відступами, якщо рядків більше 100 - то подумайте, без чого можна поставити ваше питання), 2) опис проблеми (тільки не "не працює" і "покажіть, що не так", а конкретно - "ось у такому рядку має бути X, а бачу Y") і 3) свої думки стосовно неї (що конкретнійший попередній пункт, то менше треба писати тут).
А ще маю сказати, що C++ - дуже невдалий вибір першої мови. Чи у вас C? Ви навіть мову не назвали.

Подякували: leofun011

3

Re: Допоможіть будь ласка з написанням програм

У мене в університеті викладають програмування на С++. А написав я так, із-за того, що моїх знань не вистачає, щоб написати програми ось ці, ми на парах проходимо тільки "Способи виведення та введення інформації", я забігши наперед прочитав трохи про цикли, але цього теж недостатньо, ось і звернувся сюди.
Можете хоч розповісти детально, коли і як використовуються цикли for, while, do while? Синтаксичні конструкції знаю, але не можу розібратись з використанням. Буду дуже вдячний

Подякували: coder1

4

Re: Допоможіть будь ласка з написанням програм

Класиків читали?

5

Re: Допоможіть будь ласка з написанням програм

Нам дали таку літературу:
З.Я.Шпак - Програмування мовою С
Хортон візуал С 2010 - повний курс
Це все що нам дали.
Ще в інтернеті я знаходив та читав "Мова програмування С++. Бьерн Страуструп"
Тільки я не розумію, чому нам дають на опрацювання літературу, в якій описується мова С, хоча на парах вчимо С++

6 Востаннє редагувалося -=ЮрА=- (10.11.2015 18:06:33)

Re: Допоможіть будь ласка з написанням програм

snikers.mc - тримай завдання про послідовності

#include <iostream>
using namespace std;

bool find_neg_seq(float * arr, size_t size, size_t from, size_t &beg, size_t &end); 

int main(){
    size_t i, j, k, n;
    size_t beg = -1;//початковий індекс послідовності
    size_t end = -1;//кінцевий   індекс послідовності
    float arr[] = {0, 2, -3.1, -5, 6, 7, -3, -2, -15, 11, 5, -1, -2};  
    n = sizeof(arr) / sizeof(arr[0]);//розраховуємо кількість єлементів масиву
    cout<<"\n\tINPUT  : "<<endl;
    for( i = 0; i < n; i++ )
        cout<<arr[i]<<" ";
    cout<<"\n\tRESULT : "<<endl;
    for( i = 0; i < n; i++ )
    {
        if( find_neg_seq(arr, n, i, j, k) )
        {
            if( end - beg < k - j )
            {
                beg = j;
                end = k;
            }
            i = k;
        }
    }
    if( end == size_t(-1) )
        cout<<"Input array not contain negative numbers"<<endl;
    else
    {
        cout<<"The longest negative sequence is : "<<endl;
        for( i = beg; i < end + 1; i++ )
            cout<<arr[i]<<" ";
        cout<<"it's length : "<<1 + (end - beg)<<endl;
    }
    cin.get();
    return 0;
}

bool find_neg_seq(float * arr, size_t size, size_t from, size_t &beg, size_t &end){
    bool flag = false;
    size_t elem;
    beg = -1;
    end = -1;
    if( arr )
    {
        for( elem = from; elem < size && !flag; elem++ )
        {
            if( arr[elem] < 0 )
            {
                if( beg == size_t(-1) )
                    beg  = elem;
                else
                    end  = elem;
            }
            else
            {
                flag = (end != size_t(-1));
            }
                
        }
    }
    return flag;
}

Перевірка http://codepad.org/GcqGa8Tc
Стосовно другого завдання - нагугли методи Прямокутникыв та метод Трапецій - ці алгоритми дуже широко освітлені ба більше - це своєрідний musthave для програміста С++

Post's attachments

Untitled.png 33.26 kb, 229 downloads since 2015-11-10 

Подякували: snikers.mc, coder, leofun013

7

Re: Допоможіть будь ласка з написанням програм

Це добре, що читали. Це означає, що ви можете поставити конкретні питання.

Тільки я не розумію, чому нам дають на опрацювання літературу, в якій описується мова С, хоча на парах вчимо С++

Скоріше всього, в університеті ви вивчаєте не С і не С++, а неіснуючу мову С/С++.

Подякували: koala, snikers.mc, leofun013

8

Re: Допоможіть будь ласка з написанням програм

-=ЮрА=-, це не допомога початківцю, особливо функція bool find_neg_seq, яка не тільки початківця може заплутати.

9 Востаннє редагувалося koala (10.11.2015 19:34:24)

Re: Допоможіть будь ласка з написанням програм

Ну, давайте дивитися. Для першого завдання вам знадобляться поняття "алгоритм", "цикл" та "акумулятор". Всі знайомі чи щось треба розкривати?

10

Re: Допоможіть будь ласка з написанням програм

Так, алгоритм виконання, про цикли теж трохи знаю, а про акумулятор знаю з асемблера (у нас ще й таке преподають), якщо ці знання згодяться, то добре.

11

Re: Допоможіть будь ласка з написанням програм

Гм... і що у вас не виходить в такому разі? В циклі берете числа, визначаєте, де потрібні послідовності, запам'ятовуєте довжину найбільшої послідовності. Навіть масив не потрібен, все за один прохід.
Якщо не знаєте, як бути з найдовшою - просто спробуйте для початку визначити, де там ті послідовності є.

12

Re: Допоможіть будь ласка з написанням програм

У мене питання з'являється, коли потрібно вводити числа, тобто потрібно з введених чисел, виявити найдовшу послідовність з від'ємних чисел.
Вводю послідовність через цикл, тобто спочатку задаю скільки чисел я хочу ввести, а потім вводю.
Ось так це організував.

#include "stdafx.h"
#include <iostream>

int size,i,a;
printf("Введіть розмір масиву: ");
scanf_s("%d",&size);
for (i=0;i=size;i++)
{
printf("Введіть елемент: ");
scanf_s("%lf",&a);
}

13 Востаннє редагувалося koala (10.11.2015 20:08:11)

Re: Допоможіть будь ласка з написанням програм

Функцію main забули. І цікаво, в якому підручнику ви бачили код #include <iostream> ... printf?
А тепер спробуйте після вашого рядка 10 дописати щось, щоб програма відповідала "знаходимося в послідовності від'ємних чисел" та "знаходимося поза послідовністю". Будемо вважати, що одне від'ємне число - вже послідовність.
Так, і робіть відступи.

команди
{//зовнішній блок
    команди
    {//вкладений блок
        команди
    }
    команди
    {//вкладений блок
        команди
        {//вкладений блок другого рівня
            команди
        }
    }
    команди
}

Просто візьміть за звичку: поставили { - наступний рядок на 4 (чи 2, аби лише робили) пробіли правіше, поставили } - повернулися на 4 пробіли. Це дуже спрощує читання програми. А більшу частину часу програміст саме читає програму, а не пише.

Подякували: 0xDADA11C7, snikers.mc, leofun013

14 Востаннє редагувалося quez (10.11.2015 20:12:22)

Re: Допоможіть будь ласка з написанням програм

А ще нагадаю, що не варто плутати присвоєння з перевіркою на рівність, як у сьомому рядку.

Ну і масив — де він у вас?

Подякували: koala, snikers.mc, leofun013

15 Востаннє редагувалося -=ЮрА=- (10.11.2015 21:03:24)

Re: Допоможіть будь ласка з написанням програм

snikers.mc я вирішив допомогти тобі ще раз - зауважу що у тебе в коді поста 12-ть дуже дуже погана суміш С та С++(це ніби суржик тільки кодовий).
Надаю приклад вводу парметрів та виділення динамічної пам'яті під масив

//#include "stdafx.h" //це чисто студійний хедер
#include <iostream>
using namespace std;

int main(){//організація точки входу у програму (без неї ехе не зібрати)
    size_t i;//лічильник
    size_t n;//буде містити розмірність масиву
    float * arr = 0;//вказівник на одномірний масив 
    //присвоєння 0 ОБОВ'ЯЗКОВЕ!
    cout<<"Enter count of elements : ";
    cin>>n;
    cin.get();//цим ми прибиремо \n який зостаэться у буферы пысля натискання на Enter
    arr = new float[n];//видылення динамычної пам'яті
    //Організувуємо ввід елементів
    cout<<"\tEnter array elements :"<<endl;
    for( i = 0; i < n; i++ )
    {
        cout<<"arr["<<1 + i<<"] = ";
        cin>>arr[i];//вводимо i-ий елемент
        cin.get();//цим ми прибиремо \n який зостаэться у буферы пысля натискання на Enter
    }
    cout<<"\nYour input : "<<endl;
    for( i = 0; i < n; i++ )
        cout<<arr[i]<<endl;
    cin.get();
    delete arr;//звільнення пам'яті
    return 0;
}

PS:Насправді мій код слід розглядати як код для самих початківців, тому що для кашерних плюсів потрібен template захищенний ввод та try{}catch(bad_alloc &ba){} для виділення пам'яті. Я вирішив опустити ці моменти і подати саму суть.

Прихований текст

-=ЮрА=-, це не допомога початківцю, особливо функція bool find_neg_seq, яка не тільки початківця може заплутати.

- це була допомога від щирого серця(можливо згадав свої перші кроки у кодінгу та коли дивився на програмістів знизу догори, а не на рівні)

Post's attachments

Untitled.png 23.92 kb, 199 downloads since 2015-11-10 

Подякували: snikers.mc1

16

Re: Допоможіть будь ласка з написанням програм

Оце такому нас вчать на парах. printf - виведення, scanf_s- введення.
Всім дякую за допомогу, буду розбиратись, читати, що не ясно шукати, взагалі кажучи вчитись і ще раз вчитись.
Ще одне, яку літературу посовітуєте читати, щоб я час даремно не тратив на непотрібні книги.
P.S. програму я так і не написав, так як зрозумів, що ще мало знаю, а на парах нам не дають так багато інформації, все по трохи і то не зрозуміло, приходиться додому іти і перечитувати матеріал заново з підручника.
Взагалі не зрозуміло, навіщо задавати лабараторні роботи, від яких вимагається знання матеріалу, якого на парах ми не вчимо.

17

Re: Допоможіть будь ласка з написанням програм

snikers.mc написав:

Взагалі не зрозуміло, навіщо задавати лабараторні роботи, від яких вимагається знання матеріалу, якого на парах ми не вчимо.

Взагалі-то все життя так.

18

Re: Допоможіть будь ласка з написанням програм

-=ЮрА=-, ви не допомагаєте, ви навпаки плутаєте людину.
І ще раз кажу, що масив тут зайвий.

19 Востаннє редагувалося Arete (10.11.2015 22:54:47)

Re: Допоможіть будь ласка з написанням програм

Псевдокод

max - змінна, яка буде зберігати максимальну кількість членів деякої підпослідовності
tmp - ще одна змінна, яка буде зберігати кількість членів  поточної підпослідовності
в циклі від 0 до n - 1 читаємо елементи послідовності, n - довжина послідовності
{
    якщо елемент послідовності менше 0 то
        збільшуємо tmp на 1
    інакше
       порвінюємо tmp з max і якщо tmp більша за max то
           присвоюємо змінній max значення tmp
       обнуляємо tmp
}
повертаємо змінну max як результат
Подякували: snikers.mc1

20 Востаннє редагувалося -=ЮрА=- (11.11.2015 06:49:15)

Re: Допоможіть будь ласка з написанням програм

І ще раз кажу, що масив тут зайвий.

koala - коли йдеться про послідовність, окрім масиву або іншого контейнера (вектор, ліст) ніякий інший концепт не підходить для реалізації (можно було притягнути за вуха файлове i/o проте - це нераціонально).
Якщо ви мали на увазі щось інше то поясніть що саме.