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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
yuliyayuliya28
4 / 4 / 0
Регистрация: 06.03.2011
Сообщений: 319
#1

Ввод вывод - C++

12.03.2011, 22:45. Просмотров 1118. Ответов 15

Заполнить файл последовательного доступа f целыми числами, полученными с помощью генератора случайных чисел. Получить в файле g все компоненты файла f, которые делятся на m и не делятся на n.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2011, 22:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ввод вывод (C++):

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

Поменять консольный ввод-вывод на файловый ввод-вывод - C++
вот у меня калькулятор как мне сделать что б числа вводились из файла и результат записывался в новый файл ? // ОБРАТНАЯ...

Запись выражений, ввод–вывод информацииЗапись выражений, ввод–вывод информации - C++
Задача 2.1. Пользуясь только операцией умножения, вычислить (A в 7-ой степени) за четыре операции. Задача 2.2. Очистить экран,...

Файловый ввод-вывод, ввод с клавиатуры и обработка массива структур - C++
Добрый вечер)) У меня небольшой вопрос. Почему первые буквы (в названии книг) не выводит на экран? Само задание: О каждой книге ...

Реализовать вывод массива объектов типа Student на консоль (файловый ввод/вывод) - C++
Как сделать чтобы список студентов выводился на экран в конце? #include<iostream> #include<stdio.h> #include<stdlib.h> ...

Поиск в массиве структур по заданному полю и вывод в алфавитном порядке (файловый ввод/вывод) - C++
Помогите с функцией void runFile() что бы с файла брал и выводил в алфавитном порядке список товаров, хранящихся больше месяца, стоимость...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
12.03.2011, 23:12 #2
Цитата Сообщение от yuliyayuliya28 Посмотреть сообщение
Заполнить файл последовательного доступа f целыми числами
Каким количеством ?
yuliyayuliya28
4 / 4 / 0
Регистрация: 06.03.2011
Сообщений: 319
12.03.2011, 23:53  [ТС] #3
Цитата Сообщение от asics Посмотреть сообщение
Каким количеством ?
наверное до конца файла....
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
13.03.2011, 00:24 #4
Цитата Сообщение от yuliyayuliya28 Посмотреть сообщение
наверное до конца файла....
Эмм, а это сколько, а то я даже не знаю
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 340
13.03.2011, 01:08 #5
yuliyayuliya28,
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
#include <iostream>
#include <string>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
using namespace std;
int check(int m, int n,int size, int *ptr)
{
 
 
     ofstream out;
     out.open("otvet.txt", fstream::in);
     for(int i=0; i < size; i++)
     {
          if(ptr[i]%m==0 && ptr[i]%n!=0)
          {
               out<<ptr[i];
          }
     }
     out.close();
     return -1;
}
 
 
int * ptr =0;
int * ap=0;
int main()
{
 
     int size, m, n;
     cout<<"Vvedite kol-vo tselih chisel: "<<endl;
     cin >> size;
     cout<<"Chisla kratni: "<<endl;
     cin >> m;
     cout<<"Ne kratni: "<<endl;
     cin >> n;
     int arr[size];
     ptr = arr;
     for(int i=0; i <size; i++)
     {
          arr[i] = rand() % 100;
     }
     check(m, n, size, ptr);
     getch();
     return 0;
}

asics, однако тут есть ошибки..если вам не трудно подправьте, и скажите мне я исправлю
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
13.03.2011, 01:16 #6
Вроде так
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
#include <iostream>
#include <string>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//#include <conio.h>
using namespace std;
void check(int m, int n,int size, int *ptr)
{
 
 
     ofstream out("g.txt");
     for(int i=0; i < size; i++)
     {
          if(ptr[i]%m==0 && ptr[i]%n!=0)
          {
               out<<ptr[i] << ' ';
          }
     }
     out.close();
}
int main()
{
 
     int size, m, n;
     cout<<"Vvedite kol-vo tselih chisel: "<<endl;
     cin >> size;
     cout<<"Chisla kratni: "<<endl;
     cin >> m;
     cout<<"Ne kratni: "<<endl;
     cin >> n;
     int *array = new int[size];
     ofstream ofs("f.txt");
     srand(time(0));
     for(int i=0; i <size; i++)
     {
          array[i] = rand() % 100;
          ofs << array[i] << ' ';
     }
     check(m, n, size, array);
     delete[] array;
     //getch();
     return 0;
}
Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 724
13.03.2011, 01:16 #7
Ошибка в том,что вы вводите размер массива в программе,а так делать нельзя
Либо динамическое выделение памяти под массив,либо array[100]
Размер массива должен быть явно задан,чтобы компьютер знал сколько памяти выделять на массив.
Условие задачи странное,до конца файла,но конец то его где?Пока место на жестком диске не закончится?
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 340
13.03.2011, 01:22 #8
Цитата Сообщение от Rexer Посмотреть сообщение
азмер массива должен быть явно задан,чтобы компьютер знал сколько памяти выделять на массив.
я вас не понял. а разве когда пользователь вводит
Цитата Сообщение от asics Посмотреть сообщение
cout<<"Vvedite kol-vo tselih chisel: "<<endl; cin >> size;
то компьютер не знает сколько памяти выделять?

и еще чего я не могу понять почему функция check() не работает ... вроде условие if правильно написал...
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,601
13.03.2011, 01:27 #9

Не по теме:

Цитата Сообщение от asics Посмотреть сообщение
Эмм, а это сколько, а то я даже не знаю
Будет Вам над барышней издеваться


Вот без массивов и заморочек по поводу их размера
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define F "f.txt"
#define G "g.txt"
    
#define TOP 100
 
int main(void){
    FILE * f1, * f2;
    int numbersCount, i, number, m, n;
    
    printf("Numbers count: ");
    scanf("%d", &numbersCount);
    printf("m = ");
    scanf("%d", &m);
    printf("n = ");
    scanf("%d", &n);
    
    if ( ( f1 = fopen(F, "w") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    srand(time(NULL));
    for ( i = 0; i < numbersCount; ++i ){
        if ( fprintf(f1, "%d\n", rand() % TOP) < 0 ){
            perror("fprintf");
            if ( fclose(f1) )
                perror("fclose");
            exit(1);
        }
    }
    if ( fclose(f1) ){
        perror("fclose");
        exit(1);
    }
    
    if ( ( f1 = fopen(F, "r") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    if ( ( f2 = fopen(G, "w") ) == NULL ){
        perror("fopen");
        if ( fclose(f1) )
            perror("fclose");
        exit(1);
    }
    
    while ( fscanf(f1, "%d", &number) == 1 ){
        if ( ! ( number % m ) && ( number % n ) ){
            if ( fprintf(f2, "%d\n", number) < 0 ){
                perror("fprintf");
                if ( fclose(f1) )
                    perror("fclose");
                if ( fclose(f2) )
                    perror("fclose");
                exit(1);
            }
        }
    }
    if ( ferror(f1) ){
        perror("ferror");
        if ( fclose(f1) )
            perror("fclose");
        if ( fclose(f2) )
            perror("fclose");
        exit(1);
    }
    number = 0;
    if ( fclose(f1) ){
        perror("fclose");
        ++number;
    }
    if ( fclose(f2) ){
        perror("fclose");
        ++number;
    }
    
    fprintf(stderr, "Done with %d errors.\n", number);
    exit(number);
}
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
13.03.2011, 01:28 #10
instagib, Что в моем коде не так ?
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,601
13.03.2011, 01:43 #11
Цитата Сообщение от instagib Посмотреть сообщение
компьютер не знает сколько памяти выделять?
Читайте про размещение массивов в стеке и в динамической памяти. При объявлении массива
C++
1
int arr[size];
параметр size должен быть известен на этапе компиляции, то есть должен быть константным значением. Во время выполнения программы такое не сделаешь. Присмотритесь к программе asics, там в этом плане всё правильно.
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 340
13.03.2011, 02:34 #12
easybudda, спасибо.. на счет:
Цитата Сообщение от easybudda Посмотреть сообщение
параметр size должен быть известен на этапе компиляции, то есть должен быть константным значением
теперь знаю.
yuliyayuliya28
4 / 4 / 0
Регистрация: 06.03.2011
Сообщений: 319
13.03.2011, 12:35  [ТС] #13
Цитата Сообщение от easybudda Посмотреть сообщение

Не по теме:


Будет Вам над барышней издеваться


Вот без массивов и заморочек по поводу их размера
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define F "f.txt"
#define G "g.txt"
    
#define TOP 100
 
int main(void){
    FILE * f1, * f2;
    int numbersCount, i, number, m, n;
    
    printf("Numbers count: ");
    scanf("%d", &numbersCount);
    printf("m = ");
    scanf("%d", &m);
    printf("n = ");
    scanf("%d", &n);
    
    if ( ( f1 = fopen(F, "w") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    srand(time(NULL));
    for ( i = 0; i < numbersCount; ++i ){
        if ( fprintf(f1, "%d\n", rand() % TOP) < 0 ){
            perror("fprintf");
            if ( fclose(f1) )
                perror("fclose");
            exit(1);
        }
    }
    if ( fclose(f1) ){
        perror("fclose");
        exit(1);
    }
    
    if ( ( f1 = fopen(F, "r") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    if ( ( f2 = fopen(G, "w") ) == NULL ){
        perror("fopen");
        if ( fclose(f1) )
            perror("fclose");
        exit(1);
    }
    
    while ( fscanf(f1, "%d", &number) == 1 ){
        if ( ! ( number % m ) && ( number % n ) ){
            if ( fprintf(f2, "%d\n", number) < 0 ){
                perror("fprintf");
                if ( fclose(f1) )
                    perror("fclose");
                if ( fclose(f2) )
                    perror("fclose");
                exit(1);
            }
        }
    }
    if ( ferror(f1) ){
        perror("ferror");
        if ( fclose(f1) )
            perror("fclose");
        if ( fclose(f2) )
            perror("fclose");
        exit(1);
    }
    number = 0;
    if ( fclose(f1) ){
        perror("fclose");
        ++number;
    }
    if ( fclose(f2) ){
        perror("fclose");
        ++number;
    }
    
    fprintf(stderr, "Done with %d errors.\n", number);
    exit(number);
}
Спасибо....можете пояснить код?и вот в f...должна быть числовая последоватьность?или что?
Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 724
13.03.2011, 21:09 #14
Цитата Сообщение от instagib Посмотреть сообщение
я вас не понял. а разве когда пользователь вводит

то компьютер не знает сколько памяти выделять?

и еще чего я не могу понять почему функция check() не работает ... вроде условие if правильно написал...
Вводя размер вы выделяете память под переменную,где храните размер,а не под массив
yuliyayuliya28
4 / 4 / 0
Регистрация: 06.03.2011
Сообщений: 319
14.03.2011, 20:12  [ТС] #15
Цитата Сообщение от Rexer Посмотреть сообщение
Вводя размер вы выделяете память под переменную,где храните размер,а не под массив
Вроде так...только воп помогите ошибки исправить(пожалуйста

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
#include "stdafx.h"
#include "iostream"
#include <conio.h>
#include "time.h"
 
 
using namespace std;
long int i,k,m,n;
 
 
int main()
{   
    setlocale(LC_ALL,"");
    srand(time==NULL);
cout<<"Введите количество элементов: ";
cin>>k;
cout<<endl;
cout<<"Введите число m: ";
cin>>m;
cout<<endl;
cout<<"Введите число n: ";
cin>>n;
    int *a;
    a = new int[n];
    FILE* str;
    str=fopen("d1.txt","w");
    for(i=0;i<k;i++)
    {
point:  a[i]=rand()%100-rand()%100;
        if (a[i]==0)
            goto point;
        fprintf(str,"%d ",a[i]);
    }
    fclose(str);
 
    FILE* str1;
 
    str1=fopen("d2.txt","w");
    for(i=0;i<k;i++)
    {
        if (a[i]%m==0)&&(!a[i]%n==0);
        fprintf(str1," %d ,",a[i]);
    }
    fclose(str1);
    delete []a;
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2011, 20:12
Привет! Вот еще темы с ответами:

Вывод суммы в файл (файловый ввод/вывод) - C++
Добрый день! Я пытался написать программу, которая должна вводить данные из файла №1, потом вычислять их сумму и полученное значение...

ввод n-значного числа, вывод цифр, из которых оно состоит и вывод суммы его цифр. - C++
Написать программу, осуществляющую ввод n-значного числа, вывод цифр, из которых оно состоит и вывод суммы его цифр. Подключить...

ввод вывод - C++
cout &lt;&lt; &quot;Rabochiy &quot; &lt;&lt; num + 1 &lt;&lt; &quot;: \n&quot;; cout &lt;&lt; &quot;Imya: &quot;; cin &gt;&gt; (*Worker).Imya; cout &lt;&lt; &quot;Doljnost: &quot;; cin &gt;&gt;...

ввод вывод СИ++ - C++
ля каждого посетителя парикмахерской (с одним мастером) известны t - момент его прихода и to – продолжительность его обслуживания. Сколько...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.03.2011, 20:12
Ответ Создать тему
Опции темы

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