2014 dxdy logo

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

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




 
 Программирование на Си (помогите)
Сообщение24.10.2006, 10:11 
Здравствуйте!
Помогие доделать программу, а то я замучился.
Я знаю, что в программу надо добаваить еще один массив для разбивания предложения по словам и подсчета количества букв в слове.

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


#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 
Аватара пользователя
почему строки имеют тип int ?
проверка равенства в с/с++ осуществляется оператором ==

 
 
 
 
Сообщение24.10.2006, 10:37 
За подсказку спасибо. Но я перепутал программу.

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

#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 
Аватара пользователя
Вы не понимаете алгоритм. Напишите русским текстом по шагам, как вы хотите решать задачу.

 
 
 
 
Сообщение24.10.2006, 18:39 
я изменил программу, как вы советовали

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

 
 
 
 
Сообщение24.10.2006, 18:50 
Аватара пользователя
я не пойму че-то. Это такой хитрый способ решить одним махом две задачки?

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

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

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

 
 
 
 
Сообщение24.10.2006, 23:04 
Филипповский Фёдор писал(а):
#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 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group