Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2012, 14:49   #1
siemdi
Пользователь
 
Регистрация: 15.01.2010
Сообщений: 50
Вопрос Массив INT

Проблема такого рода
В файле in.txt хранятся символы 0 или 1, мы считываем посимвольно и записываем в массив int test[], все бы было ничего но на выходе из массива test мы получаем двухзначные числа которые мы туда не записывали, может я где то допустил ошибку?
PHP код:
#include <stdio.h>
#include <iostream.h>
int main()
{
using namespace::std;
system("chcp 1251");
    
int space 0;
    
char c;
    
FILE *fin, *fout;
    
int i=0;
    
int test[4];
    
fin fopen("algoritme\\in.txt""r");
    
fout fopen("algoritme\\out.txt""w");
    while ((
fgetc(fin)) != EOF
        {
            if (
== '0'||== '1'
                {
                    
cout<<c;
                    
test[i]=c;
                    
space 0;
                    
                }
            else
                {
                    
                    
space++;
                }
            if (
space <= 1
                {
                    
fputc(cfout);
                }
                
i++;
        }
        
cout<<endl;
        for(
int j=0;j<i;j++)
            {
                
cout<<test[i];
            }
    
fclose(fout);
    
fclose(fin);
    return 
0;

siemdi вне форума Ответить с цитированием
Старый 27.05.2012, 14:59   #2
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

проблема в том что ты считывает поСИМВОЛЬНО т.е. твои 0 и 1 читаются с файла как символы и потом преобразуется в инт (ACII коды). Тебе перед записью их в массив надо преобразовать обратно в число. В С незнаю как но в С++ atoi(const char *_Str); Ты попробуй измени тип массива на char и увидишь в чем проблема. В массиве типа char будет то что ты хочешь увидеть. У тебя если я не ошибаюсь эти двухзначные числа: 49 и 48
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.

Последний раз редактировалось kineziz; 27.05.2012 в 15:02.
kineziz вне форума Ответить с цитированием
Старый 27.05.2012, 15:06   #3
siemdi
Пользователь
 
Регистрация: 15.01.2010
Сообщений: 50
По умолчанию

да 48 49, но если делаешь массив char то получается на выходе [][][][] квадратики.
siemdi вне форума Ответить с цитированием
Старый 27.05.2012, 15:14   #4
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

На счет скобок не знаю почему да это и не важно. 48 49 это ACII коды символов 48 это код 0, а 49 это код 1.
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.

Последний раз редактировалось kineziz; 27.05.2012 в 15:17.
kineziz вне форума Ответить с цитированием
Старый 27.05.2012, 15:16   #5
siemdi
Пользователь
 
Регистрация: 15.01.2010
Сообщений: 50
По умолчанию

Код:
a=atoi(c);
test[i]=a;
делаю через atoi но получаю теперь на выходе
Код:
1979419861197941986119794198611979419861
siemdi вне форума Ответить с цитированием
Старый 27.05.2012, 15:18   #6
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Знаю точно одно - надо преобразовывать ACII коды обратно в число. Я бы помог но С я незнаю
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 27.05.2012, 15:20   #7
siemdi
Пользователь
 
Регистрация: 15.01.2010
Сообщений: 50
По умолчанию

я сам С не знаю, собрал код из кучи хлама, потому что на С++ ничего толком не получается(
siemdi вне форума Ответить с цитированием
Старый 27.05.2012, 15:29   #8
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Вот у меня нормально работает С++ конешно но там с комментариями
Код:
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;

int main()
{
	vector<int> ArrayFile; //Массив
	char Symbol; 
	int SymbolNew = NULL;
	ifstream input("INPUT.TXT"); //Открытие файла
	while((Symbol = input.get()) != -1) //Чтение символа из файла и запись его в переменную Symbol 
	{
		SymbolNew = atoi(&Symbol); //Преобразование переменной Symbol в тип int и запись её в переменную SymbolNew
		ArrayFile.push_back(SymbolNew); //Запись в массив преобразованной переменной
		SymbolNew = NULL;
	}
	for(int i = 0; i < ArrayFile.size(); i++)
		cout << ArrayFile[i] << ' ';
	system("PAUSE");
	return 0;
}
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 27.05.2012, 15:30   #9
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Давай аську свою подскажу объясню что не получается
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив из сhar в int Arrioh Помощь студентам 8 30.03.2012 12:05
функция float average(int arrray[],int from,int to) yuliyayuliya Помощь студентам 0 25.04.2011 21:55
Массив int в clr 0479 Общие вопросы C/C++ 0 26.11.2010 20:19
Булевый массив в int Molotoff Общие вопросы C/C++ 5 07.05.2009 12:04
перевод из int в массив char. Freeman Общие вопросы C/C++ 5 30.05.2008 17:49