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

Rand число в char - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
08.11.2011, 00:16     Rand число в char #1
Доброго времени суток. Ребята, очень нужна ваша подсказка... мне надо записать в файл рандомные числа (с диапазоном) через rand(). я использую FILE *stream для файлов. поэтому, мне число надо переводить в рядок
проблема в том что не работает такое

char qw[5];
qw=itoa(10,qw,5);

p.s.
10 и 5 необязательные данные, могут быть любые
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2011, 00:16     Rand число в char
Посмотрите здесь:

char в число C++
C++ Как превратить число из char в int ?
C++ rand вещественное число
C++ число int в hex в char
C++ Записать число в ячейку char
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
08.11.2011, 00:59     Rand число в char #2
itoa возвращает указатель на строку. Вы его присваиваете массиву, т.е. char[]. Нельзя так делать. Да и зачем вам это? Вы и так знаете этот указатель.
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
08.11.2011, 01:03  [ТС]     Rand число в char #3
знаю, но вот задание есть.
есть структура, пользователь в меню должен выбратьь что он хочет, заполнить ее, сразу вывести
и если он выберет сразу вывести то она должна быть проинициализирована в коде. количество елементов структуры в динамическом массиве, который тоже вводит пользователь. что бы не вводить в коде все значения, а их может быть оочень много, я хотел как то сделать это случайными числами, темболее у меня только числа...
нету никаких способов разве?
может можно как то сделать что бы допустим qw[0]=1; qw[1]=0; qw[2]='\0';
преобразовать так
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
08.11.2011, 01:09     Rand число в char #4
Не понял задание. Но
C++
1
qw[0]=1;
1 - это код символа, а не цифра. Т.е. если вы будете выводить на экран w[0], то у вас выведется символ, который имеет такой код.
C++
1
qw[1]=0;
Это одно и тоже, что
C++
1
qw[2]='\0';
символ с кодом 0 - используется как признак конца ввода.
Если вы попытаетесь вывести строку, то выведется только w[0], причем по таблице ASCII/ANSI это совсем не то, что вы хотели.
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
08.11.2011, 01:17  [ТС]     Rand число в char #5
да, я перепутал там "" поставить
qw[0]="1"; qw[1]="0";
а разве cout не выведет строку нормально?
я пробывал выводить, и выводило.

Добавлено через 3 минуты
раз с этим не выходит, тогда можно ли как то ввести в файл текстовый не char а целые числа?
использую FILE *stream;
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
08.11.2011, 01:22     Rand число в char #6
Цитата Сообщение от shaffle Посмотреть сообщение
qw[0]="1"; qw[1]="0";
Тоже ошибка.
qw[0] имеет тип char, а вы хотите присвоить адрес строки "1". Так же не правильно и qw[1]="0"
Все, что берется в двойные кавычки - это строка. А в одинарные - это символ. Символ можно преобразовать в int/double и т.д., но строку нет. Строка это массив символов, а символ - это число, соответствующий определенному символу.

Добавлено через 59 секунд
Цитата Сообщение от shaffle Посмотреть сообщение
а разве cout не выведет строку нормально?
Программа выводит то, что вы ей указываете вывести. Она не может догадываться, что вы хотели на самом деле сделать.

Добавлено через 1 минуту
Цитата Сообщение от shaffle Посмотреть сообщение
раз с этим не выходит, тогда можно ли как то ввести в файл текстовый не char а целые числа?
использую FILE *stream;
С этим я не дружу. Завтра может кто-то ответит. Если вы бы работали с файлами в стиле С++(ifstream, ofstream, fstream), то цифры можно было точно выводить в файл.
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
08.11.2011, 01:27  [ТС]     Rand число в char #7
видел примеры кода, просто поидеи по другому нельзя будет. тогда напишу наверно функцию для вызова меню вывода на экран, по другому файл заполню.. у вас нету какой то литературы или ссылки на использование иных функций для работы с файлами?

Добавлено через 2 минуты
думаю fstream пригодиться больше остальных
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
08.11.2011, 01:28     Rand число в char #8
Цитата Сообщение от shaffle Посмотреть сообщение
у вас нету какой то литературы или ссылки на использование иных функций для работы с файлами?
Информации в книгах по основам С++ должно быть достаточно для вашей задачи, хотя я все равно не понимаю задание.
Вы пишите на С или С++?
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
08.11.2011, 01:31  [ТС]     Rand число в char #9
вот задание:
программа должна содержать пункты меню "ввод" и "вывод" и "выйти". соответствующие функции должны заполнять файл данными, введенными с клавиатуры, или заполнять структуры данными с файла. структура "дома"
кол-во домов
кол-во этажэй в домах
кол-во квартир на этаже
кол-во комнат в квартирах

там еще среднее посчитать надо но то фигня
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
08.11.2011, 01:33     Rand число в char #10
Язык какой?) С или С++? С первым ничем не помогу, со вторым помогу)
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
08.11.2011, 01:34     Rand число в char #11
shaffle, а вы можете просто выложить задание? ничего непонятно из того что вы говорите.
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
08.11.2011, 01:49  [ТС]     Rand число в char #12
с++
со вторым всмысле?)
вот код который якобы работает, но его надо красиво сделать и добавить средние значения

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
// probi.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <conio.h>
#include <Windows.h>
#include <stdlib.h>
 
using namespace std;
 
struct doma
{
    int floor;
    int flat;
    int room;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE,"");
    cout<<"Введите количество домов\n";
    int n;
    cin>>n;
        doma *hata = new doma [n]; 
        char qw[100];
        FILE *stream = fopen("Doma.txt","w+t");
        for(int i=0; i<n; i++)
        {   cout<<"Вы ввели "<<n<<" домов. Заполнение информации по "<<i+1<<" дому\n";
            cout<<"Введите кол-во этажей\n";
            cin>>qw;
            strcat(qw,"\n");
            fputs(qw,stream);
            
            cout<<"Введите кол-во квартир\n";
            cin>>qw;
            strcat(qw,"\n");
            fputs(qw,stream);
 
            cout<<"Введите кол-во комнат\n";
            cin>>qw;
            strcat(qw,"\n");
            fputs(qw,stream);
 
            system("cls");
        }
            fclose(stream);
        
 
 
        stream = fopen("Doma.txt","r+t");
        char str[100];
        for (int i=0; i<n; i++)
        {
            hata[i].floor=atoi(fgets(str,n,stream));
            hata[i].flat=atoi(fgets(str,n,stream));
            hata[i].room=atoi(fgets(str,n,stream));
        }
 
        fclose(stream);
        for (int i=0; i<n; i++)
            cout<<"№"<<i+1<<" колво этажей = "<<hata[i].floor<<"  кол-во квартир = "<<hata[i].flat<<"  кол-во комнат = "<<hata[i].room<<endl;
        
        delete (hata);
    system("pause");
    return 0;
}
Добавлено через 5 минут
просто задание с файлом, следствие задание с структурами, еще и на укр языке, который, я думаю тут не многие понимают. описал вроде бы нормально

Добавлено через 8 минут
еще раз напишу задание, своими словами) потому что я скидывал так, как оно написано было мне)
вобщем, есть структура, без инициалезированых данных.
пользователь при включении программы должен выбрать: ввод, вывод или выйти.
есле он выбрал "ввод",он сначала вводит количество домов(елементов массива структуры(массив динамический)) он должен получить доступ на ввод информации в структуре, он вводит информацию сразу в файл. как угодно. в файле потом считывает и переводит в структуру, а структура выводиться на экран.
при выборе "вывод" он так же должен нажать сколько будет домов, и в коде файл должен заполниться какими то значениями (рандомными), потом считываеться с файла, кидаеться в структуру и выводиться на экран.

использую FILE *stream.
файл текстовый.
структура называеться "doma"
елементы в структуре int кол во этажей
елементы в структуре int кол во квартир
елементы в структуре int кол во комнат
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
08.11.2011, 02:03     Rand число в char #13
Какой же это С++, если вы пишите на С?
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
08.11.2011, 02:08  [ТС]     Rand число в char #14
как же на с, если на с++?)
я при создании проэкта выбираю с++
я с даже не учил еще)
и предмет у нас с++)
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
08.11.2011, 02:12     Rand число в char #15
ну что-то вроде становится понятно, но не совсем. Вы думаете на этом форуме общается только русскоязыное население? покажите задание.
используйте fprintf(), fscanf()
Все операции с файлами (и не только) надо проверять, и в случае неудачи кидать исключение. stream - неудачное имя для потока.
C
1
2
3
4
5
stream = fopen("Doma.txt","r+t");
if ( !stream ){
    printf("error open file, line %d\n", <номер строки>);
    exit ( -1 );
}
вообще вы работаете с потоками Си и С++ в перемешку. Я не думаю что это может навредить программе, но так же и уверен что это нехорошо. Вы определитесь или писать на Си или на С++.
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
08.11.2011, 02:20  [ТС]     Rand число в char #16
под номером строки что должно идти?
а закрытие не должно проверяться?
просто большинство здесь наверно рускоязычных

вот задание 1.
ТЕОРЕТИЧЕСКИЕ ЗНАНИЯ : Синтаксис структури. Виділення пам'яті під елемент структури. Звертання до елемента структури. Використання структури як параметра функції. Масиви структур. Використання масиву структур як параметра функції.

Задача: Написати програму роботи з масивом з 10 об'єктів.
Потрібні окремі функції ініціалізації об'єктів і обчислень. У функції main у циклі виводити меню з пунктами (ініціалізувати об'єкт, надрукувати всі об'єкти, виконати підрахування ( залежно від варіанту), вийти із програми). Робота з меню повинна розташовуватися також в окремій функції

мой вариант:
Варіант 9:
Об'єкти – будинки у кварталі.
Потрібно обчислити середню й сумарну кількість поверхів, квартир, кімнат.


задание 2 (дополнение к этому):
Програма повинна містити пункти меню «Введення даних» і «Виведення даних». Відповідні функції повинні заповнювати файл даними, введеними з клавіатури або заповнювати структури даними з файлу, Структура береться з попередньої лабораторної роботи у відповідності до Вашого варіанту.




на счет с и с++ в перемешку, я даже не задумывался об этом. читаю такую литературу, и с этой книги нас учат на парах)
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
08.11.2011, 02:34     Rand число в char #17
ну динамической памяти в задании нет. Зато четко говорится о функциональном программировании (с), а не ООП (с++). сейчас какой-то скелет нарисую, кожу сами натянете.
silent_1991
08.11.2011, 02:52
  #18

Не по теме:

Цитата Сообщение от alkagolik Посмотреть сообщение
о функциональном программировании (с)
О процедурном, Вы имели ввиду))

alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
08.11.2011, 05:48     Rand число в char #19
silent_1991, та да)) заболтался. компилировать с ключом с99.
код программы
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
#include <stdio.h>
#include <stdlib.h>
#define size    10
 
typedef struct doma{
    int floor;
    int flat;
    int room;
};
 
void func_input(struct doma *tmp, FILE *fp, _Bool str){
    if (str)
        for (int i = 0; i < size; ++i)
            scanf("%d %d %d", &tmp[i].floor, &tmp[i].flat, &tmp[i].room);
    else
        for (int i = 0; i < size; ++i)
            fscanf(fp, "%d %d %d", &tmp[i].floor, &tmp[i].flat, &tmp[i].room);
 
}
 
void func_output(struct doma *tmp, FILE *fp, _Bool str){
    if (str)
        for (int i = 0; i < size; ++i)
            printf("%d %d %d\n", tmp[i].floor, tmp[i].flat, tmp[i].room);
    else
        for (int i = 0; i < size; ++i)
            fprintf(fp,"%d%d%d\n", tmp[i].floor, tmp[i].flat, tmp[i].room);
}
 
FILE *my_fopen(FILE *fp){
 
    FILE *tmp = fp;
    tmp = fopen("/home/deadman/documents/file.txt", "w+");
    if (!tmp){
        printf("error. line %d\n", 33);
        exit( -1 );
    }
    return tmp;
}
 
void my_fclose(FILE *fp){
    int ch = fclose(fp);
 
    if (ch){
        printf("error. line %d\n", 42);
        exit( -1 );
    }
}
 
int main ()
{
    struct doma array[size];
    FILE *fstr;
 
    fstr = my_fopen(fstr);
    puts ( "заполняем файл данными\n" );
    func_input(array, fstr, 1);
    func_output(array, fstr, 0);
    my_fclose(fstr);
    fstr = my_fopen(fstr);
    func_input(array, fstr, 0);
    my_fclose(fstr);
    fstr = my_fopen(fstr);
    func_output(array, fstr, 1);
    my_fclose(fstr);
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2011, 18:45     Rand число в char
Еще ссылки по теме:

C++ Как в выделенную память записать поочередно число int, массив char[n], и еще число int
C++ Char* в число по ASCII кодам
Вписать в массив char число C++

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

Или воспользуйтесь поиском по форуму:
shaffle
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 85
08.11.2011, 18:45  [ТС]     Rand число в char #20
спасибо. у меня таки получилось сделать с инт в чар таким способом:
C++
1
2
3
4
int i; 
shar str
i=rand()%100;
itoa(i,str,100);
и меня пару вопросов по коду, как у новичка в Си.
зачем в структуре вы использовали typedef? обязательно ли оно в этом случае?
для чего вы используете булевские переменные в функциях?
и не понятно больше всего эта строка "FILE *my_fopen(FILE *fp)"
что она значит? это как функия?
Yandex
Объявления
08.11.2011, 18:45     Rand число в char
Ответ Создать тему
Опции темы

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