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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
StenMarsh
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 10
#1

Работа со строками - C++

26.11.2008, 02:45. Просмотров 1260. Ответов 9
Метки нет (Все метки)

Всем доброго времени суток! Я учу С++ (в вузе) вроде всё делал сам но вот столкнулся с проблемой которую уже долго не магу решить
Вобщем вылаживаю задание, просьба помочь
Работа со строками. С клавиатуры вводится последовательность строк. Длина каждой строки – не более 80 символов. Строки состоят из слов, разделенных знаками пунктуации или пробельными символами. Количество строк заранее не известно. Окончание ввода – пустая строка. Для каждой строки захватывать порцию динамической памяти. Использовать массив указателей (100 элементов). Разместить строки в динамической памяти и выполнить соответствующее задание.
Это шапка её я сделал. Но вот ещё есть два задания:
1) Подсчитать к-во предложений. Концом предложения считать . ! ?
2) Вывести предложения, не содержащие запятых.
ну просто не получается этого сделать(((((
Я уже как писал сделал шапку и вобщем вот:


Код
#include<stdio.h.>
#include<string.h>
#include<iostream.h>
void main()
{
	int i;
	char s[80];
	char *ps[100]={0};
	for (i=0;i<100;i++)
	{
		fgets(s,80,stdin);
		if (strlen(s)==1) break;
		ps[i]=new char [strlen(s)];
		strcpy(ps[i],s);
	}
}
Огромная просьба продолжить эту программу и чем быстрее тем лучше. Главное что бы текст был прост и что бы не было никаких функций (кроме void main() конечно)
ПС занимаю программированием первый год так что прошу не судить сильно если не так что пишу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2008, 02:45     Работа со строками
Посмотрите здесь:

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

Работа с строками - C++
С клавиатуры вводится строка. Разработать программу, которая реализует указанные действия. а) замінює всі великі літери, що входять до...

Работа со строками - C++
Помогите пожалуйста нужна функция копирования из одной строки в другую начиная с к символов.Вот прототип void copy(char *str1,int k,char...

Работа со строками - C++
Имеется задачка (олимпиадная, но олимпиада уже прошла): Новый кодовый замок для владельцев нетбуков представляет головоломку не только...

Работа со строками - C++
ммм, в общем задание такое: Если честно чувствую себя тупым, читая это задание... Препод сказал, что строка вводится без пробелов...

Работа со строками - C++
Вставить после вхождения строки str подстроку str1. Попытался сам сделать, но дальше этого работа не идёт. Нужна помощь. #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alirp
55 / 50 / 1
Регистрация: 04.05.2008
Сообщений: 273
26.11.2008, 08:42     Работа со строками #2
Ну на счет первого задания, то тебе надо завести счетчик, например
int c = 0; затем, после того, как ты ввел все строки, и скопировал их в динамическую память, тебе надо в этом же цикле, завести еще один цикл, с проверкой каждого символа на ".!?", если такой символ встречается то значение счетчика увеличиваешь на единицу, в конце значение переменной "c" и будет содержать количество предложений.

Добавлено через 3 минуты 50 секунд
Во втором задании, ты так же в ранее созданом цикле (из первого задания) можешь сравнивать каждый симовол с "," если она ни разу не встретилась до появления одного из символов ".!?" то выводи эту строчку на экран.
StenMarsh
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 10
26.11.2008, 10:57  [ТС]     Работа со строками #3
Цитата Сообщение от Alirp Посмотреть сообщение
Ну на счет первого задания, то тебе надо завести счетчик, например
int c = 0; затем, после того, как ты ввел все строки, и скопировал их в динамическую память, тебе надо в этом же цикле, завести еще один цикл, с проверкой каждого символа на ".!?", если такой символ встречается то значение счетчика увеличиваешь на единицу, в конце значение переменной "c" и будет содержать количество предложений.

Добавлено через 3 минуты 50 секунд
Во втором задании, ты так же в ранее созданом цикле (из первого задания) можешь сравнивать каждый симовол с "," если она ни разу не встретилась до появления одного из символов ".!?" то выводи эту строчку на экран.
А можеш выкинуть текст? хотя бы второго задания
Alirp
55 / 50 / 1
Регистрация: 04.05.2008
Сообщений: 273
26.11.2008, 11:45     Работа со строками #4
Цитата Сообщение от StenMarsh Посмотреть сообщение
А можеш выкинуть текст? хотя бы второго задания
У меня сейчас времени на это нет, работы много, если есть конкретные проблемы при реализации, постараюсь помочь.
StenMarsh
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 10
26.11.2008, 12:06  [ТС]     Работа со строками #5
Цитата Сообщение от Alirp Посмотреть сообщение
У меня сейчас времени на это нет, работы много, если есть конкретные проблемы при реализации, постараюсь помочь.
Да у меня проблема в том что эту работу ещё в тот четверг нада было сдать: А так ладно, Но тебе за помощь спс
StenMarsh
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 10
01.12.2008, 00:02  [ТС]     Работа со строками #6
Цитата Сообщение от Alirp Посмотреть сообщение
У меня сейчас времени на это нет, работы много, если есть конкретные проблемы при реализации, постараюсь помочь.
Если можеш то помоги разобраться с ошибкой во втором задании. Первое вроде пашет


Код
#include <string>
#include <iostream>
using namespace std;
#include <windows.h>
void main()
{
	char vn[]="Введите ваш текст",
		vb[]="Колличество предложений в вашем тексте:";
	CharToOem(vn,vn);
	CharToOem(vb,vb);
	int q=0,w,e,t=0;
	char *pc[100];
	char c[80];
	printf("%s:\n",vn);
	for (int i=0;i<100;i++)
	{
		fgets (c,100,stdin);
		w=strlen(c);
		if(w==1)break;
		pc[i]=new char[w];
		strcpy(pc[i],c);
		q++;
	}
	for (int j=0;j<q;j++)
	{
		e=strlen(pc[j]);
		for(int r=0;r<e;r++)
		{
			if(pc[j][r]=='.'||pc[j][r]=='!'||pc[j][r]=='?')t++;
		}
	}
	printf("%s%d\n",vb,t);
}
Помогите плз! Это первая часть задания. А вот вторую я не магу сделать(((( вроде всё верно вишу и ничего. Вот то что я написал
Код
#include <windows.h>
#include <stdio.h>
#include <string.h>
void main()
{
	char vn[]="Введите ваш текст",
		vb[]="Колличество предложений в вашем тексте:";
	CharToOem(vn,vn);
	CharToOem(vb,vb);
	int q=0,w,e,t=0;
	char *pc[100];
	char c[80];
	printf("%s:\n",vn);
	for (int i=0;i<100;i++)
	{
		fgets (c,100,stdin);
		w=strlen(c);
		if(w==1)break;
		pc[i]=new char[w];
		strcpy(pc[i],c);
		q++;
	}
	for (int j=0;j<q;j++) 
	{ 
		int pred_start = 0; // позиция начала предложения 
		int flag = 0; 
		e=strlen(pc[j]); 
		for(int r=0;r<e;r++) 
		{ 
			if(pc[j][r]==',') flag = 1; // если находим запятую, то флаг снимаем 
			if(pc[j][r]=='.'||pc[j][r]=='!'||pc[j][r]=='?') // конец предложения 
			{ 
				if (flag = 0) // если запятую не обнаружили 
				{ 
					// тут выводим предложение начиная с позиции pred_start, заканчива текущей r 
					for (int a = pred_start; a <= r; a++) printf("%c", pc[j][a]); 
					printf("\n"); 
				};
				flag = 0; // снова флаг 
				pred_start = r+1; // нвчало нового предложения 
			} 
		} 
	}  
}
если можете то помагите или же справте что в тексте не верно.

Добавлено через 6 часов 5 минут 13 секунд
Неужели никто не знает в чём у меня ошибка?
я же уже не прошу написать прогу а просто исправить мою :-\
Alirp
55 / 50 / 1
Регистрация: 04.05.2008
Сообщений: 273
01.12.2008, 08:43     Работа со строками #7
Ты хотя бы опиши, что у тебя за ошибка, приведи пример, что ты вводишь, что у тебя выводит программа, а то не совсем понятно, что искать.

Добавлено через 3 минуты 19 секунд
Цитата Сообщение от StenMarsh Посмотреть сообщение
if (flag = 0) // если запятую не обнаружили
Нашел я твою ошибку, очень распостраненная, сам так раньше ошибался, вобщем ты делаешь не операцию сравнения на 0, а присваивание переменной flag значение 0
правильно будет:
Код
if (flag == 0)
StenMarsh
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 10
01.12.2008, 21:22  [ТС]     Работа со строками #8
Бесконечно благодарен!
Там ошибка ещё одна была но с флагом основная.
StarWorm
17 / 16 / 4
Регистрация: 20.11.2008
Сообщений: 81
02.12.2008, 17:11     Работа со строками #9
Проблему решил?!?!?!
Ну а вообще эту прогу можно было написать кодом в 2-3 раза меньше используя функции
strtok() и strstr()...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2008, 22:49     Работа со строками
Еще ссылки по теме:

Работа со строками - C++
Написать программу, которая считывает текст и определяет, сколько в нем слов, состоящих не более чем из четырех букв

Работа со строками - C++
Всем доброго времени суток. Я собрался поступать (в свои-то 22, года, балбес), и сдаю ЕГЭ по информатике. Все решаю более-менее в...

Работа со строками в c++ - C++
Всем доброго времени суток! Помогите пожалуйста в решении проблемы: не могу(не знаю) как работать с текстовым файлом. У меня задача при...

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


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

Или воспользуйтесь поиском по форуму:
StenMarsh
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 10
03.12.2008, 22:49  [ТС]     Работа со строками #10
Цитата Сообщение от StarWorm Посмотреть сообщение
Проблему решил?!?!?!
Ну а вообще эту прогу можно было написать кодом в 2-3 раза меньше используя функции
strtok() и strstr()...
да, проблема решена!
В этой лабе нам ещё нельзя было функции делать
Yandex
Объявления
03.12.2008, 22:49     Работа со строками
Ответ Создать тему
Опции темы

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