Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 2
Регистрация: 21.09.2010
Сообщений: 74
1

Добавить вывод элементов массива на экран

05.12.2010, 23:29. Показов 1857. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, помогите, пожалуйста! Есть программа, которая должна сохранить информацию об использовании программы - имя пользователя, введенный массив и количество итераций. Общими усилиями я написал этот код, НО ещё надо чтобы программа эту статистику не просто сохраняла, но и выводила на экран.
Вот полный код:

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
    #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>
        #include <sys/stat.h>
        #define n 15
        static const char* filename = "statistic.dat";
 
       struct information {
        char user[32];
        int array[n];
        int iterations;
      };
  
      void sort(int* array, int* it) {
         int i, j;
         for(i = n - 1; i >= 1; i--) {
            for(j = 0; j < i; j++) {
               if(array[j] > array[j+1]) {
                  int foo = array[j];
                  array[j] = array[j+1];
                  array[j+1] = foo;
                  (*it)++;
               }
            }
         }
      }
  
      int compar(const void* a, const void* b) {
         struct information* _1 = (struct information*)a;
         struct information* _2 = (struct information*)b;
         return _1->iterations < _2->iterations;
      }
  
      int main() {
         int i;
         struct information info;
         info.iterations = 0;
         printf("vvedite imja polzovatelja\n");
         scanf("%s", info.user);
  
         printf("Bedute 15 elemeHtoB macuBa\n");
         for(i = 0; i < n; i++) {
            printf("mass[%d] = ", i);
            scanf("%d", &info.array[i]);
         }
         printf("\n");
  
         sort(info.array, &info.iterations);
  
         for(i = 0; i < n; i++) {
            printf("%4d ", info.array[i]);
         }
         printf("\n");
  
         FILE* file = fopen(filename, "rb");
         if ( !file ) {
            file = fopen(filename, "wb");
            if ( !file ) {
               fprintf(stderr, "can`t create file!");
               return 1;
            }
            fwrite(&info, sizeof(struct information), 1, file);
            fclose(file);
            return 0;
         } else {
            struct stat fileinfo;
            fstat(fileno(file), &fileinfo);
            int file_size = fileinfo.st_size;
            int structs = file_size/sizeof(struct information);
            struct information* structs_arr = (struct information*)malloc(sizeof(struct information)*(structs+1));
            for ( i = 0; i < structs; ++i ) {
               fread(&structs_arr[i], sizeof(struct information), 1, file);
            }
            fclose(file);
           memcpy(&structs_arr[structs], &info, sizeof(struct information));
           qsort(structs_arr, structs+1, sizeof(struct information), compar);
  
            for ( i = 0; i < structs+1; ++i ) {
               printf("user: %30s, iterations: %d\n", structs_arr[i].user, structs_arr[i].iterations)
        }
  
            file = fopen(filename, "wb");
           if ( !file ) {
              free(structs_arr);
              printf("can`t open file for writing");
              return 1;
          }
           for ( i = 0; i < structs+1; ++i ) {
              fwrite(&structs_arr[i], sizeof(struct information), 1, file);
           }
           free(structs_arr);
           fclose(file);
        }
        system("PAUSE");
      return 0;
   }
Вот тут я вывожу на экран имя пользователя и количество итераций:
C
1
2
3
for ( i = 0; i < structs+1; ++i ) {
    printf("user: %30s, iterations: %d\n", structs_arr[i].user, structs_arr[i].iterations) 
}
А как сюда добавить ещё и вывод введённых элементов массива? То есть как сделать чтобы вся статистика выводилась на экран, а не только имя пользователя и количество итераций? Спасибо!

Добавлено через 3 часа 30 минут
Помогитеееее
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2010, 23:29
Ответы с готовыми решениями:

Добавить вывод элементов массива на экран
Здравствуйте! Помогите, пожалуйста! Статистика сохраняется в файл, но на экран из статистики...

К каждому из элементов массива добавить 2 и вывести на экран
Задан массив А с вещественными числами а1,а2,а13. Необходимо к каждому из этих чисел добавить 2 и...

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

Вывод на экран элементов массива
Имеется программа которая должна в файле формата .sig искать нужную последовательность элементов, и...

8
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.12.2010, 00:04 2
C
1
2
3
4
5
6
            for ( i = 0; i < structs+1; ++i ) {
               printf("user: %30s, iterations: %d\n", structs_arr[i].user, structs_arr[i].iterations);
               for( j=0; j<n; ++j)
               {
                    printf("%d\n", struct_arr[i].array[j]);
               }
0
0 / 0 / 2
Регистрация: 21.09.2010
Сообщений: 74
06.12.2010, 00:53  [ТС] 3
выдает ошибку!

C
1
2
 `j' was not declared in this scope
 `struct_arr' was not declared in this scope
Добавлено через 3 минуты
struct - эта понятная ошибка - должно быть structs, а j ?
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.12.2010, 00:56 4
vovalski, а j я просто забыл объявить..

Добавлено через 23 секунды
C
1
2
3
4
5
6
7
     int j;       
     for ( i = 0; i < structs+1; ++i ) {
               printf("user: %30s, iterations: %d\n", structs_arr[i].user, structs_arr[i].iterations);
               for( j=0; j<n; ++j)
               {
                    printf("%d\n", structs_arr[i].array[j]);
               }
0
0 / 0 / 2
Регистрация: 21.09.2010
Сообщений: 74
06.12.2010, 01:53  [ТС] 5
а как обьявить? О_о

Добавлено через 5 минут
Спасибо большое

Добавлено через 50 минут
C
1
2
3
4
5
int j;       
     for ( i = 0; i < structs+1; ++i )
       for( j=0; j<n; ++j){
               printf("Lietotaja vards: %20s, Iteraciju skaits: %d massiva elements: %d\n", structs_arr[i].user, structs_arr[i].iterations, structs_arr[i].array[j]);
            }
Вот он выводит всё как надо, только каждый элемент массива с новой строчки и поэтому имя дублируется и количество итераций! У меня вопрос - как сделать, чтобы элементы массива выводились на экран в одну строчку с пробелами? Спасибо.
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
06.12.2010, 01:56 6
Попробуйте вместо "\n" поставить " "(пробел в кавычках)!!!
0
0 / 0 / 2
Регистрация: 21.09.2010
Сообщений: 74
06.12.2010, 02:02  [ТС] 7
Тогда получится что всё будет в одну строчку. А надо чтобы новая строчка начиналась с новым именем, потом количество итераций, а потом введенные массивы и всё это в одну строчку. А каждая новая статистика с новой строчки
0
0 / 0 / 2
Регистрация: 21.09.2010
Сообщений: 74
06.12.2010, 02:09  [ТС] 8
Добавить вывод элементов массива на экран

Вот как сейчас - получается, что строчка с именем и с количеством итераций дублируется 15 раз.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.12.2010, 07:55 9
C
1
2
3
4
5
6
7
8
9
int j;       
     for ( i = 0; i < structs+1; ++i )
     {
               printf("Lietotaja vards: %20s, Iteraciju skaits: %d\n", structs_arr[i].user, structs_arr[i].iterations);
         for( j=0; j<n; ++j)
         {
               printf("%d ", structs_arr[i].array[j]); 
         }
      }
0
06.12.2010, 07:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2010, 07:55
Помогаю со студенческими работами здесь

Вывод на экран элементов массива
Дан двухмерный массив. Вывести на экран все элементы n-го столбца массива, начиная с нижнего...

Вывод на экран элементов массива
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;iomanip&gt; #include &lt;conio.h&gt;...

Вывод на экран элементов массива
в общем такая трабла - готовлюсь к экзамену в лекции прочитал следующий пример и решил его...

Вывод значений элементов массива на экран
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru