Тема: Допоможіть будь ласка з написанням програм
Допоможіть будь ласка з написанням програм, тільки почав навчатись, 1 курс, дуже хочу навчитись програмувати.
Дуже прошу, якшо хтось візьметься допомагати, пишіть коментарі, щоб я зрозумів.
Дякую
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Допоможіть будь ласка з написанням програм
Для відправлення відповіді ви повинні увійти або зареєструватися
Допоможіть будь ласка з написанням програм, тільки почав навчатись, 1 курс, дуже хочу навчитись програмувати.
Дуже прошу, якшо хтось візьметься допомагати, пишіть коментарі, щоб я зрозумів.
Дякую
Вітаю пана в реальному світі. Тут для того, щоб навчитися програмувати, треба програмувати. Ніякі програми, написані іншими людьми, вам не допоможуть. Пишіть сюди, коли зайдете в глухий кут (тільки не плутайте глухий кут з 1) "набридло", 2) "треба провітритися" і 3) "ще не гуглив", це все не глухі кути) - викладайте: 1) код (бажано з відступами, якщо рядків більше 100 - то подумайте, без чого можна поставити ваше питання), 2) опис проблеми (тільки не "не працює" і "покажіть, що не так", а конкретно - "ось у такому рядку має бути X, а бачу Y") і 3) свої думки стосовно неї (що конкретнійший попередній пункт, то менше треба писати тут).
А ще маю сказати, що C++ - дуже невдалий вибір першої мови. Чи у вас C? Ви навіть мову не назвали.
У мене в університеті викладають програмування на С++. А написав я так, із-за того, що моїх знань не вистачає, щоб написати програми ось ці, ми на парах проходимо тільки "Способи виведення та введення інформації", я забігши наперед прочитав трохи про цикли, але цього теж недостатньо, ось і звернувся сюди.
Можете хоч розповісти детально, коли і як використовуються цикли for, while, do while? Синтаксичні конструкції знаю, але не можу розібратись з використанням. Буду дуже вдячний
Нам дали таку літературу:
З.Я.Шпак - Програмування мовою С
Хортон візуал С 2010 - повний курс
Це все що нам дали.
Ще в інтернеті я знаходив та читав "Мова програмування С++. Бьерн Страуструп"
Тільки я не розумію, чому нам дають на опрацювання літературу, в якій описується мова С, хоча на парах вчимо С++
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 для програміста С++
Це добре, що читали. Це означає, що ви можете поставити конкретні питання.
Тільки я не розумію, чому нам дають на опрацювання літературу, в якій описується мова С, хоча на парах вчимо С++
Скоріше всього, в університеті ви вивчаєте не С і не С++, а неіснуючу мову С/С++.
-=ЮрА=-, це не допомога початківцю, особливо функція bool find_neg_seq, яка не тільки початківця може заплутати.
Ну, давайте дивитися. Для першого завдання вам знадобляться поняття "алгоритм", "цикл" та "акумулятор". Всі знайомі чи щось треба розкривати?
Так, алгоритм виконання, про цикли теж трохи знаю, а про акумулятор знаю з асемблера (у нас ще й таке преподають), якщо ці знання згодяться, то добре.
Гм... і що у вас не виходить в такому разі? В циклі берете числа, визначаєте, де потрібні послідовності, запам'ятовуєте довжину найбільшої послідовності. Навіть масив не потрібен, все за один прохід.
Якщо не знаєте, як бути з найдовшою - просто спробуйте для початку визначити, де там ті послідовності є.
У мене питання з'являється, коли потрібно вводити числа, тобто потрібно з введених чисел, виявити найдовшу послідовність з від'ємних чисел.
Вводю послідовність через цикл, тобто спочатку задаю скільки чисел я хочу ввести, а потім вводю.
Ось так це організував.
#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);
}
Функцію main забули. І цікаво, в якому підручнику ви бачили код #include <iostream> ... printf?
А тепер спробуйте після вашого рядка 10 дописати щось, щоб програма відповідала "знаходимося в послідовності від'ємних чисел" та "знаходимося поза послідовністю". Будемо вважати, що одне від'ємне число - вже послідовність.
Так, і робіть відступи.
команди
{//зовнішній блок
команди
{//вкладений блок
команди
}
команди
{//вкладений блок
команди
{//вкладений блок другого рівня
команди
}
}
команди
}
Просто візьміть за звичку: поставили { - наступний рядок на 4 (чи 2, аби лише робили) пробіли правіше, поставили } - повернулися на 4 пробіли. Це дуже спрощує читання програми. А більшу частину часу програміст саме читає програму, а не пише.
А ще нагадаю, що не варто плутати присвоєння з перевіркою на рівність, як у сьомому рядку.
Ну і масив — де він у вас?
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){} для виділення пам'яті. Я вирішив опустити ці моменти і подати саму суть.
Оце такому нас вчать на парах. printf - виведення, scanf_s- введення.
Всім дякую за допомогу, буду розбиратись, читати, що не ясно шукати, взагалі кажучи вчитись і ще раз вчитись.
Ще одне, яку літературу посовітуєте читати, щоб я час даремно не тратив на непотрібні книги.
P.S. програму я так і не написав, так як зрозумів, що ще мало знаю, а на парах нам не дають так багато інформації, все по трохи і то не зрозуміло, приходиться додому іти і перечитувати матеріал заново з підручника.
Взагалі не зрозуміло, навіщо задавати лабараторні роботи, від яких вимагається знання матеріалу, якого на парах ми не вчимо.
Взагалі не зрозуміло, навіщо задавати лабараторні роботи, від яких вимагається знання матеріалу, якого на парах ми не вчимо.
Взагалі-то все життя так.
-=ЮрА=-, ви не допомагаєте, ви навпаки плутаєте людину.
І ще раз кажу, що масив тут зайвий.
Псевдокод
max - змінна, яка буде зберігати максимальну кількість членів деякої підпослідовності
tmp - ще одна змінна, яка буде зберігати кількість членів поточної підпослідовності
в циклі від 0 до n - 1 читаємо елементи послідовності, n - довжина послідовності
{
якщо елемент послідовності менше 0 то
збільшуємо tmp на 1
інакше
порвінюємо tmp з max і якщо tmp більша за max то
присвоюємо змінній max значення tmp
обнуляємо tmp
}
повертаємо змінну max як результат
І ще раз кажу, що масив тут зайвий.
koala - коли йдеться про послідовність, окрім масиву або іншого контейнера (вектор, ліст) ніякий інший концепт не підходить для реалізації (можно було притягнути за вуха файлове i/o проте - це нераціонально).
Якщо ви мали на увазі щось інше то поясніть що саме.
Для відправлення відповіді ви повинні увійти або зареєструватися