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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
#1

РАБОТА С ТЕКСТОВЫМИ ДАННЫМИ - C++

23.01.2011, 14:02. Просмотров 1677. Ответов 28
Метки нет (Все метки)

1 Написать программу, которая читает с клавиатуры строку символов, преобразует ее и выводит результат на дисплей.
2 Если в строке пробелов меньше, чем цифр, удвоить каждый пробел.
Вот с первым заданием я справился там очень легко , а вот как отличить пробел от цифр и как узнать их количество незнаюнезнаю и как удвоить его тоже.
вот 1 задание помогите сделать дальше
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <string.h>
int main(void)
{
    char str[100];
    gets(str);
    printf("%s", str);
    printf("\n");
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2011, 14:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос РАБОТА С ТЕКСТОВЫМИ ДАННЫМИ (C++):

Работа с текстовыми данными в символьных массивах - C++
Помогите написать программу с помощью строки: В строке символов длиной 50 выявить дублирование букв и выдать их на экран

Работа с текстовыми файлами - C++
Дай текстовы файл F. Группы символов, розделены пропусками (одним или нескольками) или вообще их не имеют (будем как и раньше называть их...

Работа с текстовыми файлами - C++
Здравствуйте, уважаемые !!! Появились проблемы во время решения задачи. Никак не могу решить проблему. Задача такова: Существует...

Работа с текстовыми файлами - C++
Есть программа, которая считывает массив структур с текстового файла, выполняет сортировку и результат выводит в другой текстовый файл, но...

Работа с текстовыми файлами в С++ - C++
Каким образом можно организовать эту программу, в частности определение цифры и латинской буквы и их распределение по файлам. Чот в тупике...

Работа с текстовыми файлами - C++
Мне нужно разработать программу, выводит на экран по желанию пользователя: 1) N первых строк файла; 2) N последних строк файла; 3) вывести...

28
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
23.01.2011, 14:17 #2
Цитата Сообщение от Steam.dll Посмотреть сообщение
а вот как отличить пробел от цифр и как узнать их количество незнаюнезнаю
не очень сложно.
C++
1
2
3
for(int i=0; i<sizeof(str)/sizeof(str[0]); i++){
        if(str[i] == ' '){
            count++;}}
1
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
23.01.2011, 14:25  [ТС] #3
я попробывал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <string.h>
int main(void)
{
    char str[100];
    gets(str);
    printf("%s", str);
    printf("\n");
    for(int i=0; i<sizeof(str)/sizeof(str[0]); i++)
    {
        if(str[i] == ' ')
        {
           couтt++;
        }
    }
        
}
компелятор выдаёт ошибку с
C++
1
couтt++;
это cout с опечаткой или что то мне не известное?
И еще я не понимаю что такое
C++
1
sizeof
мы еще такое не проходили и я не совсем это понимаю разьясните .
0
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
23.01.2011, 14:27 #4
Цитата Сообщение от Steam.dll Посмотреть сообщение
Если в строке пробелов меньше, чем цифр, удвоить каждый пробел
создать еще один массив, в котором хранятся цифры от 0 до 9. далее делаем вложенный цикл, который каждый проверят цифра ли введена и если да, то счетчик учеличиваем на единицу. дальше условие, если цифр меньше пробелов, то опять же делаем цикл, в котором элементам массива с символом ' ' присваивается просто значение с двумя пробелами. все довольно просто ..)
1
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
23.01.2011, 14:28 #5
переменная count не объявлена + она у вас неправильно написана
sizeof - это определение размера
считаете количество пробелов, потом создаете новую строку равную strelen(str) + count(кол-во пробелов) + 1(под 0 символ) и туда пишите
1
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
23.01.2011, 14:29 #6
Цитата Сообщение от Steam.dll Посмотреть сообщение
это cout с опечаткой или что то мне не известное?
это переменная count, я просто опечатался ..

Цитата Сообщение от Steam.dll Посмотреть сообщение
мы еще такое не проходили и я не совсем это понимаю разьясните .
эта функция позволяет определить сколько памяти выделяется под переменную. здесь для определения размера цикла мы делим общий объем, выделенный под весь массив, на то что занимает первый элемент массива.
1
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
23.01.2011, 14:57  [ТС] #7
А что такое вложанный цикл?
0
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
23.01.2011, 15:06 #8
Цитата Сообщение от Steam.dll Посмотреть сообщение
А что такое вложанный цикл?
Цыкл в цыкле.
C
1
2
3
4
5
for(int i = 0; i < some_num; ++i)
   for(int j = 0; j < some_num; ++j)//Это и есть вложеный цыкл.
   {
     
   }
1
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
23.01.2011, 15:10  [ТС] #9
а массив с 0-9 должен выглядеть так char dva[]="0123456789";?
и для проверки надо пользоватся функцией isdigit()?
0
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
23.01.2011, 15:24 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include<algorithm>
using namespace std;
 
int main(){
    char c[100]{'\0'};
    char d[100]{'\0'};
    cin.getline(c, sizeof(c));
    int ws=(int)count(c, c+100, ' ');
    int dig=(int)count_if(c, c+100, [](char& c){return c>='0'&&c<='9';});
    cout<<"ws= "<<ws<<"\n"<<"dig= "<<dig<<"\n";
    if(ws<dig){
        for(char* a=c, *b=d; (*b=*a)!='\0'; a++, b++){
            if(*a==' ') *(++b)=' ';
        }
    }
    cout<<d;
}
1
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
23.01.2011, 15:50  [ТС] #11
почему то у меня 12 ошибок выскакивает. Спасибо за помощь но я это не разберу слишком умно для меня.

Добавлено через 20 минут
А как масивы обьявить?
0
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
23.01.2011, 15:53 #12
массивы чего?
Цитата Сообщение от Steam.dll Посмотреть сообщение
char str[100];
вы тут объявляете символьный массив
1
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
23.01.2011, 15:54 #13
список ошибок в студию
1
Steam.dll
3 / 3 / 0
Регистрация: 05.11.2010
Сообщений: 131
23.01.2011, 15:59  [ТС] #14
массив символьный и с цифрами от 0до9. Чтобы их потом сравнитть сколько цифр. и вот ошибки той программы
--------------------Configuration: 1 - Win32 Debug--------------------
Compiling...
1.cpp
C:\Users\Àíäðåé\Desktop\Lab\8\8_1\1.cpp(6) : error C2601: 'c' : local function definitions are illegal
C:\Users\Àíäðåé\Desktop\Lab\8\8_1\1.cpp(6) : error C2063: 'c' : not a function
C:\Users\Àíäðåé\Desktop\Lab\8\8_1\1.cpp(7) : error C2601: 'd' : local function definitions are illegal
C:\Users\Àíäðåé\Desktop\Lab\8\8_1\1.cpp(7) : error C2063: 'd' : not a function
C:\Users\Àíäðåé\Desktop\Lab\8\8_1\1.cpp(10) : error C2059: syntax error : '['
C:\Users\Àíäðåé\Desktop\Lab\8\8_1\1.cpp(10) : error C2143: syntax error : missing ')' before '{'
C:\Users\Àíäðåé\Desktop\Lab\8\8_1\1.cpp(10) : error C2143: syntax error : missing ';' before '{'
C:\Users\Àíäðåé\Desktop\Lab\8\8_1\1.cpp(10) : error C2446: '>=' : no conversion from 'int' to 'char *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
C:\Users\Àíäðåé\Desktop\Lab\8\8_1\1.cpp(10) : error C2040: '>=' : 'char [100]' differs in levels of indirection from 'int'
C:\Users\Àíäðåé\Desktop\Lab\8\8_1\1.cpp(10) : error C2446: '<=' : no conversion from 'int' to 'char *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
C:\Users\Àíäðåé\Desktop\Lab\8\8_1\1.cpp(10) : error C2040: '<=' : 'char [100]' differs in levels of indirection from 'int'
C:\Users\Àíäðåé\Desktop\Lab\8\8_1\1.cpp(10) : error C2059: syntax error : ')'
Error executing cl.exe.

1.obj - 12 error(s), 0 warning(s)
0
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
23.01.2011, 16:06 #15
вот ещё вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main(){
    char c[100]={'\0'};
    char d[100]={'\0'};
    cin.getline(c, sizeof(c));
    int ws=0, dig=0;
    for(char* a=c; *a!='\0'; a++){
        if(*a==' ') ++ws;
        if(isdigit(*a)) ++dig;
    }
    cout<<"ws= "<<ws<<"\n"<<"dig= "<<dig<<"\n";
    if(ws<dig){
        for(char* a=c, *b=d; (*b=*a)!='\0'; a++, b++){
            if(*a==' ') *(++b)=' ';
        }
    }
    cout<<d;
}
1
23.01.2011, 16:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2011, 16:06
Привет! Вот еще темы с ответами:

Работа с текстовыми файлами - C++
Здравствуйте. Сегодня писал программу, в которой нужно считать строки из файла и записать их в новый файл но в обратном порядке, и...

Работа с текстовыми файлами - C++
Люди добрые кто может подскажите)) Задание: Дан текстовый файл, проставить пробелы после знаков препинания &quot;,.?!&quot; если он отсутствует,...

Работа с текстовыми файлами - C++
Есть текстовый файл в котором существует последовательность чисел. Нужно создать текстовый файл содержащий все числа в обратном порядке. ...

Работа с текстовыми файлами - C++
Здравствуйте! Как подсчитать количество букв, которые встретились в тексте двойными? Помогите пожалуйста Добавлено через 23 минуты ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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