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

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

Войти
Регистрация
Восстановить пароль
 
Max777
0 / 0 / 0
Регистрация: 12.09.2009
Сообщений: 31
#1

файл вещественных чисел, нужно поравить код совсем чуть-чуть - C++

21.12.2009, 00:08. Просмотров 505. Ответов 5
Метки нет (Все метки)

Вот написал, но работает только для целых чисел.Как сделать для файла с вещественными числами?
Код
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    FILE *fds;
    char s[1025]; //строка выдераемая из файла
    char *chislo; // слово (число) выдераемое из строки
    int mas[1000];// массив в котором будут храниться числа
    int i,j, max, max_n, min, min_n; //i,j- счётчики, max- значение максэлемента max_n - его номер в массиве

	fds=fopen("D:\\chisla.txt","r");      //открываем для чтения
	i=0;

	while (fgets(s,1025,fds)!=NULL) //выдерается строка из файла пока не закончится фаил
	{
		chislo=strtok(s," ");        //выдерается из строки слово(число) стоящие до пробела
		while (chislo!=NULL)         //проверка на конец строки
		{
			mas[i]=atoi(chislo);     //слово(число) переводится в число и сохраняется в массиве
			chislo=strtok(NULL," "); //выдерка слов продолжается
			i++;
		}
	}
	fclose(fds);
	fds=fopen("D:\\chisla.txt","w");              //открываем для записи
	max=mas[0];                            //поиск макс и мин
	min=mas[0];
    max_n=0;
    min_n=0;
    for (j=1; j<i; j++)
    {
        if (max<mas[j])
        {
            max=mas[j];
            max_n=j;
        }
        if (min>mas[j])
        {
            min=mas[j];
            min_n=j;
        }
    }
    mas[max_n]=min;                            //переприсваивание
    mas[min_n]=max;
    for (j=0;j<i;j++)
    {
        itoa(mas[j],s,10);                     // переводит число в слово(число)
        strcat(s," ");                         //долепливаем к слову пробел
        fprintf(fds,s);                        //запись в фаил
    }
    fclose(fds);
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2009, 00:08     файл вещественных чисел, нужно поравить код совсем чуть-чуть
Посмотрите здесь:

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

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

кто желает мне подсобить чуть чуть? - C++
нужно написать программу: 31 В одномерном массиве, состоящем из n вещественных элементов, вычислить: − номер минимального по...

Закончить прогу. Чуть-чуть осталось - C++
Нужно заменить все маленькие латинские буквы на $. Мои наработки: #include &lt;windows.h&gt; #include &lt;cstdlib&gt; #include &lt;iostream&gt; using...

Осталось чуть чуть доделать. Посмотрите - C++
помогите дописать программу. Она считывает текст из файла и выводит слова начинающиеся с ' -'. А нужно, чтобы выводило предложеия. ...

Нужно чуть подправить программы. Массив и структура. - C++
1. Двумерный массив. Вводим количество спортсменов, далее вводим имя для каждого. Для каждого из них рандомно выводятся результаты (6...

Сортировка в лексографическом порядке(только чуть поправить код) - C++
Есть структура &quot;книга&quot; struct Book { char name; char autor; int year; int number_of_copy; Book* link; }...

чуть не понимаю.. - C++
1. Управление автомобилем. 2. Поездка на автомобиле. 3. Повреждение автомобиля. 4. Выбор автомобиля для покупки. 5. Диагностика...

Указатели+массив. чуть подправить - C++
Введите с клавиатуры данные в массив целого типа, а затем выведите на экран их среднее значение. тема:указатели Программа...

Как можно чуть отредактировать вспомогательную функцию? - C++
Вспомогательная функция возвращает значение равное сумме текущего элемента матрицы и элемента расположенного справа от текущего в данном...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
21.12.2009, 03:38     файл вещественных чисел, нужно поравить код совсем чуть-чуть #2
C++
1
int mas[1000];// массив в котором будут храниться числа
заменить на

C++
1
double mas[1000];// массив в котором будут храниться числа
По-моему, должно хватить. Если есть темповые переменные, в которые помещаются числа - их тоже на double
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
21.12.2009, 03:46     файл вещественных чисел, нужно поравить код совсем чуть-чуть #3
Ещё atoi поменять на atod ,а dtoa,походу,придётся самому писать,т.е.парсить строку и создавать число.
Я на С++ использую такой шаблон,но я не знаю,насколько это безопасно:
C++
1
2
3
4
5
6
7
8
  template <typename T> string ntos (const T &number)
  {
     stringstream buffer;
     string str;
     buffer << number;
     buffer >> str;
     return str;
  }
Только тебе нужно обратный процесс.
Max777
0 / 0 / 0
Регистрация: 12.09.2009
Сообщений: 31
21.12.2009, 04:52  [ТС]     файл вещественных чисел, нужно поравить код совсем чуть-чуть #4
решил, вот если надо кому.....
Код
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
    FILE *fds;
	char s[1025]; //строка выдераемая из файла
	char *chislo; // слово (число) выдераемое из строки
	double mas[1000], min, max;// массив в котором будут храниться числа
	int i, j, max_n, min_n; //i,j- счётчики, max- значение максэлемента max_n - его номер в массиве

	fds=fopen("D:\\chisla.txt","rt");      //открываем для чтения
	i=0;

    while (fgets(s,1025,fds)!=NULL) //выдерается строка из файла пока не закончится фаил
    {
        chislo=strtok(s," ");        //выдерается из строки слово(число) стоящие до пробела
        while (chislo!=NULL)         //проверка на конец строки
		{

			mas[i]=atof(chislo);     //строка переводится в вещественное число и сохраняется в массиве
			chislo=strtok(NULL," "); //выдерка слов продолжается
			i++;
		}
	}
	fclose(fds);
	fds=fopen("D:\\chisla.txt","wt");              //открываем для записи
    max=mas[0];                            //поиск макс и мин
	min=mas[0];
	max_n=0;
    min_n=0;
    for (j=1; j<i; j++)
    {
		if (max<mas[j])
        {
            max=mas[j];
            max_n=j;
		}
        if (min>mas[j])
        {
			min=mas[j];
            min_n=j;
        }
    }
	mas[max_n]=min;                            //переприсваивание
    mas[min_n]=max;
	for (j=0;j<i;j++)

	{
		gcvt(mas[j],10,s);           // переводит число в строку
		strcat(s," ");                         //долепливаем к слову пробел
		fprintf(fds,s);                        //запись в фаил
	}
    fclose(fds);
	return 0;
}
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.12.2009, 05:32     файл вещественных чисел, нужно поравить код совсем чуть-чуть #5
C
1
gcvt(mas[j],10,s);           // переводит число в строку
C
1
sprintf(s, "%g", mas[j]);
Max777
0 / 0 / 0
Регистрация: 12.09.2009
Сообщений: 31
21.12.2009, 06:30  [ТС]     файл вещественных чисел, нужно поравить код совсем чуть-чуть #6
спс, это понятно
Yandex
Объявления
21.12.2009, 06:30     файл вещественных чисел, нужно поравить код совсем чуть-чуть
Ответ Создать тему
Опции темы

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