Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с файлами 
:(
    Опции темы
FauLL
Дата 12.12.2013, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.12.2011

Репутация: нет
Всего: нет



Дан файл f, содержащий сведения о веществах: указывается название вещества, его удельный вес и проводимость (проводника, полупроводник, изолятор). Найти удельные веса и названия всех полупроводников.

Код

#include <iostream>
#include <cstdlib>
#include <string>
#include <windows.h>
 
 
using namespace std;
 
struct sub 
{
     char name[15];
     double ves;
     char provod[15];
};
 
int WriteFile(FILE *f, int n)
{
    sub arr;
    f = fopen("file.dat", "wb");
    if (f == NULL)
    {
        printf("Error");
        exit(0);
    }
    cout<<"Введете количество записей:"<<endl;
    cin>>n;
        cout<<"Введите название эелемента, удельный вес и тип проводимости"<<endl;
    for(int i = 0; i < 3; i++)
    {
             cin >> arr.name >> arr.ves >> arr.provod;
        fwrite(&arr, sizeof(sub), 1 , f);
            cout << endl;
    }
    fclose(f);
    return 0;
}
 
void ReadFile(FILE *f, int n, char *pr)
{
    sub arr;
    f = fopen("file.dat", "rb");
    if (f == NULL)
    {
        printf("Error");
        exit(0);
    }
    printf("\n");
    printf("          Output file:\n");
    printf("-----------------------\n");
    for(int i = 0; i < n; i++)
    {
        fread(&arr, sizeof(sub), 1 , f);
        cout << "\nПолупроводники:" << endl;
         if(strcmp(arr.provod, pr) == 0)
     cout << arr.name << ' ' << arr.ves << endl;
    }
    fclose(f);
}
 
int main()
{
     SetConsoleCP(1251);
     SetConsoleOutputCP(1251);
     int y,z,n;
     sub arr[3];
     char* pr = "полупроводник";
    z = WriteFile(f1,n);
    ReadFile(f1, n, pr);
     system("pause");
     return 0;
}


выдает ошибки: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
 f1: необъявленный идентификатор
PM MAIL   Вверх
smalcom
  Дата 12.12.2013, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 494
Регистрация: 16.10.2004
Где: Dnepr

Репутация: нет
Всего: 7



1. 
Цитата

To disable deprecation, use _CRT_SECURE_NO_WARNINGS


2. 
Цитата

f1: необъявленный идентификатор 

это потому что он не объявлен


быть может вам сюда http://forum.vingrad.ru/forum/Vingrad-help-center.html

Это сообщение отредактировал(а) smalcom - 12.12.2013, 22:46


--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
Фантом
Дата 12.12.2013, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 4
Всего: 49



Цитата(FauLL @  12.12.2013,  20:52 Найти цитируемый пост)
 f1: необъявленный идентификатор 

Совершенно верно. Как насчет объявить f1 в main?

P.S. Вообще-то это какая-то безумная смесь C и C++ (по крайней мере, в отношении ввода-вывода).
PM   Вверх
FauLL
Дата 19.12.2013, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.12.2011

Репутация: нет
Всего: нет



сделал программу, но
 1-не знаю как перегрузить функцию ввода в текстовом файле без r
 2-при работе с текстовым файлов, не правильно выводиться tmp.ves
 читал что нужно преобразовать символьную строку в число с помощью atof, но незнаю как

Код

#include <iostream>
#include <cstdlib>
#include <string>
#include <windows.h>
#include <stdlib.h>
 
 
using namespace std;
 
struct sub 
{
     char name[15];
     double ves;
     char provod[15];
};
 
int WriteFile(FILE *f)
{
    sub arr;
    int n;
    if (f == NULL)
    {
        printf("Error");
        exit(0);
    }
 
    cout<<"Введете количество записей:"<<endl;
    cin>>n;
        cout<<"Введите название эелемента, удельный вес и тип проводимости"<<endl;
    for(int i = 0; i < n; i++)
    {
             cin >> arr.name >> arr.ves >> arr.provod;
        fwrite(&arr, sizeof(sub), 1 , f);
            cout << endl;
    }
    fclose(f);
    return n;
}
 
void ReadFile(FILE *f, int z, char *pr)
{
    sub arr;
    f = fopen("file.dat", "rb");
    if (f == NULL)
    {
        printf("Error");
        exit(0);
    }
    printf("\n");
    printf("Output file:\n");
    cout << "\nПолупроводники:" << endl;
    for(int i = 0; i < z; i++)
    {
        fread(&arr, sizeof(sub), 1 , f);
         if(strcmp(arr.provod, pr) == 0)
     cout << arr.name << ' ' << arr.ves << endl;
    }
    fclose(f);
}
 
//текстовый файл
int WriteFile(FILE *f1, float r)
{
 
    char name[15];
    char ves[15];
    char provod[15];
    int n;
    if (f1 == NULL)
    {
        printf("Error");
        exit(0);
    }
 
    cout<<"Введете количество записей:"<<endl;
    cin>>n;
        cout<<"Введите название эелемента, удельный вес и тип проводимости"<<endl;
    for(int i = 0; i < n; i++)
    {
             cin >> name;
        fputs(name , f1);
        fprintf(f1,"\n");
        cin >> ves ;
        fputs(ves , f1);
        fprintf(f1,"\n");
        cin >>provod;
        fputs(provod , f1);
        fprintf(f1,"\n");
            cout << endl;
    }
    fclose(f1);
    return n;
}
 
void ReadFile(FILE *f1,double m, char *pr)
{
    
    //string name;
    //string ves;
    //string provod;
    sub tmp;
    f1 = fopen("file.txt", "r");
    if (f1 == NULL)
    {
        printf("Error");
        exit(0);
    }
    printf("\n");
    printf("Output file:\n");
    cout << "\nПолупроводники:" << endl;
    for(int i = 0; i < m; i++)
    {
        //fgets(name, , f1);fgets(ves ,, f1);
        fscanf(f1,"%s", &tmp.name);
        fscanf(f1,"%d", &tmp.ves);
        fscanf(f1,"%s", &tmp.provod);
        //cout<<tmp.provod;
        //memset(provod,0,15);
        //cout<<provod;
        //fgets(provod , , f1);
        //cout<<provod;
         if(strcmp(tmp.provod, pr) == 0){
             //cout<<provod;
    
     cout<<tmp.name<<" "; 
     
     cout<< tmp.ves << endl;}cout<<endl;
    }
    fclose(f1);
}
 
int main()
{
     SetConsoleCP(1251);
     SetConsoleOutputCP(1251);
     FILE *f;
      FILE *f1;
     int z,x;
     float r;
     double m;
     char* pr = "полупроводник";
     cout<<"Выберите тип файла:"<<endl;
     cout<<"1-текстовый"<<endl;
     cout<<"2-типизированный"<<endl;
     cin>>x;
     cout<<"левое число"<<endl;
     cin>>r;
     switch(x)
     {case 2:
         f = fopen("file.dat", "wb");
    z = WriteFile(f);
    ReadFile(f, z, pr );
    break;
     case 1:
          f1 = fopen("file.txt", "w");
 m= WriteFile(f1, r);
    ReadFile(f1, m, pr);
     }
     system("pause");
     return 0;
}



Код

#pragma once
 
int WriteFile( FILE *f);
void ReadFile( FILE *f, int z,  char* pr);
int WriteFile( FILE *f1, r);
void ReadFile( FILE *f1, double m,  char* pr);

PM MAIL   Вверх
Фантом
Дата 19.12.2013, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 4
Всего: 49



Уберите весь этот ужас и смотрите сюда. Вот простейшая программа на C++, которая открывает текстовый файл, читает из него строку, число и символ и выводит их на консоль:
Код

#include<fstream> //для файлового ввода-вывода
#include<iostream> //для консольного ввода-вывода
#include<string> // для работы со строками

int main()
{
    std::ifstream fin("input.txt"); //открыли файл для чтения 
    std::string str; // объявили строковую переменную
    double doub; // объявили числовую переменную
    char ch; // объявили символьную переменную
    fin >> str >> doub >> ch; // прочитали их из файла
    fin.close(); // закрыли файл
    std::cout << str << " " << doub << " " << ch << std::endl; // вывели все на экран
    return 0;
}


Все. Теперь делайте свою задачу по образцу.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0791 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.