Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2015, 12:47   #1
lizka6011997
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 35
По умолчанию Сумма элементов двух массивов

в этом примере пересечение, а как сделать сумму элементов двух массивов?
напр.
а: 2 1 6
b: 1 3 5
с: 3 4 11

Код:
class Example
    {
 
        static void Main()
        {
            Sort A = new Sort();
            Stopwatch t = new Stopwatch();
            StreamWriter swa = File.CreateText("testA.txt");
            Console.WriteLine("\nInsert size A");
            int n = Convert.ToInt32(Console.ReadLine());
            int[] a = new int[n];
            Random rand = new Random();
            t.Start();
            for (int i = 0; i < n; i++)
            {
                a[i] = (rand.Next(-100, 100));
            }
            for (int i = 0; i < n; i++)
            {
                swa.WriteLine(a[i]);
            }
            swa.Close();
 
            StreamWriter swb = File.CreateText("testB.txt");
            Console.WriteLine("\nInsert size B");
            int n1 = Convert.ToInt32(Console.ReadLine());
            int[] b = new int[n];
            for (int i = 0; i < n1; i++)
                b[i] = rand.Next(-100, 100);
            for (int i = 0; i < n1; i++)
            {
                swb.WriteLine(b[i]);
            }
            swb.Close();
 
            StreamWriter swc = File.CreateText("testC.txt");
            StreamReader sra = File.OpenText("testA.txt");
            StreamReader srb = File.OpenText("testB.txt");
 
            int[] a1 = new int[n];
            int[] b1 = new int[n1];
            int sa, sb;
            Console.WriteLine(" ");
            Console.WriteLine("A");
            for (int i = 0; i < n; i++)
            {
                sa = Convert.ToInt32(sra.ReadLine());
                a1[i] = sa;
                Console.Write(a1[i] + " ");
            }
            Console.WriteLine("||");
            Console.WriteLine(" ");
            Console.WriteLine(" ");
            Console.WriteLine("B");
            for (int i = 0; i < n1; i++)
            {
                sb = Convert.ToInt32(srb.ReadLine());
                b1[i] = sb;
                Console.Write(b1[i] + " ");
            }
 
 
            int k = 0;
            int[] c = new int[n + n1];
            for (int i = 0; i < a1.Length; i++)
                for (int j = 0; j < b1.Length; j++)
                {
                    if (a1[i] == b1[j])
                    {
                        k++;
                        c[k] = a1[i];
                        //swc.WriteLine(c[k]);
                    }
                }
            Console.WriteLine(" ");
            Console.WriteLine("_________");
            Console.WriteLine("intersection:" + k);
            Console.WriteLine("_________");
 
            Consts C = new Consts(k);
            A.Pass(c, k);
            A.Tourney(k);
            swc.Close();
            t.Stop();
            A.Result(k);
 
 
 
            StreamReader src = File.OpenText("testC.txt");
            while (true)
            {
                string s = src.ReadLine();
                if (s == null)
                    break;
                //System.Console.WriteLine(s + "c");
            } Console.WriteLine("__________");
            float tt = t.ElapsedMilliseconds;
            Console.WriteLine(tt / 1000 + "s");
            Console.ReadKey(true);
        }
    }
lizka6011997 вне форума Ответить с цитированием
Старый 13.09.2015, 14:57   #2
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Есть массивы A и B, тогда (псевдокод):
Код:
var C = max(A, B);
for I to min(A, B).length
    C[I] += min(A, B)[I];
Next
min и max - возвращают массивы (как объекты), где min вернет массив меньшей длины, а max - большей. Можете прямо такую функцию написать

Ввод-вывод опущены.
Akeloya вне форума Ответить с цитированием
Старый 13.09.2015, 15:13   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Четта какта сложновасто....
Могу я предложить вариант попроще?:
Код:
using System;
using System.Linq;

namespace Application
{
	class MainClass
	{
		static int[] a,b;
//Вводим массивы через пробел
		public static void Input(){
			a = Console.ReadLine ().Split (' ').Select (s => Convert.ToInt32 (s)).ToArray<int>();
			b = Console.ReadLine ().Split (' ').Select (s => Convert.ToInt32 (s)).ToArray<int>();
		}
//Выводим их интерсекцию:
		public static void Inter(){ Console.Write ("Пересечение: ");
			foreach (int i in a.Intersect (b))
				Console.Write ("{0}\t", i); Console.WriteLine ();
		}
//Выводим их сумму:
		public static void Summ(){
			Console.WriteLine ("Summ = {0}\t", a.Sum()+b.Sum());
		}
	
		public static void Main (string[] args)
		{
			Input (); Inter (); Summ ();
			Console.ReadKey ();
		}
	}
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.09.2015, 15:52   #4
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Stilet, а где попарная сумма элементов массива?
Или вы условие не читали?
Akeloya вне форума Ответить с цитированием
Старый 13.09.2015, 16:03   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Или вы условие не читали?
Какое условие? )
Ты сам то тему внимательно прочел?
Цитата:
как сделать сумму элементов двух массивов?
Ты тут где-то увидел речь про слияние?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.09.2015, 19:46   #6
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Какое условие? )
Ты сам то тему внимательно прочел?

Ты тут где-то увидел речь про слияние?
Читайте вопрос внимательнее, вот цитата первых строк:
Цитата:
в этом примере пересечение, а как сделать сумму элементов двух массивов?
напр.
а: 2 1 6
b: 1 3 5
с: 3 4 11
Что-то я из данного примера не вижу суммы элементов массива.
Akeloya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Массив. Сумма двух элементов массива. Skipper Ok Помощь студентам 3 15.09.2014 08:19
Сравнение двух неравных (по количеству элементов) массивов (JavaScript)) maksimka2112 Помощь студентам 2 07.08.2012 21:04
сумма первых двух положительных элементов массива Valechka Общие вопросы C/C++ 1 09.06.2012 00:45
сумма первых двух положительных элементов массива Valechka Помощь студентам 0 08.06.2012 21:22
сумма двух байтовых массивов ahz4et Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 16.01.2011 19:07