С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 21.12.2016
Сообщений: 8
1

Задача по файлам и строкам

21.12.2016, 14:24. Показов 569. Ответов 6

Author24 — интернет-сервис помощи студентам
Даны 2 текстовых файла. В третий файл записать только те строки из 1-го файла, которые имеются во втором файле и в них есть не менее 3-х букв 'а'(на латинице).
---
Вот мой недокод:
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
#include "stdafx.h"
#include <iostream>
#include "locale.h"
#include "string.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    FILE *f1,*f2,*f3;
    int z;
    char a;
    char s1[250],s2[250];
    setlocale(LC_ALL,"rus");
    f1=fopen("C:\\1.txt","r");
    f2=fopen("C:\\2.txt","r");
    f3=fopen("C:\\3.txt","w");
    if(f1==NULL || f2==NULL || f3==NULL)
    {
        printf("Один из файлов не удалось открыть");
        system("pause");
        return 0;
    }
    z=0;
    while(!feof(f2))
    { 
        fgets(s2,250,f2);
        if(s2 == 'a')
            z++;
        //{
            
        //  strcpy(kor,str);
        //}
    }
    while(!feof(f1))
        fgets(s1,250,f1);
 
    if(a>3||s1==s2)
        fputs(s1,f3);
    system("pause");
    return 0;
}
Я только начинаю , и еще мало ориентируюсь в ошибках и причинах их возникновения. Так вот, выводит 2 штуки :
1>d:\оаипп\8\8\8.cpp(29) : error C2446: ==: нет преобразования 'int' в 'char *'
1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>d:\оаипп\8\8\8.cpp(29) : error C2040: ==: "char [250]" отличается по уровням косвенного обращения от "int"

Объясните пожалуйста , как это исправить ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2016, 14:24
Ответы с готовыми решениями:

По текстовым файлам и строкам
Задана последовательность идентификаторов, разделенных сериями пробелов. Последовательность задана...

Задача по файлам
Найдите в файле положение максимального элемента

Задача по файлам в PHP
Привет, ребят, есть у кого нибудь готовая? или не сложно сделать. Безумно вам благодарна! Самой...

Задача по типизированным файлам
Создать файл из 10 положительных чисел. Вывести его на экран в строку. Найти в нём максимальное...

6
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
21.12.2016, 14:51 2
drugbobrov, 1. Ошибка выдается при закомментаренных строках 28-31 ? Там действительно ошибка - неизвестно, кто такие kor, str
2. Строка 36
Цитата Сообщение от drugbobrov Посмотреть сообщение
if(a>3||s1==s2)
В Си так строки не сравниваются. Есть функция strcmp
Кроме того значение переменной 'a' нигде не вычисляется.
1
0 / 0 / 0
Регистрация: 21.12.2016
Сообщений: 8
21.12.2016, 15:01  [ТС] 3
Я исправил некоторые недочеты(такие, как заккомент. строка)
Вы не подскажете , как за один этот if
Цитата Сообщение от Байт Посмотреть сообщение
if(a>3||s1==s2)
поставить данное условие.
(z>3||s1==s2) тоесть сравнить строки с помощью той самой strcmp ?
0
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
21.12.2016, 15:03 4
C
1
if (z>3|| strcmp(s1,s2)==0)
В деталях твоего алгоритма не разбирался. Правка чисто формальная.
1
0 / 0 / 0
Регистрация: 21.12.2016
Сообщений: 8
21.12.2016, 15:22  [ТС] 5
Теперь она хотя бы компилируется не выдавая ошибок, но : "Run-Time Check Failure #3 - The variable 'i' is being used without being initialized."
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
#include "stdafx.h"
#include <iostream>
#include "locale.h"
#include "string.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    FILE *f1,*f2,*f3;
    int z,i;
    char s1[250],s2[250];
    setlocale(LC_ALL,"rus");
    f1=fopen("C:\\1.txt","r");
    f2=fopen("C:\\2.txt","r");
    f3=fopen("C:\\3.txt","w");
    if(f1==NULL || f2==NULL || f3==NULL)
    {
        printf("Один из файлов не удалось открыть");
        system("pause");
        return 0;
    }
    z=0;
    while(!feof(f2))
    { 
        fgets(s2,250,f2);
        if(s2[i] == 'a')
            z++;
        
    }
    while(!feof(f1))
        fgets(s1,250,f1);
 
    if(z>3||strcmp(s1,s2)==0)
        fputs(s1,f3);
    system("pause");
    return 0;
}
0
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
21.12.2016, 17:02 6
Цитата Сообщение от drugbobrov Посмотреть сообщение
The variable 'i' is being used without being initialized."
Так чего ж ты хочешь? Это называется "За что боролись, на то и напоролись" Ты переменную i используешь, и не инициализируешь. Прям так и написано, и так оно и есть.
Я думаю (вангую), что ты хотел написать в строчках 25-26 что-то вроде этого
C
1
2
3
z = 0;
for(i=0; i<strlen(s2); i++)
  if (s2[i]=='a') z++;
Такой код подсчитает количество символов 'a' в строке s2
0
0 / 0 / 0
Регистрация: 21.12.2016
Сообщений: 8
25.12.2016, 07:30  [ТС] 7
Переписал полностью , думаю , что алгоритм правильный , только реализация хромает.
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 "stdafx.h"
#include <iostream>
#include "locale.h"
#include "string.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    FILE *f1,*f2,*f3;
    int z,i;
    char s[250],s2[250];
    setlocale(LC_ALL,"rus");
    f1=fopen("C:\\1.txt","r");
    f2=fopen("C:\\2.txt","r");
    f3=fopen("C:\\3.txt","w");
    
    if(f1==NULL || f2==NULL || f3==NULL)
    {
        printf("Один из файлов не удалось открыть");
        system("pause");
        return 0;
    }
    while(!feof(f1))
        fgets(s,250,f1);
    while(!feof(f2))
        fgets(s2,250,f2);
    if(strcmp(s,s2)==0)
    {
    z=0;
    for(i=0;250;i++)
    {
        if(s[i]='a')
            z++;
 
    }
    }
    if(z>3)
        fputs(s,f3);
    printf("Запись произведена. \n");
        
    fclose(f1);
    fclose(f2);
    fclose(f3);
    system("pause");
    return 0;
}
0
25.12.2016, 07:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2016, 07:30
Помогаю со студенческими работами здесь

Задача по строкам
Дано предложение. Удалить из него слова, состоящие не менее чем из четырех букв, хотя бы одна из...

Задача по строкам
Дана последовательность символов. Определить, является ли она правильной записью вещественного...

Задача по строкам
Вводиться строка, необходимо вывести на экран все слова нечетной длинны, в которых не содержится...

Задача по строкам
Помогите с Паскалем! Задана строка символов. Группы символов, разделенные пробелом и не...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru