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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
АТерентьев
21 / 20 / 1
Регистрация: 16.10.2009
Сообщений: 947
#1

Ввод матрицы из файла - затирает последний элемент предыдущей строки - C++

21.03.2010, 00:25. Просмотров 943. Ответов 3
Метки нет (Все метки)

Странный эффект
Содержимое вводимого файла-
1 2 3
4 5 6

C++
1
2
3
4
5
6
int *a;
a = new(2*3);
 
for (i=0;i<2;i++)
  for (j=0;j<3;j++)
    fscanf(input, "%d %d",*(a+i*2+j));
При выводе введенного массива в стандартный вывод - получаем
1 2 4
4 5 6

Если вывод вводимых символов поставить сразу во внутреннем цикле , то вроде все вводится
нормально
1 2 3
4 5 6
Такое впечатление , что когда происходит переход на ввод второй строки - затирается последний символ первой строки.
Как бы это поправить?

Добавлено через 56 минут
Прошу прощения в тексте описки сделал
C++
1
2
3
4
5
6
int *a;
a = new int(2*3);
 
for (i=0;i<2;i++)
  for (j=0;j<3;j++)
    fscanf(input, "%d",*(a+i*3+j));
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2010, 00:25     Ввод матрицы из файла - затирает последний элемент предыдущей строки
Посмотрите здесь:

Найти последний элемент каждой строки матрицы, который не является степенью заданного числа - C++
Написать программу, которая 7. для каждой строки массива определяет последний элемент, который не является степенью числа 3 (например,...

Для каждой строки матрицы найти последний четный элемент и записать данные в новый массив - C++
Дан массив размером n*n , элементы которого целые числа . Для каждой строки найти последний четный элемент и записать данные в новый массив

Последний элемент из файла выводится 2 раза - C++
Добрый вечер. Подскажите, пожалуйста, почему при чтении из файла последний элемент выводиться 2 раза? Если в файле такие данные: &quot;string1...

Найти первый и последний положительный элемент в строках матрицы - C++
Организовать двухмерный массив с вещественными числами и найти первый и последний положительный элемент в строках массива.

Отрицательные элементы умножить на последний элемент соответствующей строки. - C++
Отрицательные элементы умножить на последний элемент соответствующей строки. Массив m, заполненный генератором случайных чисел в диапазоне...

При чтении файла последний элемент повторяется дважды - C++
появилась необходимость выучить работу с файлами за 9 часов #include &lt;iostream&gt; #include &lt;time.h&gt; #include &lt;stdio.h&gt; #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
klaxor
0 / 0 / 1
Регистрация: 21.11.2009
Сообщений: 25
21.03.2010, 00:34     Ввод матрицы из файла - затирает последний элемент предыдущей строки #2
Неточно но я думаю тут проблема с \0 (нулевым байтом) надо как то показать компилятору что конец строки.Скорей всего еще на шаг сделать вперед и прочитать этот ноль и только после него выводить следующую строку
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
21.03.2010, 01:57     Ввод матрицы из файла - затирает последний элемент предыдущей строки #3
В функции fscanf третий параметр есть АДРЕС переменой. ДЛя начала эо исправь. Надо так:

C++
1
fscanf(input, "%d",a+i*3+j)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2010, 11:18     Ввод матрицы из файла - затирает последний элемент предыдущей строки
Еще ссылки по теме:

Первый отрицательный и последний положительный элемент читаемый из файла - C++
Из файла (имя файла вводится с клавиатуры) считывается массив целых чисел. Размер массива заранее неизвестен. Выведите в файл количество...

При считывании из файла последний элемент читается дважды - C++
Всем доброго времени суток! Нашёл граблю. Считываю из файла слова, разделённые пробелами, в vector&lt;string&gt;. Для куска кода, которые...

В каждой строке квадратной матрицы найти последний четный элемент - C++
Помогите плз. Никак соображу как сделать лабу. Дан массив размером nxn, элементы которого целые числа. Для каждой строки найти последний...

В каждом столбце матрицы поменять местами первый и последний элемент - C++
В каждом столбце матрицы К(6,5) поменять местами первый и последний элемент Ребят как эту программу сделать попроще, а то какая то...


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

Или воспользуйтесь поиском по форуму:
АТерентьев
21 / 20 / 1
Регистрация: 16.10.2009
Сообщений: 947
21.03.2010, 11:18  [ТС]     Ввод матрицы из файла - затирает последний элемент предыдущей строки #4
* и не было, что-то на ночь глядя описок наделал. Проблема в том, что под windows ( я использую devC++) все работает. А под Linux начинаются фокусы - полный текст рабочей (под windows) программы
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
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int i,j;  
    int row=2;
    int col=3;
    int *a;
    FILE *input = stdin; 
 
 
    input=fopen("123456.txt","r");
 
    a = new int(row*col);
     
     for (i=0;i<row;i++)
      {
        for (j=0;j<col;j++)
         { read = fscanf(input,"%d",a+i*col+j);
           printf("%d ",*(a+col*i+j));  // Çäåñü Г¬Г*Г±Г±ГЁГў âûâîäèòñÿ ГЇГ°Г*âèëüГ*Г® - 1 2 3
         }                              //                                    4 5 6
         printf("\n");
      }
    fclose(input);
    
    printf("Repeated - \n");
    
     for (i=0;i<row;i++)
      {   for (j=0;j<col;j++)
             printf("%d ",*(a+col*i+j));  // ГЂ çäåñü ïîä windows ГЇГ°Г*âèëüГ*Г® Г* ïîä linux
           printf("\n");                  //                    1 2 4
                                          //                    4 5 6
      }
      
    
    fscanf (stdin,"%d",&i);
        
}
        
}
Что бы это значило?
Спасибо!
Yandex
Объявления
21.03.2010, 11:18     Ввод матрицы из файла - затирает последний элемент предыдущей строки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru