Премини към съдържанието

Препоръчан отговор


Здравейте. Нов съм в програмирането с C# и имам въпросче към хората които разбират. Може за много от вас въпроса да е смешен, но правя първите си стъпки в програмирането с този език. Имам масив в който посочвам броя на елементите в масива и тяхните стойности. Въпроса ми е следния: Как мога да довърша програмата с функцията да въведа две променливи "Мин" и "Макс" и според тези две въведени променливи да ми показва числата между тях. Ще съм благодарен за отговор.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Нещо ей такова: 

int[] arr = new int[20];int[] collected = new int[20];int min = 0;int max = 10;for (int i = 0; int<arr.length; i++) {	if (arr[i] > min && arr[i] < max) {		collected[i] = arr[i];	}}
arr е първият масив, collected е масивът, в който ще се събират въпросните стойности, min и max са горната и долната граница. Цикълът for минава през целия начален масив и записва в другия масив всички стойности, които отговарят и на двете условия.
  • Харесва ми 2

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main()
        {
            Console.Write("Number of elements = ");
            int size = int.Parse(Console.ReadLine());
            Console.Write("Min = ");
            int min = int.Parse(Console.ReadLine());
            Console.Write("Max = ");
            int max = int.Parse(Console.ReadLine());
 
            int[] array = new int;
 
            for (int i = 0; i < size; i++)
            {
                Console.Write("arr[{0}] = ", i);
                array = int.Parse(Console.ReadLine());
        }
            if (array > min && array < max)
            {
                collected = array;
            }
    }
    }
}
До тука ми бяха опитите ако някой може да ми даде няколко напътствия пак. :) Идеята е да отделя тези числа и да ги покажа на реда или да ги сабера.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Може да ползваш друг идекс за collected[] - така няма да има дупки между стойностите или вместо да ги присвояваш в друг масив направо да ги извеждаш на екрана.

int j=0;for (int i = 0; i < size; i++) {	if (arr[i] > min && arr[i] < max) {		collected[j] = arr[i];                j++;    	}}
Редактирано от ined (преглед на промените)
  • Харесва ми 2

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

 

Може да ползваш друг идекс за collected[] - така няма да има дупки между стойностите или вместо да ги присвояваш в друг масив направо да ги извеждаш на екрана.

int j=0;for (int i = 0; i < size; i++) {	if (arr[i] > min && arr[i] < max) {		collected[j] = arr[i];                j++;    	}}

The name Collected doesnt exist in current context.


Сподели този отговор


Линк към този отговор
Сподели в други сайтове

ако ще го ползваш масива трябва да си го дефинирал 

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication2{    class Program    {        static void Main()        {            int j = 0;            Console.Write("Number of elements = ");            int size = int.Parse(Console.ReadLine());            Console.Write("Min = ");            int min = int.Parse(Console.ReadLine());            Console.Write("Max = ");            int max = int.Parse(Console.ReadLine());            int[] array = new int[size];            int[] Collected = new int[j];            for (int i = 0; i < size; i++)            {                Console.Write("arr[{0}] = ", i);                array[i] = int.Parse(Console.ReadLine());                if (array[i] > min && array[i] < max)                {                    Collected[j] = array[i];                    j++;                    Console.Write("Sumata e: ", j);                }                            }        }                    }    }

Ако може да погледнеш така ли трябва ? :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Определено не,  с механично смесване на команди без да разбереш защо така се използват, няма да се получи

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Определено не,  с механично смесване на команди без да разбереш защо така се използват, няма да се получи

 Е няма да се разсърдя ако ми покажеш как става, се пак сега се уча.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

При j = 0 и последваща инициализация на масива с int[j] ще се получи грешка - на практика ще се опиташ да достъпиш елементи на масив с нулева дължина.За да работи Console.Write("Sumata e: ", j) с така подадени аргументи, трябва да имаш Placeholder, например така: 

Console.Write("Sumata e: {0}", j)
... но тук j не е сума, а просто индексът, който е ползван за втория масив.Въпросният Placeholder е нулата във фигурни скоби, идеята е ако имаш не един, ами например 50 аргумента, да не ги конкатенираш до утре с плюсове и отваряне и затваряне на кавички, ами да ги изредиш след низа със запетайки.Ако искаш да държиш елементите, които отговарят на условията, в отделен масив, тогава пак си ползвай Collected, но нека да е с дължина поне колкото тази на началния масив. За сумата можеш да ползваш отделна променлива, например sum.Нещо такова (не съм го тествал, възможно е да имам грешки):
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2 {		class Program {				static void Main() {			int j = 0;			Console.WriteLine("Number of elements = ");			int size = int.Parse(Console.ReadLine());			Console.WriteLine("Min = ");			int min = int.Parse(Console.ReadLine());			Console.WriteLine("Max = ");			int max = int.Parse(Console.ReadLine());			int[] array = new int[size];			int[] Collected = new int[size];			int sum = 0;			for (int i = 0; i < size; i++) {				Console.WriteLine("arr[{0}] = ", i);				array[i] = int.Parse(Console.ReadLine());							if (array[i] > min && array[i] < max) {					Collected[j] = array[i];					sum += Collected[j];					j++;				}			}			Console.WriteLine("Sumata e {0}", sum);		}					}}
Извадих последния изход към конзолата извън цикъла за да се покаже накрая, иначе ще се печата на всяко негово завъртане.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.