C programma
Kto pomozhet napisat primer programmki C, kotoraja ischet v predlozhenii(schittannom s klaviaturi) slovo(tozhe schitannoe s klaviaturi. Pozhalujsta bez sistemnih funktsij, i esli mozhno bez 'for'
Prepod dal uzhe primer reshenija, no ono ne rabotaet, vidno iz za kakoj-to melochi, a ja eshche chajnik v C tak chto sama ne razberus.
Spasibo
Katya
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
// Funktionen
//1:
int suche_erst_buch(char *line,int offset,char buch)
{
int i = offset;
while ( line!=buch && line)
{
i++;
}
return i;
}
//2:
int suche_ab_pos(char *line,int pos,char *wort)
{
int i = pos;
int j = 0;
while ( (line==wort[j]) && wort[j] && line ) // wichtig line
{
i++;
j++;
}
if (wort[j]==0)
{
return 1;
}
else
{
return 0;
}
}
/* Hauptprogramm */
main()
{
int pos;
int gefunden;
char *line;
char buch;
char *wort;
int offset;
do
{
pos=suche_erst_buch(line,offset,buch);
gefunden=suche_ab_pos(line,pos,wort);
if(gefunden)
{
printf("ja\n");
}
else
{
offset=offset+pos+1;
}
}
while (!gefunden && offset>strlen(line));
}
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define SIZE 100
// Функции
//1: поиск символа нач. с заданной позиции
int suche_erst_buch(char *line,int offset,char buch)
{
int i = offset;
while(line[ i]!= buch && line[ i])i++;
return i;
}
//2: поиск слова
int suche_ab_pos(char *line,int pos,char *wort)
{
int i = pos;
int j = 0;
while ((line[ i]==wort[j]) && wort[j])
{
i++;
j++;
}
if (wort[j]==0)
return 1;
else
return 0;
}
/* Главная программа */
main()
{
int pos;
int gefunden;
char line[128];
char buch;
char wort[32];
int offset = 0;
printf("Введите предложение: ");
gets(line);
strupr(line);
printf("\nВведите слово: ");
gets(wort);
strupr(wort);
buch = wort[0];
bool bExist = false;
do
{
pos=suche_erst_buch(line,offset,buch);
gefunden=suche_ab_pos(line,pos,wort);
if(gefunden)
{
printf("\nСлово находится в %d позиции", pos);
bExist = true;
}
offset = pos+1;
}
while(offset<strlen(line));
if(!bExist)
{
printf("\nПредложение не содержит искомое слово");
}
printf("\n\nНажмите на любую клавишу...");
getch();
}
Prepod dal uzhe primer reshenija, no ono ne rabotaet, vidno iz za kakoj-to melochi, a ja eshche chajnik v C tak chto sama ne razberus.
А ты не расстраивайся, твой препод, тоже чайник :) (В программе было 3 ошибки)
Возможно нужно будет подключить какие-то библиотеки. Я писал на Visual C, а эта прога вроде 16-bit Dos.
<conio.h>. Poka poprobuju razobratsja i zamenit ee funktsii na analogichnie iz drugih. Kak podkljuchit druguju biblioteku, ja ne znaju. A prepod prosto na hodu che-to sochinjal, poetomu i oshibki.
Spasibo ogromnoe, u menya ne rabotaet biblioteka
<conio.h>. Poka poprobuju razobratsja i zamenit ee funktsii na analogichnie iz drugih. Kak podkljuchit druguju biblioteku, ja ne znaju. A prepod prosto na hodu che-to sochinjal, poetomu i oshibki.
conio подключено из-за команды getch(). Она нужна, чтоб не закрывалось DOS окно, пока пользователь не нажмет на какую-то клавишу. Но если прога запускается из среды DOS или Unix, тогда последние 2 команды можно опустить.
Подключение системной библиотеки:
#include <имя_библиотеки.h>
In function `main':
: undefined reference to `strupr'
conio подключено из-за команды getch(). Она нужна, чтоб не закрывалось DOS окно, пока пользователь не нажмет на какую-то клавишу. Но если прога запускается из среды DOS или Unix, тогда последние 2 команды можно опустить.
Подключение системной библиотеки:
#include <имя_библиотеки.h>
getch() zamenila na getchar(), no vse ravno soobshchaet oshibku:
In function `main':
: undefined reference to `strupr'
strupr, переводит предложение и слово в заглавные буквы.
Можно эти две команды тоже удалить.
Или же в help-е найти описание strupr и посмотреть в какомй библиотеке они прописаны.
Или заменить эту ф-ию эквивалентным.
Spasibo ogromnoe:) Teper est shans spravitsja s domashnim zadaniem
Незачто :)
Можно убрать 2 команды strupr(...) и
вместо этого подключить ctype.h, т.е. в начало файла
#include <ctype.h>
и 2 первые ф-ии заменить на
{
int i = offset;
while(toupper(line[ i])!= toupper(buch) && line[ i])i++;
return i;
}
//2: поиск слова
int suche_ab_pos(char *line,int pos,char *wort)
{
int i = pos;
int j = 0;
while ((toupper(line[ i])==toupper(wort[j])) && wort[j])
{
i++;
j++;
}
if (wort[j]==0)
return 1;
else
return 0;
}