8 / 8 / 2
Регистрация: 11.01.2013
Сообщений: 145
1

Записывается в файл только последний элемент массива.

29.02.2016, 19:15. Показов 1127. Ответов 5
Метки нет (Все метки)

Приветствую вас форумчане. Нужна помощь в массивах объекта.
Есть класс. Класс делает, то что составляет бланк заказа.
Создан динамический массив:
C#
1
2
3
Console.WriteLine("Введите число заказов\n");
                        int n = Convert.ToInt32(Console.ReadLine());
                        blank1 s = new blank1();
После чего выводится запрос на запись информации в файл. Но проблема в то что записывается только последнее введенное.
Как взять адрес первого элемента массива в с++ там можно с помощью переменное хранящий адрес и данные по этому адресу " *Per ". А как здесь все это сделать?
Жду вашей помощи.
За ранее спасибо.


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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using func;
 
 
 
namespace func_dll
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Выберите пункт меню:\n");
            Console.WriteLine("Введите-y: Для оформления заказа\n");
            Console.WriteLine("Введите-e: Для выхода из меню\n");
 
            
            string key;
            key=Console.ReadLine();
 
            switch (key)
            {
                case "y":
                    
                        Console.WriteLine("Введите число заказов\n");
                        int n = Convert.ToInt32(Console.ReadLine());
                        blank1 s = new blank1();
                        int i;
 
 
 
                        for (i = 0; i < n; i++)
                        {
                               s.vvod();
                             //  s.vivod();
                           // s.TextFile();
                        }   
 
 
                        for (i = 0; i < n; i++)
                        {
                            
                             s.vivod();
                            
                        }
 
 
                        string key1;
                        Console.WriteLine("Записать в файл?");
                        key1 = Console.ReadLine();  
                      
                        switch (key1)
                        {
 
                            case "y":
                                for (i = 0; i < n; i++) { s.TextFile(); }
 
                                   
                                break;
                            case "e":
                                break;
                        
                        }
                        
                    
                    break;
                case "e":
                     //Environment.Exit(0);
                     break;
            }
            Console.WriteLine("Для завершения нажмите любую клавишу\n");
            Console.ReadLine();
        }
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.02.2016, 19:15
Ответы с готовыми решениями:

Почему на экран выводится 5 элементов массива, а в файл записывается 1 элемент (последний)
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; #include &lt;fstream&gt; using namespace...

В список записывается только последний элемент
Вообщем задача состоит в создании списка и нахождении в нем одинаковых элементов. Но почему через...

Выводится только последний элемент массива
Здравствуйте. Имеется текстовый файл text.txt , где есть 4 строки разной длины. Я в своей программе...

Выводится только последний элемент массива
Приветствую, комрады! Прошу помощи! Есть код: $select_disk = mysql_query(&quot;SELECT * FROM...

5
12 / 12 / 11
Регистрация: 26.05.2015
Сообщений: 36
01.03.2016, 01:35 2
koto_fey, а как устроен экземплярный метод TextFile()? Немного не понятно зачем в цикле вызывать этот метод n - 1 раз, если циклический переход по элементам массива можно сделать в самом методе TextFile() и в нем же на каждой итерации цикла записывать значение по индексу в файл.
0
Эксперт .NET
6269 / 3897 / 1567
Регистрация: 09.05.2015
Сообщений: 9,188
01.03.2016, 02:16 3
Честно очень старался найти в предоставленном коде хоть какой-то массив, но не получилось. Предполагаю что он скрыт где-то внутри типа blank1, но увы автор лишил нас возможности увидеть что это вообще за тип.
0
5 / 5 / 3
Регистрация: 11.11.2014
Сообщений: 88
01.03.2016, 02:26 4
Я полагаю, в другом классе метод TextFile() использует StreamWriter. И, возможно, там каждый раз создается новый файл с тем же именем, заменяя старый. А нужно просто добавлять строку в единожды созданный файл.

P.S. вряд ли будет ответ точнее, самого-то метода, пишущего в файл, ты не выложил
0
8 / 8 / 2
Регистрация: 11.01.2013
Сообщений: 145
01.03.2016, 16:18  [ТС] 5
Да прошу прощения. Торопился.

Собственно все методы подключаются из беблиотеки func.dll. Вот код.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace func
{
  public class blank1
{
      public int Nt;
 
      public string nb;
      public double cena;
 
    public void vvod()
    {
        Console.WriteLine("Введите номер стола\n");
        Nt = Convert.ToInt32(Console.ReadLine());
 
        Console.WriteLine("Введите Название блюда\n");
        nb=Console.ReadLine();       
 
        Console.WriteLine("Введите цену\n");
        cena=Convert.ToDouble(Console.ReadLine());
    }
 
    public void vivod()
    {
        Console.WriteLine("№Стола | Блюдо | цена\n");
        Console.WriteLine(Nt+ " " + nb + " " + cena);
    }
 
    public void TextFile()
    {
        StreamWriter file = new StreamWriter(@"D:\text.txt", true);
 
        file.WriteLine("№Номер стола |Название |Цена ");
        file.Write(Nt);
        file.Write(" ");
        file.Write(nb);
        file.Write(" ");
        file.WriteLine(cena);
        file.Close();
 
    }
}
 
}
0
8 / 8 / 2
Регистрация: 11.01.2013
Сообщений: 145
02.03.2016, 18:22  [ТС] 6
Разобрался. Вот если кому интересно.
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
struct blank1
{
    private int Nt;
 
    private string nb;
    private double cena;
 
    public void vvod()
    {
        
        
            Console.WriteLine("Введите номер стола\n");
            Nt = Convert.ToInt32(Console.ReadLine());
            
 
            Console.WriteLine("Введите Название блюда\n");
            nb = Console.ReadLine();
            
 
            Console.WriteLine("Введите цену\n");
            cena = Convert.ToDouble(Console.ReadLine());
           
        
    }
 
    public void vivod()
    {
        Console.WriteLine("№Стола | Блюдо | цена\n");
        Console.WriteLine(Nt+ " " + nb + " " + cena);
    }
 
    public void TextFile()
    {
        StreamWriter file = new StreamWriter(@"D:\text.txt", true);
 
        file.WriteLine("№Номер стола |Название |Цена ");
        file.Write(Nt);
        file.Write(" ");
        file.Write(nb);
        file.Write(" ");
        file.WriteLine(cena);
        file.Close();
    
    }
}
 
 
namespace Blank
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите число заказов\n");
            int n = Convert.ToInt32(Console.ReadLine());
           
            blank1[] s = new blank1[n];
            for (int i = 0; i < n; i++)
            {
                s[i].vvod();
             //   s[i].vivod();
          //      s[i].TextFile();
                
            }
 
            for (int i = 0; i < n; i++)
            {
                   s[i].vivod();            
 
            }
 
            string key;
            Console.WriteLine("Записать файл? y(да)/e(нет)\n");
            key = Console.ReadLine();
           
            if (key == "y")
            {
                for (int i = 0; i < n; i++)
                {
 
                    s[i].TextFile();
 
                }
            }
 
            if (key == "e")
            {
                Console.WriteLine("Для завершения нажмите любую клавишу\n");
                Console.ReadLine();
            }
        }
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2016, 18:22
Помогаю со студенческими работами здесь

Не изменяя первый и последний элемент массива, прибавить к каждому элементу массива последний элемент
$a=array(1,2,3,4,5,6,7,8,9,10); $b=array(); for($i=1;$i&lt;count($a);$i++){ $b=array_slice($a,...

Вывести все элементы массива, абсолютные значения которых меньше 1 (выводится только последний элемент)
задание Вывести все элементы массива, абсолютные значения которых меньше 1. получился такой код:...

На диск в файл записывается массив строк как один компонент. Заменить в файле в каждой строке последний символ на '!'
На диск в файл записывается массив строк как один компонент. Заменить в файле в каждой строке...

В файл записывается только последнее значение
Есть программка которая записывает результат в файл. Что нужно изменить чтобы в файле оставались...

В односвязный список записывается только один элемент вместо нескольких
Мне нужно, чтобы в односвязный список записывалось сразу несколько элементов, но вместо этого...

В файл почему-то записывается только одно слово
у меня есть форма на ней 2 textbox і одна кнопка, в один я записываю количество раз прокрутки...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru