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
Име:
Група: Администратор
Ранг: Почетен член

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



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

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

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



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

Мнения: 1943
Регистриран на: 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/
---
Недобросъвестните оратори се опитват да изкарат лошото добро.
---
PMEmail PosterUsers Website
Top
Dr.Who
Публикувано на: 28-01-2019, 16:25
Quote Post



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

Мнения: 345
Регистриран на: 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



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

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



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

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


--------------------
https://www.rust-lang.org/
---
Недобросъвестните оратори се опитват да изкарат лошото добро.
---
PMEmail PosterUsers Website
Top
Dr.Who
Публикувано на: 28-01-2019, 16:36
Quote Post



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

Мнения: 345
Регистриран на: 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
Ранг: Почетен член

Мнения: 2612
Регистриран на: 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



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

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



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


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

Мнения: 2612
Регистриран на: 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



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

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



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


--------------------
Не е сериозно да наричам презрително Manjaro Уринукс само защото не мога да го кнфигурирам.
PMEmail Poster
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