Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 10
1

Работа со строками

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

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток! Я учу С++ (в вузе) вроде всё делал сам но вот столкнулся с проблемой которую уже долго не магу решить
Вобщем вылаживаю задание, просьба помочь
Работа со строками. С клавиатуры вводится последовательность строк. Длина каждой строки – не более 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() конечно)
ПС занимаю программированием первый год так что прошу не судить сильно если не так что пишу.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2008, 02:45
Ответы с готовыми решениями:

Работа со строками. Функции работы со строками
Дана строка символов. В заданном тексте определить позицию первой точки ‘ . ‘.

Работа со строками в С++
Здравствуйте, вы бы не могли мне помочь решить такую задачу: Дана строка, представляющая...

Работа со строками
Даны два слова. Для каждой буквы первого слова определить, входит ли она во второе слово....

Работа со строками
#include &lt;iostream&gt; #include &quot;locale.h&quot; using namespace std; char...

9
57 / 53 / 4
Регистрация: 04.05.2008
Сообщений: 272
26.11.2008, 08:42 2
Ну на счет первого задания, то тебе надо завести счетчик, например
int c = 0; затем, после того, как ты ввел все строки, и скопировал их в динамическую память, тебе надо в этом же цикле, завести еще один цикл, с проверкой каждого символа на ".!?", если такой символ встречается то значение счетчика увеличиваешь на единицу, в конце значение переменной "c" и будет содержать количество предложений.

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

Добавлено через 3 минуты 50 секунд
Во втором задании, ты так же в ранее созданом цикле (из первого задания) можешь сравнивать каждый симовол с "," если она ни разу не встретилась до появления одного из символов ".!?" то выводи эту строчку на экран.
А можеш выкинуть текст? хотя бы второго задания
0
57 / 53 / 4
Регистрация: 04.05.2008
Сообщений: 272
26.11.2008, 11:45 4
Цитата Сообщение от StenMarsh Посмотреть сообщение
А можеш выкинуть текст? хотя бы второго задания
У меня сейчас времени на это нет, работы много, если есть конкретные проблемы при реализации, постараюсь помочь.
0
0 / 0 / 0
Регистрация: 26.11.2008
Сообщений: 10
26.11.2008, 12:06  [ТС] 5
Цитата Сообщение от Alirp Посмотреть сообщение
У меня сейчас времени на это нет, работы много, если есть конкретные проблемы при реализации, постараюсь помочь.
Да у меня проблема в том что эту работу ещё в тот четверг нада было сдать: А так ладно, Но тебе за помощь спс
0
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 секунд
Неужели никто не знает в чём у меня ошибка?
я же уже не прошу написать прогу а просто исправить мою :-\
0
57 / 53 / 4
Регистрация: 04.05.2008
Сообщений: 272
01.12.2008, 08:43 7
Ты хотя бы опиши, что у тебя за ошибка, приведи пример, что ты вводишь, что у тебя выводит программа, а то не совсем понятно, что искать.

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

Работа со строками
Задание : 1.Напишите функцию, которая проверяет правильность введенного пользователем пароля...

Работа со строками
Вставить после вхождения строки str подстроку str1. Попытался сам сделать, но дальше этого...

Работа с строками
С клавиатуры вводится строка. Разработать программу, которая реализует указанные действия. а)...

Работа со строками C++
Решил посвятить этой проблеме отдельную тему. В попытке написать ответ к этой задаче на С++...


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

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