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

Проблема с чтением массива чисел из текстового файла

10.01.2012, 09:30. Показов 1139. Ответов 4
Метки нет (Все метки)

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
97
/*
Написать программу для сортировки массива из 50 элементов методом “пузырьковой” сортировки (Bubble Sort) 
или прямого выбора (Select Sort) (по вариантам). Массив считать из файла. 
Вывести на экран трудоемкость метода (количество сравнений).
Номер варианта выбирается по последней цифре зачетной книжки
 
Вариант 8
Метод прямого выбора.
970, 161, 230, 91, 901, 445, 591, 546, 151, 70, 131, 92, 961, 720, 474, 597, 168,
837, 788, 500, 706, 515, 478, 200, 233, 114, 411, 146, 270, 370, 676, 548, 447,
65, 97, 884, 715, 534, 987, 619, 645, 581, 885, 818, 157, 576, 250, 558, 300, 799
*/
 
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
 
#define N 50
using namespace std;
 
void sort(int*);
 
double M,C;
FILE *f, *fw;
      
main()
{
    f=fopen("lab01.txt","rt");
    fw=fopen("lab01_result.txt","wt");
    int j,dig=0;
    char sl[80];
    int mas[N]={0};
    for(j=0;j<N;j++)
    {
    fscanf(f,"%d",&dig);
    mas[j]=dig;
    cout << dig << endl;
    }
 
    //int mas[N]={970, 161, 230, 91, 901, 445, 591, 546, 151, 70, 131, 92, 961, 720, 474, 597, 168, 837, 788, 500, 706, 515, 478, 200, 233, 114, 411, 146, 270, 370, 676, 548, 447, 65, 97, 884, 715, 534, 987, 619, 645, 581, 885, 818, 157, 576, 250, 558, 300, 799};
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    SetConsoleTitle("Lab01,  PDV-11");
    int i;
    
    cout << "Исходный массив:\n" << endl;
    fprintf(fw, "%s","Исходный массив:\n");
    
    for(i = 0; i<N; i++)
      {
         cout << mas[i] << ((i<N-1)? ", ":"");
         fprintf(fw,"%d%s",mas[i],((i<N-1)? ", ":""));
      }
        
    cout << endl << "\nОтсортированный массив:\n" << endl;
    fprintf(fw, "%s","\nОтсортированный массив:\n");
    
    sort(mas);
    
    for(i = 0; i<N; i++)
    {
        cout << mas[i] << ((i<N-1)? ", ":"");
        fprintf(fw,"%d%s",mas[i],((i<N-1)? ", ":""));
    }
        cout << "\nЧисло сравнений, C = " << C << endl;
        fprintf(fw, "%s%d\n","\nЧисло сравнений, C = ",C);
        cout << "Число пересылок, M = " << M << endl;
        fprintf(fw, "%s%d","Число пересылок, M = ",M);
    
    fclose(f);
    fclose(fw);
    getch();
    return 0;
}
 
void sort(int *a)
{
    M=C=0;
    int i, j, vsp, m;
    for(i=0; i<N; i++)
    {
        vsp = a[i];
        m = i;
        for(j=i+1; j<N; j++)
            if(a[j]<vsp)
            {
                        M++;
                C++;
                m = j;
                vsp = a[j];
            }
            a[m] = a[i];
            a[i] = vsp;
            M++;
    }
}
файл lab01.txt имеет вид:
C
1
970 161 230 91 901 445 591 546 151 70 131 92 961 720 474 и так далее
Проблема в том, что считывается только первая (!) цифра первого числа и все. Ничего понять не могу(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2012, 09:30
Ответы с готовыми решениями:

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

Списки/очереди с чтением из текстового файла
Создать очередь, информационные поля которой содержат числа из текстового файла. Удалить из...

Задачка с записью и чтением из текстового файла с++
В текстовом файле «In.txt» сохраняются через пробел целые числа. Переписать в новый текстовый...

Проблема с чтением файла
При открытии файла функцией fopen и выводе на консоль отображается только первая строчка. Я так...

4
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
10.01.2012, 10:14 2
ikari81, на первый взгляд ошибку не видно. Но Ваш код это что-то. Попробуйте
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <stdlib.h>
 
int main (void)
{
    FILE *f;
    int i, j, arr[100];
    
    if ( !( f = fopen ("input.txt", "r")) )
    {
        perror ("Err");
        exit (1);
    }
        
    for ( i = 0 ; !feof (f) &&  !ferror (f) && i < 100 ; ++i )
        if ( !fscanf (f, "%d", &arr[i]) )
            break;
    
    for ( j = 0 ; j < i - 1; ++j )
        fprintf (stdout, "%5d", arr[j]); 
        
    return 0;
};
Код
‘‚@ANDREY-PC /c/mingw
$ cat > input.txt
123 12 21 3 5 0 

[2]+  Stopped                 cat >input.txt

‘‚@ANDREY-PC /c/mingw
$ z.exe
  123   12   21    3    5    0
0
4 / 4 / 0
Регистрация: 17.05.2011
Сообщений: 254
10.01.2012, 10:33  [ТС] 3
тоже самое получается, код примера компилирую 1 в 1 и опять, читается только 1 цифра первого числа. Dev-Cpp и visualstudio 2010

Добавлено через 2 минуты
Проблема решена, мой код работает нормально, в Notepad2 стоял юникод
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
10.01.2012, 10:35 4
ikari81, покажите, что содержимое вашего файле. И что выводит программа. Я Вам привел пример.
0
4 / 4 / 0
Регистрация: 17.05.2011
Сообщений: 254
10.01.2012, 10:39  [ТС] 5
Цитата Сообщение от go Посмотреть сообщение
ikari81, покажите, что содержимое вашего файле. И что выводит программа. Я Вам привел пример.
Проблема была в том, что кодировка по умолчанию была unicode. Содержимое файла - строка из целых чисел разделенных пробелами, 50 штук, см. задание в исходном коде
0
10.01.2012, 10:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2012, 10:39
Помогаю со студенческими работами здесь

Проблема с чтением файла
Всем здорова) Хочу написать код который читает xml и другие файлы на java Так почему он у меня не...

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

Проблема с чтением из файла
Подскажите пожалуйста в чем ошибка? Чтения не происходит. Нули в массиве как были, так и остаются....

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


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

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