Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425

Перепись кода с С++ на с#

10.09.2020, 17:56. Показов 3015. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Недавно начал изучать С# и столкнулся со следующей проблемой. Не понимаю, как в шарпе использовать лист заместо вектора из С++. Не понимаю, как через фор рандомно заполнять значение. Буду очень благодарен, кто поможет и объяснит что к чему, очень интересно разобраться.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    setlocale(0, "");
    double summ1=0; double summ2=0; double _x=0; double s1=0; double s2 = 0;
    int N; int sum = 0, umn = 0, del = 0, min = 0;
           int sum1 = 0, umn1 = 0, del1 = 0, min1 = 0;
    vector <int> x; int xp;
 
    cout << "Введите N:\t";
    cin >> N;
 
    for (size_t i = 0; i < N; i++)
    {
        x.push_back (1 + rand() % 10);
        
    }
 
    for (size_t i = 0; i < N; i++)
    {
        for (size_t i = 0; i < N; i++)
        {
            summ2 += x[i]; sum++;
        }
 
        _x = summ2 / N; del++;
 
        summ1 += pow((x[i] - _x), 2); min++; sum++; umn++;
    }
    
    s1 = pow(summ1 / (N - 1), 2); min++; del++; umn++;
 
    cout << "S=\t" << s1 << "\n" << "\tсумм=\t" << sum << "\tумно=\t" << umn << "\tделе=\t" << del << "\tмину=\t" << min << "\n";
    
    double summ3 = 0; double summ4 = 0;
    for (size_t i = 0; i < N; i++)
    {
        summ3 += pow(x[i], 2); sum1++; umn1++;
    }
 
    for (size_t i = 0; i < N; i++)
    {
        summ4 += x[i]; sum1++;
    }
 
    s2 = (summ3 - pow(summ4, 2) / N) / (N - 1); min1+=2; umn1++; del1+=2;
 
    cout << "S=\t" << s2 << "\n" << "\tсумм=\t" << sum1 << "\tумно=\t" << umn1 << "\tделе=\t" << del1 << "\tмину=\t" << min1 << "\n";
}
Добавлено через 8 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Collections.Generic;
namespace Labs
{
    class Program
    {
        //struct num
        //{
        //    int x;
        //}
        static void Main(string[] args)
        {
            Random rnd = new Random();
            List<int> arr = new List<int>();
            int summ1 = 0, summ2 = 0,  x = 0, s1 = 0, s2 = 0;
            int N; int sum = 0, umn = 0, del = 0, min = 0;
            int sum1 = 0, umn1 = 0, del1 = 0, min1 = 0;
 
            Console.WriteLine("Введите значение N: ");
            N = Convert.ToInt32(Console.ReadLine());
 
            for(int i = 0; arr.Count <N; i++)
            {
                int r = rnd.Next(arr.Count); // неапонятный момент с фором и рандом заполнением
            }    
 
            //далее так же идут форы и немного непонятно, как пихать данные в лист 
 
 
 
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.09.2020, 17:56
Ответы с готовыми решениями:

Перепись
Перепись на Python (Время: 1 сек. Память: 16 Мб Сложность: 15%) В доме живет N жильцов. Однажды решили провести перепись всех...

Перепись населения
Ребят помогите с задачей. Вот условие: В доме живет N жильцов. Однажды решили провести перепись всех жильцов данного дома и составили...

Перепись населения
Помогите пожалуйста с БД для переписи населения , может кто видел такую, хоть схему БД посмотреть дальше думаю справлюсь. Добавлено...

15
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
10.09.2020, 18:00
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
как в шарпе использовать лист заместо вектора из С++
Объявление vector <int> x; заменяем на List<int> x = new List<int>();

Конструкцию x.push_back(1 + rand() % 10) заменяем на x.Add(1 + rand() % 10), а всё остальное для типизированного списка в C# так же.
1
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
10.09.2020, 18:16  [ТС]
Вышло вот так. Подскажите пожалуйста в чём ошибки.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using System;
using System.Collections.Generic;
namespace Labs
{
    class Program
    {
        //struct num
        //{
        //    int x;
        //}
        static void Main(string[] args)
        {
            Random rnd = new Random();
            List<int> arr = new List<int>();
            int summ1 = 0, summ2 = 0,  x = 0, s1 = 0, s2 = 0;
            int N; int sum = 0, umn = 0, del = 0, min = 0;
            int sum1 = 0, umn1 = 0, del1 = 0, min1 = 0;
 
            Console.WriteLine("Введите значение N: ");
            N = Convert.ToInt32(Console.ReadLine());
 
            for(int i = 0; arr.Count <N; i++)
            {
                int r = rnd.Next(arr.Count); 
            }
 
            for (int i = 0; arr.Count < N; i++)
            {
                for (int i = 0; arr.Count < N; i++)
                {
                    summ2 += x[i]; sum++; //ругается на x[i], не понимаю почему
                }
                _x = summ2 / N; del++;
 
                summ1 += Math.Pow((x[i] - _x), 2); min++; sum++; umn++; //не понимаю как возвести в степень, ругается на x[i]
            }
            s1 = Math.Pow(summ1 / (N - 1), 2); min++; del++; umn++;//проблема с возведением в степень        
            Console.WriteLine("S=" + s1 + "Сумм" + sum + "Умножений" + umn + "делений" + del + "Минусов" + min);
 
            double summ3 = 0; double summ4 = 0;
            for (int i = 0; arr.Count < N; i++)
            {
                summ3 += Math.Pow(x[i], 2); sum1++; umn1++; //проблема с фором и возведением в степень
            }
 
            for (int i = 0; arr.Count < N; i++)
            {
                summ4 += x[i]; sum1++; //ругается на x[i]
            }
 
            s2 = (summ3 - Math.Pow(summ4, 2) / N) / (N - 1); min1 += 2; umn1++; del1 += 2; //проблема со степенью
 
            Console.WriteLine("S=" + s2 + "Сумм" + sum1 + "Умножений" + umn1 + "делений" + del1 + "Минусов" + min1);
        }
 
 
    }
    }
}
Добавлено через 1 минуту
Cейчас попробую, спасибо. А форы у меня правильно заменены? Size_t же нет в list.

Добавлено через 4 минуты
C#
1
x.Add(1 + rand() % 10)
данная конструкция не работает.

Добавлено через 4 минуты
ashsvis, Не работает как понял именно rand, т.к в list такого нет.
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
10.09.2020, 18:24
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Не работает как понял именно rand
Ну нет, вместо rand() нужно писать rnd.Next(), это же C#. Я так написал для общего вида, для примера метода .Add() списка.

Потом, в строках 27 и 29 используется одна и та же переменная цикла, я бы тоже заругался...
1
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
10.09.2020, 18:31  [ТС]
Ругается на Add по непонятным причинам.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    static void Main(string[] args)
        {
            Random rnd = new Random();
            List<int> arr = new List<int>();
            int summ1 = 0, summ2 = 0,  x = 0, s1 = 0, s2 = 0;
            int N; int sum = 0, umn = 0, del = 0, min = 0;
            int sum1 = 0, umn1 = 0, del1 = 0, min1 = 0;
 
            Console.WriteLine("Введите значение N: ");
            N = Convert.ToInt32(Console.ReadLine());
 
            for(int i = 0; arr.Count <N; i++)
            {
                x.Add(1 + rnd.Next() % 10);
            }
А с форами вроде как всё понятно.

Добавлено через 3 минуты
я тупой, нашёл ошибку, можете не отвечать, спасибо, ахахаха
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
10.09.2020, 18:33
Лучший ответ Сообщение было отмечено Pandaprogrammer как решение

Решение

Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Ругается на Add по непонятным причинам.
Вы х[i] начали менять на arr[i] и бросили на пол дороге...

Добавлено через 1 минуту
Переменные s1 и s2 объявлены как int, а накапливаете в них выражения типа double...
1
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
10.09.2020, 18:35  [ТС]
Да, я увидел свои ошибки уже. Спасибо большое, аниме-программист! :з
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
10.09.2020, 18:38
Лучший ответ Сообщение было отмечено Pandaprogrammer как решение

Решение

Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
я увидел свои ошибки уже
Зачёт!
1
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
10.09.2020, 18:40  [ТС]
ashsvis, а насчёт форов - я правильно же их понял? Только необходимо поменять переменную "i" в том месте на другую.

Добавлено через 1 минуту
C#
1
2
3
4
5
6
for (int i = 0; arr.Count < N; i++)
            {
                for (int k = 0; arr.Count < N; i++)
                {
                    summ2 += x[k]; sum++; //и уже записывать не x[i] а x[k]
                }
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
10.09.2020, 18:43
Лучший ответ Сообщение было отмечено Pandaprogrammer как решение

Решение

Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
а насчёт форов - я правильно же их понял?
Да. А как иначе?
1
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
10.09.2020, 18:50  [ТС]
ashsvis, Хорошо, спасибо! Получилось так, вроде всё правильно заменил. С Math.Pow у меня всё хорошо? Ругается.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
for (int i = 0; i < N; i++)
            {
                x.Add(1 + rnd.Next() % 10);
            }
 
            /////////////////////////////////////
            for (int i = 0; i < N; i++)
            {
                for (int k = 0; i < N; i++)
                {
                    summ2 += x[k]; sum++;
                }
 
                _x = summ2 / N; del++;
 
                summ1 += Math.Pow((x[i] - _x), 2); min++; sum++; umn++;
            }
            s1 = Math.Pow(summ1 / (N - 1), 2); min++; del++; umn++;      
          
            Console.WriteLine("S= " + s1 + "Сумм: " + sum + "Умножений: " + umn + "Делений: " + del + "Минусов: " + min);
 
            double summ3 = 0; double summ4 = 0;
            for (int i = 0; i < N; i++)
            {
                summ3 += Math.Pow(x[i], 2); sum1++; umn1++;
            }
 
            for (int i = 0; i < N; i++)
            {
                summ4 += x[i]; sum1++;
            }
            s2 = (summ3 - Math.Pow(summ4, 2) / N) / (N - 1); min1 += 2; umn1++; del1 += 2;
            Console.WriteLine("S= " + s2 + "Сумм: " + sum1 + "Умножений: " + umn1 + "Делений: " + del1 + "Минусов: " + min1);
        }
 
    }
}
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
10.09.2020, 18:57
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Math.Pow
Math.Pow возращает double, проверяйте тип переменных summ1, s1 и s2. Они должны быть объявлены double.
1
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
10.09.2020, 19:01  [ТС]
ashsvis, они объявлены в double. Выдаёт следующее: System.ArgumentOutOfRangeException
HResult=0x80131502
Сообщение = Index was out of range. Must be non-negative and less than the size of the collection.
Источник = System.Private.CoreLib
Трассировка стека:
at System.ThrowHelper.ThrowArgumentOutOfRan ge_IndexException()
at System.Collections.Generic.List`1.get_It em(Int32 index)
at Labs.Program.Main(String[] args) in C:\Users\Liora\source\repos\Labs\Labs\Pr ogram.cs:line 33

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using System.Collections.Generic;
namespace Labs
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            List<int> x = new List<int>();
            double summ1 = 0; double summ2 = 0; double _x = 0; double s1 = 0; double s2 = 0;
            int N; double sum = 0, umn = 0, del = 0, min = 0;
            double sum1 = 0, umn1 = 0, del1 = 0, min1 = 0;
 
            Console.WriteLine("Введите значение N: ");
            N = Convert.ToInt32(Console.ReadLine());
 
            for (int i = 0; i < N; i++)
            {
                x.Add(1 + rnd.Next() % 10);
            }
 
            /////////////////////////////////////
            for (int i = 0; i < N; i++)
            {
                for (int k = 0; i < N; i++)
                {
                    summ2 += x[k]; sum++;
                }
 
                _x = summ2 / N; del++;
 
                summ1 += Math.Pow((x[i] - _x), 2); min++; sum++; umn++;
            }
            s1 = Math.Pow(summ1 / (N - 1), 2); min++; del++; umn++;      
          
            Console.WriteLine("S= " + s1 + "Сумм: " + sum + "Умножений: " + umn + "Делений: " + del + "Минусов: " + min);
 
            double summ3 = 0; double summ4 = 0;
            for (int i = 0; i < N; i++)
            {
                summ3 += Math.Pow(x[i], 2); sum1++; umn1++;
            }
 
            for (int i = 0; i < N; i++)
            {
                summ4 += x[i]; sum1++;
            }
            s2 = (summ3 - Math.Pow(summ4, 2) / N) / (N - 1); min1 += 2; umn1++; del1 += 2;
            Console.WriteLine("S= " + s2 + "Сумм: " + sum1 + "Умножений: " + umn1 + "Делений: " + del1 + "Минусов: " + min1);
        }
 
    }
}
Добавлено через 1 минуту
ashsvis, выходит за пределы как понимаю, но не вижу ошибок.
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
10.09.2020, 19:11
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
но не вижу ошибок.
В строке 26 переменная цикла приращивается i++, а должна k++
1
23 / 21 / 2
Регистрация: 04.09.2019
Сообщений: 425
10.09.2020, 19:14  [ТС]
Вот теперь всё хорошо, спасибо большое. Такие тупые ошибки просто были, апхапвх. Сча отзыв напишу вам :з
0
 Аватар для ashsvis
923 / 503 / 202
Регистрация: 08.10.2018
Сообщений: 1,553
Записей в блоге: 11
10.09.2020, 19:30
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Вот теперь всё хорошо
Найти ошибку с инкрементом чужой переменной цикла сложно, если не знать, что она была внесена при исправлении предыдущей ошибки общей переменной цикла для вложенных циклов.

Поэтому лучше использовать конструкцию foreach(var item in arr) { }, где item будет заменять выражение x[i].
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.09.2020, 19:30
Помогаю со студенческими работами здесь

Перепись с винта на винт
Хочу спросить. а есть проги помоми тотала и стандартного окна что бы переписывать с винта на винт?

Итераторы и векторы (Перепись)
Нужно переписать программу с использованием библиотеки шаблонов vector и итераторы , но как это сделать хз. #include...

Перепись с vb.net на плюсы
Доброго времени суток, товарищи. Такой вопрос: получу ли я технологический профит, если перепишу программу, написанную на vb.net на...

Перепись из одного файла в другой
помогите сделать программку которая будет из одного файла брать числа любого(имеется ввиду 0-100) значения и записывать в другой файл их в...

Провести перепись населения планеты
На некоторой планете мирно уживаются различные виды существ, обладающие некоторыми или всеми из перечисленных органов чувств: зрение,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru