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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2009, 00:39   #1
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию С (Си) - строки (обработка символьных данных) - прощу помочь

Добрый вечер!
Ну, мне как всегда "повезло". Достался вариант, который я даже примерно не знаю как делать.
Сегодня подходил к преподавателю, так и так, помогите... Кое-что разобрали, но все-равно не все ясно.

Итак, сама суть задания:
для каждого слова заданного предложения указать долю гласных. Определить слово, в котором доля гласных максимальная.
Весело... Пока дошел домой, половину забыл, а каляки-маляки толком не разобрал. То,что мне написал препод, выкладываю отдельно.

Саму программу (как мог) писать начал. Пока договорились так: до субботы (у нас еще в субботу пара) надо написать программу, которая будет отделять слова из предложения и заполнять ими массив.

И вторая половина: просто посчитать количество гласных. Надо принять, что весь текст заполнен маленькими АНГЛИЙСКИМИ буквами (что исключает перебор заглавных букв).

Вот что у меня вышло (точнее, не вышло ):
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main ()

int i;


//char ps;
char str[]="Testing text";
char str2[100];
strcpy (str2,str);
int n=0;
char *words[100];
char ps=str2; words[0]=str2;
	n=1;
	while (*ps !='\0')
	{
	if(*ps==' ')
	words[n]=*[ps+1];
	ps='\0';
	ps++;
	}

    char A;
    {
    A=*ps2;
    switch(A)
			{
			case 'a'; case 'e'; case 'i'; case 'o'; case 'u';
			case 'y';
			k++;
			}
    char strtemp [100];
    strcpy (strtemp, ps2);
    k=myfunc(strtemp);
    }

for (i=0; i<n; i++);
{
K=myfunc(words[i]);


}
Выдает аж 15-ть ошибок. С начала вообще 18 было, 3 сам нашел. Но все равно их больше чем текста.

Я Вас очень прошу: помогите найти где что не правильно. И, очень желательно, объяснить. Чтоб я понимал где не так и чего оно ругаться. Всю программу пока не надо, только часть, которую описал выше.

Всем, кто откликнется, огромное спасибо!!!
Вложения
Тип файла: rar Zadaniya.rar (444.6 Кб, 9 просмотров)
MR_Andrew вне форума Ответить с цитированием
Старый 23.12.2009, 00:41   #2
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Да, забыл. Работаем на Borland C++ 3.1
MR_Andrew вне форума Ответить с цитированием
Старый 23.12.2009, 01:12   #3
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

вот держи остались только ошибки связанные со switch так как я вообще не понял смысл его использования, пример использования switch можешь посмотреть в хелпе.
Сразу говорю кодом я тут не интересовался а просто поправил ошибки
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


void main ()
{
	int i;


	//char ps;
	char str[]="Testing text";
	char str2[100];
	int k;
	strcpy (str2,str);
	int n=0;
	char K;
	char *words[100];
	char *ps=str2; words[0]=str2;
	n=1;
	while (*ps !='\0')
	{
		if(*ps==' ')
		words[n]=(ps+1);
		ps='\0';
		ps++;
	}

	 char A;
	 {
		A=*ps;
		switch(A)
			{
			case 'a'; case 'e'; case 'i'; case 'o'; case 'u';
			case 'y';
			k++;
			}
		char strtemp [100];
		strcpy (strtemp, ps);
		k=myfunc(strtemp);
	 }

	for (i=0; i<n; i++);
	{
		K=myfunc(words[i]);
	}
}

Последний раз редактировалось Nitrino; 23.12.2009 в 01:15.
Nitrino вне форума Ответить с цитированием
Старый 23.12.2009, 01:16   #4
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Nitrino
Огромное Вам спасибо! Теперь буду сверять со своим, у меня цель понять, а не тупо сдать.

А свич - для простоты. Загнать в цикл - я там заблужусь
Программа - как можно проще. Вот мне препод и посоветовал: "в лоб научись делать. Поймешь это - пойдем дальше". Так что тренируюсь пока как умею и хоть как-то понимаю.
MR_Andrew вне форума Ответить с цитированием
Старый 23.12.2009, 01:29   #5
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

ну да разбирайся по немногу, только свитч обычно используется для разного ода переключений, а в циклах тебе полюбому придётся разбираться ибо без них невозможно писать программы, и в них нет ничего сложного..
Nitrino вне форума Ответить с цитированием
Старый 23.12.2009, 01:32   #6
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

кстати что бы выдёргивать слова из строки тебе понадобится strtok почитай про него))
Nitrino вне форума Ответить с цитированием
Старый 23.12.2009, 15:23   #7
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Цитата:
Сообщение от Nitrino Посмотреть сообщение
ну да разбирайся по немногу, только свитч обычно используется для разного ода переключений, а в циклах тебе полюбому придётся разбираться ибо без них невозможно писать программы, и в них нет ничего сложного..
да понятно, что разобраться придется в любом случае. вот только учиться осталось неделю, а еще эта лабораторная и ргр, но ее я более-менее знаю, там площадь фигуры через интегралы 3-а методами .
MR_Andrew вне форума Ответить с цитированием
Старый 23.12.2009, 15:28   #8
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Цитата:
Сообщение от Nitrino Посмотреть сообщение
кстати что бы выдёргивать слова из строки тебе понадобится strtok почитай про него))
Да слова выдергивать через цикл вайл будем и ими заполнять массив, так мне обьяснили и даже понял.
сразу вопрос созрел: еще надо сделать вывод промежуточных результатов, для уточнения (правильно ли работает). как лучше сделать и обозвать, через тот же принтф?
MR_Andrew вне форума Ответить с цитированием
Старый 23.12.2009, 18:51   #9
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

Цитата:
как лучше сделать и обозвать
Жестока ты с ним)))
в том месте где тебе нужно вывести промежуточное значение и пишешь
Код:
printf("...", ...);
Nitrino вне форума Ответить с цитированием
Старый 23.12.2009, 19:01   #10
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Цитата:
Сообщение от Nitrino Посмотреть сообщение
Жестока ты с ним)))
в том месте где тебе нужно вывести промежуточное значение и пишешь
Код:
printf("...", ...);
Спасибо, буду пробовать
MR_Andrew вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка символьных данных и текстовых файлов Skrip Общие вопросы C/C++ 13 10.06.2009 20:51
Pascal. Обработка символьных данных. NitriNKa Помощь студентам 3 25.04.2009 15:15
Обработка символьных данных Normand Паскаль, Turbo Pascal, PascalABC.NET 6 13.04.2009 17:32