Другие языки программирования и технологии
Помогите с программой на си! Программа в описании
Помогите с программой на си! в строке слова разделены пробелами найти кол слов, в которых первый и последние символы совпадают
Помогите с покупкой 30 литров 98го
Gleb Mikhalchenko
Я согласен на 10 литров 95 Euro 5
Глупый вопрос, повторённый дважды, умней не становится. У тебя спрашивали: "Где программа? " - а не текст задания.
1) надо сделать массив из слов
2) посчитать кол-во элементов массива, в которых первый и последние символы совпадают
2) посчитать кол-во элементов массива, в которых первый и последние символы совпадают
читать из файла можно scanf-ом, шаг 1) c = fscanf(MyFile, "%s", &buffer);
fscanf возвращает количество считанных символов, так что длина "слова" уже известна, теперь сравниваешь 0-й и последнисимвол слова, и если они одинаковые, увеличиваешь счетчик на 1, переходишь к шагу 1. fscanf возвращает EOF, когда достигнут конец потока, так что чтобы не получить бесконечный цикл, проверяй возвращаемое из fscanf ззначение на EOF, программа на 5 строк, бесплатно никто не напишет
fscanf возвращает количество считанных символов, так что длина "слова" уже известна, теперь сравниваешь 0-й и последнисимвол слова, и если они одинаковые, увеличиваешь счетчик на 1, переходишь к шагу 1. fscanf возвращает EOF, когда достигнут конец потока, так что чтобы не получить бесконечный цикл, проверяй возвращаемое из fscanf ззначение на EOF, программа на 5 строк, бесплатно никто не напишет
#include <stdio.h
#include <conio.h
#include <locale.h
// функция переводит в нижний регистр
char tolow(char ch)
{
for(int i(65); i <= 90; i++)
if(ch == char(i)) return (char) (i+32);
for(int i(-64); i <= -33; i++)
if(ch == char(i)) return (char) (i+32);
return ch;
}
// функция проверяет является ли символ буквой
bool isalp(char ch)
{
for(int i(65); i <= 90; i++)
if(ch == (char)i) return true;
for(int i(97); i <= 122; i++)
if((int)ch == i) return true;
for(int i(-64); i <= -1; i++)
if(ch == (char)i) return true;
return false;
}
// функция проверяет на совпадение первой и последней букв в слове
bool isEqual(char *st, int a)
{
char begin, end;
begin = st[a]; // первый символ слова
// в этом цикле находим конец слова
for(; isalp(st[a]); ++a);
end = st[a-1]; // последний символ слова
//cout << "begin = " << begin << " end = " << end << endl;
printf("begin = %c, end = %c\n", begin, end);
// если символы (без учёта регистра) совподают, то возвращаем true
//if(tolower(begin) == tolower(end)) return true;
if(tolow(begin) == tolow(end)) return true;
// возвращаем false, если не совподают
else return false;
}
int main(){
setlocale(0,"");
char *s = "Привет Пфп Яля аМа мир. Мфм Hello world. Aba zaZ This is me. Ships are here. mom";
int count(0); // счётчик слов
bool inWord = false; // переменная для определения находится ли в слове символ
// выводим строку
//cout << s << endl;
printf("%s\n",s);
for(int i(0); s[i]; i++)
{
//if(i == 0 || s[i] == ' ' && !inWord) // считаем количество слов
if(isalp(s[i]) && !inWord)
{
inWord = true;
// счётчик должен увеличиваться только, если первай и последняя
// буквы совподают, поэтому проверку этого условия делаем в функции
if(isEqual(s,i))
count++;
} else if(s[i] == ' ') inWord = false;
}
// выводим результат
//cout << "Number of words is " << count << endl;
printf("Number of words is %i.\n", count);
//printf("%i",'А');
getch();
return 0;
}
#include <conio.h
#include <locale.h
// функция переводит в нижний регистр
char tolow(char ch)
{
for(int i(65); i <= 90; i++)
if(ch == char(i)) return (char) (i+32);
for(int i(-64); i <= -33; i++)
if(ch == char(i)) return (char) (i+32);
return ch;
}
// функция проверяет является ли символ буквой
bool isalp(char ch)
{
for(int i(65); i <= 90; i++)
if(ch == (char)i) return true;
for(int i(97); i <= 122; i++)
if((int)ch == i) return true;
for(int i(-64); i <= -1; i++)
if(ch == (char)i) return true;
return false;
}
// функция проверяет на совпадение первой и последней букв в слове
bool isEqual(char *st, int a)
{
char begin, end;
begin = st[a]; // первый символ слова
// в этом цикле находим конец слова
for(; isalp(st[a]); ++a);
end = st[a-1]; // последний символ слова
//cout << "begin = " << begin << " end = " << end << endl;
printf("begin = %c, end = %c\n", begin, end);
// если символы (без учёта регистра) совподают, то возвращаем true
//if(tolower(begin) == tolower(end)) return true;
if(tolow(begin) == tolow(end)) return true;
// возвращаем false, если не совподают
else return false;
}
int main(){
setlocale(0,"");
char *s = "Привет Пфп Яля аМа мир. Мфм Hello world. Aba zaZ This is me. Ships are here. mom";
int count(0); // счётчик слов
bool inWord = false; // переменная для определения находится ли в слове символ
// выводим строку
//cout << s << endl;
printf("%s\n",s);
for(int i(0); s[i]; i++)
{
//if(i == 0 || s[i] == ' ' && !inWord) // считаем количество слов
if(isalp(s[i]) && !inWord)
{
inWord = true;
// счётчик должен увеличиваться только, если первай и последняя
// буквы совподают, поэтому проверку этого условия делаем в функции
if(isEqual(s,i))
count++;
} else if(s[i] == ' ') inWord = false;
}
// выводим результат
//cout << "Number of words is " << count << endl;
printf("Number of words is %i.\n", count);
//printf("%i",'А');
getch();
return 0;
}
Похожие вопросы
- Помогите написать программу со switch в СИ
- Помогите доделать программу пожалуйста ) На языке Си
- Помогите написать программу на Си
- Помогите с программой на Си/Си++
- Помогите написать программу на С. Тема Составление программ с использованием массивов
- Помогите написать программу выключения компьютера на С++
- Помогите исправить программу
- помогите написать программы в ассемблере
- Помогите написать программу в с++
- помогите с программой!!! (Си) Двумерный массив+строки