BG Development


Страници: (3) [1] 2 3   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Задача по програмиране
Shine
Публикувано на: 28-01-2019, 13:09
Quote Post



Име: Милена
Група: Потребител
Ранг: Новопостъпил

Мнения: 5
Регистриран на: 28.01.19



Здравейте! Имам да реша една задача по програмиране, имам идея как би трябвало да стане, но нещо ми се опъва. Да се въведе редица от N цели числа. Да се напише програма която да проверява дали редицата притежава следните свойства. растяща редица - всеки пореден член е не по-малък от предишния член (A).
строго растяща редица - всеки пореден член е по-голям от предишния член (icon_cool.gif.
намаляваща редица - всеки пореден член е не по-голям от предишния член ©.
строго намаляваща редица - всеки пореден член е по-малък от предишния член (D).
осцилираща редица - ако предищния член е бил по-малък от сегашния, то следващия е по-малък или равен на сегашния и обратно - ако предишния член е бил по-голям от сегашния то следващия трябва да е по-голям или равен на сегашния (E).
строго осцилираща - същото като осцилираща, само че не може да има два последователни еднакви елемента (F).
аритметична прогресия - всеки член се получава от предишния с прибавяне на число, което е константа за цялата редица и може да е положително, отрицателно или нула (G).
геометрична прогресия - всеки член се получава от предишния с умножение на число, което е константа за цялата редица и може да е положително или отрицателно (H). icon_confused.gif
PMEmail Poster
Top
SuN
Публикувано на: 28-01-2019, 13:37
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 8771
Регистриран на: 27.01.05



Погледни тази тема и си оправи въпроса.

П.с.
Тоест пусни наново въпроса ново мнение, ако е изтекло времето за промени.

Това мнение е било редактирано от SuN на 28-01-2019, 13:55
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 28-01-2019, 16:06
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2488
Регистриран на: 21.02.18



Ето ти идея как да започнеш:


CODE
use std::{
   error::{self},
   io::{self, Write},
};

fn enter_number_in_range(msg: &str, min: i64, max: i64) -> Result<i64, Box<dyn error::Error>> {
   assert!(min <= max);

   loop {
       let n = enter_number(&format!("{} [min={}; max={}]: ", msg, min, max))?;
       if (n < min) | (n > max) {
           println!("The number is out of range [min={}; max={}]", min, max)
       } else {
           return Ok(n);
       }
   }
}

fn enter_number(msg: &str) -> Result<i64, Box<dyn error::Error>> {
   let input = io::stdin();
   let output = io::stdout();

   loop {
       let mut out_lock = output.lock();
       out_lock.write_all(msg.as_ref())?;
       out_lock.flush()?;
       drop(out_lock);

       let mut buffer = String::with_capacity(4);
       input.read_line(&mut buffer)?;

       let trimmed = buffer.trim();
       if trimmed.is_empty() {
           continue;
       }

       let number = trimmed.parse::<i64>();
       match number {
           Err(e) => {
               println!("Failed to read number [{}]: {}", trimmed, e);
               continue;
           }

           Ok(n) => return Ok(n)
       }
   }
}

fn main() {
   let n = enter_number_in_range("Enter number", 1, 10).unwrap();
   let mut numbers = Vec::<i64>::new();
   for _i in 0..n {
       let n = enter_number_in_range("Enter number", 0, 100).unwrap();
       numbers.push(n);
   }

   println!("Numbers: {:?}", numbers);

   let mut increasing = true;
   for (i, n) in numbers.iter().enumerate() {
       if i == 0 {
           continue;
       }

       if *n < numbers[i - 1] {
           increasing = false;
           break;
       }
   }

   if increasing {
       println!("Редицата е растяща");
   } else {
       println!("Редицата не е растяща");
   }
}






--------------------
https://www.rust-lang.org/
---
Хора, които са прекалено умни, за да се занимават с политика, са наказани да бъдат управлявани от глупаци.
---
Life is hard; it's harder when you're stupid.
---
Black metal is like coffee. You have to learn to drink it but when you get used to it, you just want it darker and darker
PMEmail PosterUsers Website
Top
Dr.Who
Публикувано на: 28-01-2019, 16:25
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 354
Регистриран на: 25.05.14



CODE
#include <iterator>

template <typename T, typename F>
bool provery(T it_from, T it_to, F fn) {
   if (it_from == it_to) // praznata redica
       return true;
   for (T it = it_from; (it+1) != it_to; ++it)
       if (!fn(*it, *(it+1)))
           return false;
   return true;
}

// vrashta znaka na chisloto
template <typename T> int znak(T val) {
   return (T(0) < val) - (val < T(0));
}

template <typename T>
bool oscilira_strogo(T a, T b) {
   static int prev_s = 0;
   int s = b - a;
   if (znak(prev_s) == znak(s))
       return false;
   prev_s = s;
   return true;
}

int main() {
   int redica[] = { 1, 2, 3, 4, 5 };

   provery(std::begin(redica), std::end(redica), [](auto a, auto b) { return a <= b; } );
   provery(std::begin(redica), std::end(redica), [](auto a, auto b) { return a < b; } );
   provery(std::begin(redica), std::end(redica), [](auto a, auto b) { return a >= b; } );
   provery(std::begin(redica), std::end(redica), [](auto a, auto b) { return a > b; } );
   provery(std::begin(redica), std::end(redica), [](auto a, auto b) { static int dx=0; if (dx) return b==dx+a; else dx=b-a; return true;} );
   provery(std::begin(redica), std::end(redica), [](auto a, auto b) { static int dx=0; if (dx) return b==dx*a; else dx=b/a; return true;} );
   provery(std::begin(redica), std::end(redica), oscilira_strogo<decltype(redica[0])>);

   return 0;
}


E) ви го оставям за домашно
PMEmail Poster
Top
Gamma Goblin
Публикувано на: 28-01-2019, 16:30
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2488
Регистриран на: 21.02.18



ква е тая хардкодната редица

Това мнение е било редактирано от Gamma Goblin на 28-01-2019, 16:31


--------------------
https://www.rust-lang.org/
---
Хора, които са прекалено умни, за да се занимават с политика, са наказани да бъдат управлявани от глупаци.
---
Life is hard; it's harder when you're stupid.
---
Black metal is like coffee. You have to learn to drink it but when you get used to it, you just want it darker and darker
PMEmail PosterUsers Website
Top
Dr.Who
Публикувано на: 28-01-2019, 16:36
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 354
Регистриран на: 25.05.14



QUOTE (Gamma Goblin @ 28-01-2019, 16:30)
ква е тая хардкодната редица

Аз съм старши, а въвеждане от клавиатурата е задача за новобранките.
А къв е тоя умрял език?
PMEmail Poster
Top
PxL
Публикувано на: 28-01-2019, 17:07
Quote Post


Group Icon
Име: Димитър Т. Димитров
Група: VIP
Ранг: Почетен член

Мнения: 2889
Регистриран на: 26.04.05



QUOTE (Dr.Who @ 28-01-2019, 17:36)
QUOTE (Gamma Goblin @ 28-01-2019, 16:30)
ква е тая хардкодната редица

Аз съм старши, а въвеждане от клавиатурата е задача за новобранките.
А къв е тоя умрял език?

C++14 ли ползвате бе старши? Щото тея generic ламбди едва ли ще минат на 11

Това мнение е било редактирано от PxL на 28-01-2019, 17:09


--------------------
void putchar(char c);int main(){int x,c=1,i;for(i=0;(x="PxLY2H4:2E;7231?=68255A5S5P9N:N9O84111H861I85111G9N:O811O812M<G33911EAEDBECE22169D1=2k"[i+++3]);)while(x-->'0')putchar((!(++c%'('))?0x0a:33^(i&1));}
PMEmail PosterUsers Website
Top
Dr.Who
Публикувано на: 28-01-2019, 17:45
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 354
Регистриран на: 25.05.14



Те С++-саджиите още си мислят, че сме 98-а, а то реално вече трябва да се ползва С++17
Аз от половин година реших да дам шанс на С++ пред С
PMEmail Poster
Top
PxL
Публикувано на: 28-01-2019, 17:47
Quote Post


Group Icon
Име: Димитър Т. Димитров
Група: VIP
Ранг: Почетен член

Мнения: 2889
Регистриран на: 26.04.05



QUOTE (Dr.Who @ 28-01-2019, 18:45)
Те С++-саджиите още си мислят, че сме 98-а, а то реално вече трябва да се ползва С++17
Аз от половин година реших да дам шанс на С++ пред С

Е чак пък 17. Ама т'ва ако го плесне така на даскала дали ще може да го компилира icon_lol.gif


--------------------
void putchar(char c);int main(){int x,c=1,i;for(i=0;(x="PxLY2H4:2E;7231?=68255A5S5P9N:N9O84111H861I85111G9N:O811O812M<G33911EAEDBECE22169D1=2k"[i+++3]);)while(x-->'0')putchar((!(++c%'('))?0x0a:33^(i&1));}
PMEmail PosterUsers Website
Top
3p0
Публикувано на: 28-01-2019, 17:49
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 671
Регистриран на: 18.06.05



Аз ако съм, първо ще го компилирам, за да разбера дали работи и чак тогава, ако работи бих го плеснал на даскала icon_idea.gif


--------------------
Да залеем Рабина с вода от Перловска река
PM
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (3) [1] 2 3  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0