Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2017, 19:42   #1
OlgaB
 
Регистрация: 28.10.2017
Сообщений: 5
Сообщение Помогите С решением задачи на С ++

Не могу понять что не так с программой и почему она криво работает, пыталась сделать через строковые функции, но только сильнее запуталась и пытаюсь сделать через массивы. Если делать через строковые функции то кто подскажет с помощью каких , пробывала исп метод пузырька, но не до конца его поняла. И пока делала без вывода на новый файл( т.к. надо бы с начала с этим разбираться если кто хотя бы подскажешь где толковый материал почитать как это делать , буду очень благодарна ).
Вот код (текст не стала прикладывать, по понятным причинам) :

Код:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <cstring>
#include <cctype>
#include <string.h>
using namespace std;

void main()
{
	setlocale(LC_CTYPE, "rus");
	ifstream in("text.txt");
	char str[10][80], w[400][80];
	char z;
	int kol[10];
	int i, j, k = 0, s = 0, l, max = 0, m = 0, q = 0, r;

	while (!in.eof())
	{
		in.getline(str[k], 80);
		k++;
	}
	in.close();


	for (i = 0; i < 10; i++)
		kol[i] = 0;

	for (int i = 0; i<k; i++)
	{
		for (int j = 0; j < strlen(str[i]); j++)
		{
			cout << str[i][j];
			if (isalpha((unsigned char)str[i][j]) == 0)
				kol[i]++;
		}
		cout << "\n";
	}
	cout << "Chislo slov po strokam\n";
	for (i = 0; i < 10; i++)
	{
		if (kol[i] != 0)
			kol[i] = kol[i] + 1;
		cout << kol[i] << " ";
	}
	cout << "\n";

	for (i = 0; i<10; i++)
		m = m + kol[i];
	cout << "Vsego slov: " << m << endl;

	for (i = 0; i < k; i++)
	{
		l = 0;
		if (s != 0)
			s++;
		for (j = 0; j < strlen(str[i]); j++)
		{
			if (str[i][j] == ' ')
			{
				s++;
				l = j + 1;
			}
			if (isalpha((unsigned char)str[i][j]))
				w[s][j - l] = str[i][j];
		}
	}

	
	for (r = 0; r<m; r++)
	{
		for (i = 0; i < m; i++)				//po slova v stroke
		{
			q = 0;
			for (j = 0; j < 80; j++)       ////po simvolam v slovah
			{
				if ((w[i][j] > w[i + 1][j]) && (q == 0))
				{
					q++;						//schet bila li uzhe sovershena zamena
					for (l = 0; l < 80; l++)
					{
						z = w[i][l];
						w[i][l] = w[i + 1][l];
						w[i + 1][l] = z;
						

					}
				}
			}
		}
	}
	

	cout << "Vse slova\n";
	for (i = 0; i < m; i++)
	{
		for (j = 0; j < 15; j++)
			cout << w[i][j];
		cout << "\n";
	}
	system("pause");
}
Изображения
Тип файла: png 3.png (27.9 Кб, 140 просмотров)

Последний раз редактировалось OlgaB; 28.10.2017 в 19:47.
OlgaB вне форума Ответить с цитированием
Старый 28.10.2017, 20:36   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А при чём тут пузырёк?
Это же сортировка... А у тебя проверка (перебор например)...

Я не понимаю, что значит: "слова, упорядоченные по алфавиту"?

В моём представлении, буквы могут быть упорядоченные по алфавиту (в конкретном слове). Например: "bos", "nop",
а вот "candy" - не упорядоченное, т.к. после "с" идёт "а", а по алфавиту - наоборот...
ura_111 вне форума Ответить с цитированием
Старый 28.10.2017, 20:59   #3
OlgaB
 
Регистрация: 28.10.2017
Сообщений: 5
Восклицание

ну про пузырек просто пыталась применить для перебора слов,а про алфавитный порядок имеется ввиду то что необходим такой порядок :
АА
АБ
АВ
...
ЯЯ
OlgaB вне форума Ответить с цитированием
Старый 28.10.2017, 21:30   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Расскажи в двух словах что ты делаешь.
Зачем тебе 2-й массив "w"?

Ты делишь строчки на отдельные слова и записываешь в "w"?..

Расскажи, что ыт хотела сделать...
ura_111 вне форума Ответить с цитированием
Старый 28.10.2017, 22:12   #5
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

К предыдущему вопросу: почему у тебя в коде фигурирует число "80"?

А если меньше будет?
Будет ошибка или пустое переприсвоение?
ura_111 вне форума Ответить с цитированием
Старый 28.10.2017, 22:20   #6
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Кстате, а зачем тебе "setlocale(LC_CTYPE, "rus");" если ты везде пишешь на анг.?
ura_111 вне форума Ответить с цитированием
Старый 28.10.2017, 22:23   #7
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

И ещё одно: поищи на форуме примеры программ.
Дело в том, ты далеко не первая кто интересуется этой темой (перебора букв, "все возможные комбинаций" или что-то подобное)...
ura_111 вне форума Ответить с цитированием
Старый 29.10.2017, 01:58   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию



Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с решением задачи Степанн Помощь студентам 3 01.12.2014 22:26
Помогите с решением задачи в C++ Bruges Помощь студентам 1 15.11.2014 00:13
помогите с решением задачи Ainur Помощь студентам 6 23.05.2009 11:42
Помогите с решением задачи!Please! Инзия Помощь студентам 3 11.03.2007 07:50