PDA

View Full Version : Функции и низове..?



pavkata213
03-24-2011, 15:31
Ще съм благодарен ако някой може спешно да ми помогне със следната задача по информатика:
"Да се състави функция, която в даден низ отстранява ненужните интервали, като оставя само по един интервал
, ако някъде има повече последователни интервала и връща новополучения низ.Напишете главна функция, която се обръща към тази за всеки от n въведени низа"
Благодаря предварително. smoke.gif

Chacho
03-24-2011, 18:41
Е напиши на какъв език програмирате.

Един начин за реализация е да направиш помощна функция, която изтрива даден елемент от низа с индекс i:

Триене(низ, индекс)

Фактически в нея ще направиш един цикъл от индекса+1 до края на низа да премества елементите с 1 назад и последният елемент ще го правиш нулевият.

Ползвайки тази функция, функцията за чистене на интервали ще я напишеш, като ще обхождаш низа по символи и ако срещнеш два поредни интервала (да кажем с индекс1 и индекс2), ще изпълняваш Триене(низ, индекс2), докато елементите с индекс1 и индекс2 станат различни (с други думи, докато след известен брой триения на интервали не стигнеш буква).

Последната част е в главната програма да въвеждаш n на брой низове, като при всяко едно въвеждане отново да изпълняваш функцията за чистене на интервали.

Ако напишеш езика за програмиране, може и да се пробвам да я разпиша. Поздрави!

pavkata213
03-24-2011, 19:27
Първо Благодаря ти много...иначе почти не разбирам за какво ми говориш, защото ме няма никак в информатиката, а езикът е С++.
Ще се радвам ако ми отговориш тази вечер...
Мерси :) :)

pluhotronik
03-24-2011, 20:04
#include<iostream>
#include<string.h>
using namespace std;
void clean(char c,int n)
{int i=0;
while(!'\0')
{if(strcmp(c[i],' ')&&strcmp(c[i+1],' ')
while(!'\0')
strcpy(c[i+1],c[i+2]);}
int main()
{char c[50];
int n;
cin.getline(c,50,'.');
n=strlen(c);
clean(c,n);
cout<<c<<endl;
system("pause");
return 0;}
може би е тъй :)

Chacho
03-24-2011, 23:00
Гледам, че вече е написана, но ето все пак и от мен един вариант:

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <conio.h>
using namespace std;

void Triene(char c[50], int in)
{
int i;

for(i=in; i<strlen(c)-1; i++)
{
c[i]=c[i+1];
}




}

void Chistene(char c[50])
{
int i;
for(i=0; i<strlen(c)-1; i++)
{
while (c[i]==' ' && c[i+1]==' ')
{
Triene(c, i+1);
}
}
}

int main()
{
char st[50];
int i, n, j;
cout<<"How many strings do you want to enter:";
cin>>n;
for (i=1; i<=n; i++)
{
cout<<"\n\nEnter the string "<<i<<":";
j=0;
do
{
//std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
st[j]=getche();
j++;
}
while (st[j-1]!='\r');
st[j]='\0';
Chistene(st);
cout<<"\n\nThe new string is:\n";
cout<<st;
}
cout<<"\nPress enter to exit.\n";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cin.get();
}

pavkata213
03-25-2011, 04:22
:) Благодарая много и на двамата.Дано имате много успехи в бъдеще.. :grin: