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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2011, 20:42   #1
mdhssnexx
Новичок
Джуниор
 
Регистрация: 15.03.2011
Сообщений: 2
По умолчанию Косяк в программе

Здравствуйте, помогите, пожалуйста.


Программа работает, но только для первой строки. А нужно, чтобы для всего файла.

Цитата:
/*вывести на экран текст, составленный из последних букв всех слов файла*/
#include <stdafx.h>
#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main()
{
char stroka [120];
char delimited[] = ",. ;:+-*/?!1234567890"; //разделители-и-и!
char *word, ch; //указатель на слово и символ
int p; //инициализируем будущую позицию искомых элементов
FILE *fi; //указатель на открытие файла
fi = fopen ("text.txt", "r"); //открытие файла для чтения
while ( NULL != fgets(stroka, 120, fi)) //сканирование файла
{
cout << stroka << endl; //вывод файла на экран

word = strtok(stroka, delimited); //разбиваем на лексемы, ограниченные разделителями, вместо знака разделителя записываем признак конца строки

while( word != NULL)
{
p=strlen(word)-1; //позиция последней буквы слова
ch=word[p]; //сама буква собственно
cout << ch; //выводим ее на экран как составляющую искомого текста
word = strtok (NULL, delimited); //переходим к следующему слову
}
}
getchar();
getchar();
return 0;

}

Аналогичная проблемма. Вот даже и не знаю, что не так((

Цитата:
/*27. Вывести на экран все слова, содержащие наибольшее количество гласных латинских букв ( a, e, i, u, o).*/
#include <stdafx.h>
#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main()
{
char stroka [120];
char delimited[] = ",. ;:+-*/?!1234567890"; //разделители
char *word, *ch; //указатель на слово
int max=0, max1,l,m,n,p,r,i;
FILE *fi;
fi = fopen ("text.txt", "r");
while ( NULL != fgets(stroka, 120, fi))
{
cout << stroka << endl;

word = strtok(stroka, delimited);
while( word != NULL)
{
for (i=0;i<strlen(word);i++)
{

if (word[i] == 'a') l++;
if (word[i] == 'e') m++;
if (word[i] == 'i') n++;
if (word[i] == 'u') p++;
if (word[i] == 'o') r++;
}
if ((l>=1)&&(m>=1)&&(n>=1)&&(p>=1)&&(r >=1))
{
max1 = l+m+n+p+r;
if (max1>max)
{
max=max1;
ch=word;
}
}
l=0;
m=0;
n=0;
p=0;
r=0;
word = strtok(NULL, delimited);
}
}
if (max!=0) cout << ch;
getchar();
}
mdhssnexx вне форума Ответить с цитированием
Старый 16.03.2011, 03:16   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

у вас вывод в стиле С++ , а работа с файлом в стиле С, определитесь все таки!

Код:
	char line[80];
	char delimited[] = ",. ;:+-*/?!1234567890\n";
	char *p;

	FILE *fp = fopen ("1.txt","rt");

	while (fgets(line,80,fp)) {

		p = strtok(line,delimited);

		do {
			putchar(p[strlen(p)-1]);
			p = strtok(NULL,delimited);
		} while (p);

	}

	puts("");

	fclose(fp);
/*27. Вывести на экран все слова, содержащие наибольшее количество гласных латинских букв ( a, e, i, u, o).*/

СКОЛЬКО слов понимать под содержащими наибольшее количество гласных латинских букв ( a, e, i, u, o)?
Бесят такие формулировки задания.

Последний раз редактировалось onewho; 16.03.2011 в 03:21.
onewho вне форума Ответить с цитированием
Старый 16.03.2011, 10:37   #3
mdhssnexx
Новичок
Джуниор
 
Регистрация: 15.03.2011
Сообщений: 2
По умолчанию

Цитата:
Сообщение от onewho Посмотреть сообщение
у вас вывод в стиле С++ , а работа с файлом в стиле С, определитесь все таки!

Код:
	char line[80];
	char delimited[] = ",. ;:+-*/?!1234567890\n";
	char *p;

	FILE *fp = fopen ("1.txt","rt");

	while (fgets(line,80,fp)) {

		p = strtok(line,delimited);

		do {
			putchar(p[strlen(p)-1]);
			p = strtok(NULL,delimited);
		} while (p);

	}

	puts("");

	fclose(fp);
/*27. Вывести на экран все слова, содержащие наибольшее количество гласных латинских букв ( a, e, i, u, o).*/

СКОЛЬКО слов понимать под содержащими наибольшее количество гласных латинских букв ( a, e, i, u, o)?
Бесят такие формулировки задания.
Спасибо, выручили =)
Принцип ясен, вторую задачку сделаю сама)
Я говорила преподавателю, что условие какое-то непонятное, не помню, что она ответила, но задачка так и осталась на мне в таком виде)
mdhssnexx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите косяк в коде Kingcss Общие вопросы Delphi 2 02.01.2011 08:35
косяк в RadioButton NetSpace Общие вопросы Delphi 4 07.12.2010 13:46
косяк с подключением momuma Помощь студентам 0 23.01.2010 21:48
Косяк в коде Dimon88 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 18.09.2008 18:09
Косяк Sanctuar Помощь студентам 1 18.06.2007 07:36