Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Въпрос за задача по C Sharp

Featured Replies

Здравейте. Нов съм в програмирането с 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 минава през целия начален масив и записва в другия масив всички стойности, които отговарят и на двете условия.
  • Автор
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 (преглед на промените)

  • Автор

 

Може да ползваш друг идекс за 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.

  • Автор
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);		}					}}
Извадих последния изход към конзолата извън цикъла за да се покаже накрая, иначе ще се печата на всяко негово завъртане.

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.