2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Программирование на Си (помогите)
Сообщение24.10.2006, 10:11 


23/10/06
3
СПб
Здравствуйте!
Помогие доделать программу, а то я замучился.
Я знаю, что в программу надо добаваить еще один массив для разбивания предложения по словам и подсчета количества букв в слове.

/* Ввести строку.
Вывести её, заменив сокращения на полные слова
( т.к. - "так как", т.е. - "то есть", т.д. - "так далее", т.п. - "тому подобное" ) */


#include <stdio.h>
#include <windows.h>

char rus[256]; // массив для русского языка

char i; // вводимое сокращение

int a = 'т.к.' ;
int b = 'т.е.' ;
int c = 'т.д.' ;
int d = 'т.п.' ;

main ()

{
CharToOem ( "Введите сокращение :\t", rus );
printf ( "%s", rus );
scanf ( "%s", i );

if ( i = a )
CharToOem ( "так как\n", rus );
printf ( "%s", rus );

if ( i = b )
CharToOem ( "то есть\n", rus );
printf ( "%s", rus );

if ( i = c )
CharToOem ( "так далее\n", rus );
printf ( "%s", rus );

if ( i = d )
CharToOem ( "тому подобное\n", rus );
printf ( "%s", rus );

return 0;
}

Я пробовал делать тоже самое только с операторами switch и break (вместо if был case),
но у меня ничего хорошего не получилось. :(

Зарание спасибо за помощь!!!

 Профиль  
                  
 
 
Сообщение24.10.2006, 10:23 
Основатель
Аватара пользователя


11/05/05
4312
почему строки имеют тип int ?
проверка равенства в с/с++ осуществляется оператором ==

 Профиль  
                  
 
 
Сообщение24.10.2006, 10:37 


23/10/06
3
СПб
За подсказку спасибо. Но я перепутал программу.

/* Ввести строку, подсчитать количество слов заданной длины. */

#include <stdio.h>
#include <conio.h> // библиотека для остановки окна после выполнения программы
#include <windows.h> // библиотека для русского языка

#define YES 1
#define NO 0


char rus[256]; // массив для русского языка


char wort; // слова введенные с клавиатуры
int zahl = 0; // число введенное с клавиатуры
int zahl_buchstabe = 0; // счетчик на буквы в слове
int zahl_wort = 0; // счетчик на слова
int flag;

char c; // цикл
char str[256]; // массив

void main (void)
{

CharToOem ( "Напишите предложение разделяя слова пробелом:\t", rus ); // введите слова
printf ( "%s", rus );
wort = 0;
while ( (c = getchar()) != '\n' ) // цикл
{
str[wort] = c;
wort = wort + 1;
}

CharToOem ( "\nВведите число (т.е. длинну слова):\t", rus ); // введите число
printf ( "%s", rus );
scanf ( "%d", &zahl );

if ( c == ' ' || c == '\t' || c == '\n' && zahl_buchstabe == YES )
zahl_buchstabe = zahl_buchstabe + 1;
zahl_wort = zahl_wort + 1;

if ( c != ' ' || c != '\t' || c != '\n' && zahl_buchstabe == NO )
zahl_buchstabe = zahl_buchstabe + 1;

CharToOem ( "\nКоличество слов заданной длинны:\t", rus );
printf ( "%s", rus );
printf ( "%d", zahl_wort );

getch();

}

Зарание спасибо за помощь!!!

 Профиль  
                  
 
 
Сообщение24.10.2006, 10:43 
Основатель
Аватара пользователя


11/05/05
4312
Вы не понимаете алгоритм. Напишите русским текстом по шагам, как вы хотите решать задачу.

 Профиль  
                  
 
 
Сообщение24.10.2006, 18:39 


23/10/06
3
СПб
я изменил программу, как вы советовали

поменял int на char и написал ==, но она все равно не хочет идти. выдает windows выдает ошибку :(

 Профиль  
                  
 
 
Сообщение24.10.2006, 18:50 
Основатель
Аватара пользователя


11/05/05
4312
я не пойму че-то. Это такой хитрый способ решить одним махом две задачки?

Приводите текст ошибок сразу.

Вопрос Вам: как в Си задаются строки?

cepesh писал(а):
Вы не понимаете алгоритм. Напишите русским текстом по шагам, как вы хотите решать задачу.

 Профиль  
                  
 
 
Сообщение24.10.2006, 23:04 


12/02/06
110
Russia
Филипповский Фёдор писал(а):
#include "stdafx.h"
#include <stdio.h>
#include <conio.h> // библиотека для остановки окна после выполнения программы
#include <windows.h> // библиотека для русского языка
#define YES 1
#define NO 0
char rus[256]; // массив для русского языка
char wort; // слова введенные с клавиатуры
int zahl = 0; // число введенное с клавиатуры
int zahl_buchstabe = 0; // счетчик на буквы в слове
int zahl_wort = 0; // счетчик на слова
int flag;
char c; // цикл
char str[256]; // массив
void main (void){
CharToOem ( "Напишите предложение разделяя слова пробелом:\t", rus ); // введите слова
printf ( "%s", rus );
wort = 0;
while ( (c = getchar()) != '\n' ) // цикл
{ str[wort] = c;
wort = wort + 1;
}
CharToOem ( "\nВведите число (т.е. длинну слова):\t", rus ); // введите число
printf ( "%s", rus );
scanf ( "%d", &zahl );
if ( c == ' ' || c == '\t' || c == '\n' && zahl_buchstabe == YES )
zahl_buchstabe = zahl_buchstabe + 1;
zahl_wort = zahl_wort + 1;
if ( c != ' ' || c != '\t' || c != '\n' && zahl_buchstabe == NO )
zahl_buchstabe = zahl_buchstabe + 1;
CharToOem ( "\nКоличество слов заданной длинны:\t", rus );
printf ( "%s", rus );
printf ( "%d", zahl_wort );
getch(); }

У меня программа работает, хотя и неправильно считает, так что дело не в ней.
cepesh писал(а):
Приводите текст ошибок...

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group