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

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

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

Если в строке есть хоть один ноль - вывести в файл output.txt "YES", иначе вывести "NO"; - C++

05.10.2012, 16:12. Просмотров 663. Ответов 5
Метки нет (Все метки)

Задача. В файле input.txt содержится неприрывная строка нулей и единиц. Если в строке есть хоть один ноль - вывести в файл output.txt "YES", иначе вывести "NO";
Ниже то, что пробовал, но не получаеться ничего...
Помогите с кодом.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <string>
using namespace std;
FILE *f1,*f2;
char s[1000];
 
int a;
int main()
{
f1=fopen("input.txt","r+");
f2=fopen("output.txt","w+");    
fscanf(f2,"%s",&s);
for (int i=0; i<strlen(s); i++)
{
if(s=="0") a++;  
}
if(a>0) fprintf(f2,"%s","YES");
else fprintf(f2,"%s","NO");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2012, 16:12     Если в строке есть хоть один ноль - вывести в файл output.txt "YES", иначе вывести "NO";
Посмотрите здесь:

C++ Вывести "Молодой" или "Старый" в зависимости от введенного возраста
C++ Если введено слово "Привет", то вывести "Привет"
C++ Ввести строку. Вывести её, заменив цифры на слова ( 0 - "one", 1 - "two", ...)
C++ Вывести все слова, в которых есть буква "a"
C++ вывести на друк слово "Одинаковые" если эти массивы полностью совпадают,и слово "Разные" в противоположном случае.
C++ Определить первое вхождение символа "d" в строке и вывести слово, в котором оказался этот символ.
C++ Есть ли хоть одна кодировка DOS , в которой был бы символ "номер" ?
C++ Вывести "неа" в случае, если ничего не ввёл в Edit1
C++ Структуры: проверка на наличие среди продавцов фамилии "Иванов" и если есть, то вывести наименование товара
Вывести "Leap Year", если заданный год високосный и "Normal Year" в противном случае C++
Определить и вывести по три в строке числа из заданного диапазона, которые заканчиваются цифрой "5" C++
C++ Невозможно преобразовать "unsigned int" в "output::book_origin"

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
05.10.2012, 16:31     Если в строке есть хоть один ноль - вывести в файл output.txt "YES", иначе вывести "NO"; #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main() {
    FILE* f = fopen("input.txt", "r");
    short c;
    while ((c = getc(f)) != EOF)
        if (c == '0') {
            fclose(f);
            f = fopen("output.txt", "w");
            putc('Y', f);
            putc('E', f);
            putc('S', f);
            fclose(f);
            return 0;
        }
    fclose(f);
    f = fopen("output.txt", "w");
    putc('N', f);
    putc('O', f);
    fclose(f);
    return 1;
}
valeriikozlov
Эксперт C++
4667 / 2493 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
05.10.2012, 17:01     Если в строке есть хоть один ноль - вывести в файл output.txt "YES", иначе вывести "NO"; #3
Цитата Сообщение от mirax Посмотреть сообщение
Ниже то, что пробовал, но не получаеться ничего...
Внимательней будьте:

Цитата Сообщение от mirax Посмотреть сообщение
В файле input.txt содержится неприрывная строка нулей и единиц.
а Вы считываете из файла output.txt (см комментарии):

Цитата Сообщение от mirax Посмотреть сообщение
C++
1
2
f2=fopen("output.txt","w+"); 
fscanf(f2,"%s",&s);// почему f2 ?
mirax
0 / 0 / 0
Регистрация: 05.10.2012
Сообщений: 13
05.10.2012, 19:57  [ТС]     Если в строке есть хоть один ноль - вывести в файл output.txt "YES", иначе вывести "NO"; #4
Спасибо. Все получилось.
Насчет считывания с f2, глюканулу я чего-то. Но если и с f1 считывать, то там код тоже не верный.
valeriikozlov
Эксперт C++
4667 / 2493 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
05.10.2012, 20:20     Если в строке есть хоть один ноль - вывести в файл output.txt "YES", иначе вывести "NO"; #5
есть еще одна ошибка.
вот это:

Цитата Сообщение от mirax Посмотреть сообщение
C++
1
if(s=="0") a++;
заменить на:
C++
1
if(s[i]=='0') a++;
mirax
0 / 0 / 0
Регистрация: 05.10.2012
Сообщений: 13
06.10.2012, 00:28  [ТС]     Если в строке есть хоть один ноль - вывести в файл output.txt "YES", иначе вывести "NO"; #6
Цитата Сообщение от valeriikozlov Посмотреть сообщение
есть еще одна ошибка.
вот это:


заменить на:
C++
1
if(s[i]=='0') a++;
Спасибо, вроде и мой код стал работать. Без ошибок, если кому понадобиться.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <string>
using namespace std;
FILE *f1,*f2;
char s[1000];
 
int a;
int main()
{
f1=fopen("input.txt","r+");
f2=fopen("output.txt","w+");    
fscanf(f1,"%s",&s);
a=0;
for (int i=0; i<strlen(s); i++)
{
if(s[i] == '0') a++;  
}
if(a>0) fprintf(f2,"%s","YES");
else fprintf(f2,"%s","NO");
}
Yandex
Объявления
06.10.2012, 00:28     Если в строке есть хоть один ноль - вывести в файл output.txt "YES", иначе вывести "NO";
Ответ Создать тему
Опции темы

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