Форум программистов, компьютерный форум CyberForum.ru

Где косяк в коде? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
29.07.2011, 11:26     Где косяк в коде? #1
Вообщем нужно к матрице коэффициентов системы линейных уравнений дописать справа столбец свободных членов. Написал код. На маленьких матрицах работает, а на больших - нет Помогите!
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
using namespace std;
 
int main()
{
    ifstream fin11("5.txt");
    int range = 3;
    double*free = new double[range];
    int qwer = 0;
    while ( fin11 >> free[qwer])
    { qwer++; }
    fin11.close();
 
    ifstream fin1("4.txt");
    ofstream ofs3("3.txt");
    char a;
    int i = 0;
    while(!fin1.eof())
    {
        a = fin1.get();
        if ( fin1.eof() ) break;
        if ( a == '\n' ){ ofs3 << free[i] << endl;} else
        { ofs3 << a; }
    }
    fin1.close();
    ofs3.close();
delete[] free;
Работаю с матрицей порядка 3638.
Вложения
Тип файла: rar Матрица и столбец.rar (76.6 Кб, 12 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2011, 11:26     Где косяк в коде?
Посмотрите здесь:

где ошибка в коде C++
C++ Где косяк?
C++ Где то в коде ошибка
C++ Некорректно выводит массив,немогу понять где косяк
C++ Где ошибка в коде?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,692
29.07.2011, 15:44     Где косяк в коде? #21
3. Какой реально размер массива dfree?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
29.07.2011, 15:45  [ТС]     Где косяк в коде? #22
to voral: ну сообрази сколько он должен содержать то элементов...
Не думай - 3638.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
29.07.2011, 15:46     Где косяк в коде? #23
Цитата Сообщение от grizlik78 Посмотреть сообщение
Ни на что. Это же не типизированный указатель и не предполагает ни разыменования, ни даже использования в качестве указателя. Просто использование особенностей языка при преобразовании типов.
Думаю это может быть (void*)(1), хотя это только предположение.
Зато его можно привести к указателю на нужный тип
Хм.
Этот код выводит 0x804a048 у меня на компьютере если ввести цифру и 0, если символ
C++
1
2
3
4
5
#include <iostream>
int main(){
    int x;
    std::cout << ( std::cin >> x );
}
Я надеялся, что он возвращает указатель на считанный объект. Это открыло бы новые возможности для быдлокодинга на acmp =)
Но он какую-то константу на моем компьютере возвращает видимо, т.к. давно проводил такие же тесты и цифра была та же.
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,692
29.07.2011, 15:47     Где косяк в коде? #24
hello19,и уж совсем до кучи лично вам вопрос. Чему будет равно q после выполнения следующего кода:
C++
1
2
3
4
int arr[3];
arr[256]=10;
...... // различные действия
int q = arr[256];
Добавлено через 31 секунду
я то сообразил, а сам?
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
29.07.2011, 15:50  [ТС]     Где косяк в коде? #25
Ну ясно ж что значение range поменять нужно было...
Всерно выводится мусор.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
29.07.2011, 15:50     Где косяк в коде? #26
Цитата Сообщение от diagon Посмотреть сообщение
Этот код выводит 0x804a048 у меня на компьютере если ввести цифру и 0, если символ
А у меня 0x601050. Это может быть любой валидный указатель, отличный от нуля. Главное его назначение — проверка состояния потока

С++03:
27.4.4.3 basic_ios iostate flags functions
[lib.iostate.flags]
operator void*() const;
Returns: If fail() then a null pointer; otherwise some non-null pointer to indicate success.
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
29.07.2011, 15:53  [ТС]     Где косяк в коде? #27
Проблема в том, что массив свободных членов вообще не считывается... прохидит мимо и он пустым остается Что-то не пойму почему.
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,692
29.07.2011, 16:47     Где косяк в коде? #28
Понятно.
1 Посмотри файл со списком свободных элементов B.txt в hex редакторе. Первым символом стоит 0xEF. Убирай.
2 Вероятно надо заменить запятые на точки

Кроме того A.txt А - латинское, B.txt B - русское
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
29.07.2011, 16:49  [ТС]     Где косяк в коде? #29
Название давно исправил... не заметил что запятых дело... спасибо!
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,692
29.07.2011, 16:51     Где косяк в коде? #30
Многие программы Windows (включая Блокнот) добавляют байты 0xEF, 0xBB, 0xBF в начале любого документа, сохраняемого как UTF-8. Это метка порядка байтов Юникода (англ. Byte Order Mark, BOM), также её часто называют сигнатурой (соответственно, UTF-8 и UTF-8 with Signature). По наличию сигнатуры программы могут автоматически определить, является ли файл закодированным в UTF-8, однако файлы с такой сигнатурой могут некорректно обрабатываться старыми программами, в частности xml-анализаторами. Такие редакторы, как Notepad++, Notepad2 и Kate позволяют явно указывать, следует ли добавлять сигнатуру при сохранении UTF-файлов.
http://ru.wikipedia.org/wiki/UTF-8
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
29.07.2011, 17:41  [ТС]     Где косяк в коде? #31
Проблема далеко не в этом то заключалась)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2011, 18:13     Где косяк в коде?
Еще ссылки по теме:

C++ Где косяк в коде и как исправить?
Где ошибка в коде? C++
C++ Ошибка где-то в коде

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

Или воспользуйтесь поиском по форуму:
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,692
29.07.2011, 18:13     Где косяк в коде? #32
Хм, а в чем? У меня ваш код заработал именно после этого (убрал 0xEF)
Yandex
Объявления
29.07.2011, 18:13     Где косяк в коде?
Ответ Создать тему
Опции темы

Текущее время: 08:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru