#pragma hdrstop
#pragma argsused
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
int prov (char *str);
void main ()
{
char A[20], B[20];
int l1, l2;
puts("\n Input A:\n");
gets(A);
puts("\n Input B:\n");
gets(B);
l1=prov(A);
l2=prov(B);
if(l1>l2)
printf("\n pervoe slovo dlinnee");
else
{ if(l1==l2)
printf("\n slova ravnu");
else printf("\n vtoroe slovo dlinnee");
}
getch();
}
int prov (char *str)
{int i,l;
l=strlen(str);
for(i=l;i>=0;i=i-1)
if(str==' ')
return(l-i-1);
return(l);
}
2 строки, 4 слова, сравнение длины [C++]
Была задачка - сравнить в двух строчках длину последних слов. Процедуру написать самому. Готово:
Код:
Теперь задача: для каждой последовательности сравнить длины первых и последних слов. Немного попал в ступор (: Подскажите пожалуйста (:
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
int prov (char *str);
void main ()
{
char A[20];
puts("\n Input A:\n");
gets(A);
switch(prov(A)){
case 1: printf(" 1 slovo > poslednego "); break;
case -1: printf(" poslednee slovo > 1 "); break;
case 0: printf(" 1 slovo = poslednemu "); break;
}
getch();
}
int prov (char *str)
{int i,l;
l=strlen(str);
for(i=l;i>=0;i=i-1)
if(str==' ') break;
l-=i+1;
for(i=0;i<l;i++)
if(str==' ') break;
if(l<i) return 1; else
if (l>i) return -1; else
return 0;
}
#include <conio.h>
#include <string.h>
int prov (char *str);
void main ()
{
char A[20];
puts("\n Input A:\n");
gets(A);
switch(prov(A)){
case 1: printf(" 1 slovo > poslednego "); break;
case -1: printf(" poslednee slovo > 1 "); break;
case 0: printf(" 1 slovo = poslednemu "); break;
}
getch();
}
int prov (char *str)
{int i,l;
l=strlen(str);
for(i=l;i>=0;i=i-1)
if(str==' ') break;
l-=i+1;
for(i=0;i<l;i++)
if(str==' ') break;
if(l<i) return 1; else
if (l>i) return -1; else
return 0;
}
Цитата: dim88
...
Теперь задача: для каждой последовательности сравнить длины первых и последних слов. Немного попал в ступор (: Подскажите пожалуйста (:
Почему ты не используешь С++ ? Этот пример - классика из Бьерна Страуструпа или Стэнли Липпмана.Вот решение сразу 2 задач.
Код:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string str1,str2;
vector<string> coll1,coll2;
cout<<"Input 1-st string : "<<' ';
getline(cin,str1,'\n');
string::size_type pos = 0,prev_pos = 0;
while(( pos = str1.find_first_of(' ',pos))
!= string::npos )
{
coll1.push_back(str1.substr(prev_pos,pos - prev_pos));
prev_pos = ++pos;
}
coll1.push_back(str1.substr(prev_pos,pos - prev_pos));
cout<<"Input 2-nd string : "<<' ';
getline(cin,str2,'\n');
pos = 0,prev_pos = 0;
while(( pos = str2.find_first_of(' ',pos))
!= string::npos )
{
coll2.push_back(str2.substr(prev_pos,pos - prev_pos));
prev_pos = ++pos;
}
coll2.push_back(str2.substr(prev_pos,pos - prev_pos));
if(coll1.back().size() < coll2.back().size())
cout<<"word : "<<coll2.back()<<" > "<<coll1.back()<<endl;
else if(coll1.back().size() == coll2.back().size())
cout<<coll1.back()<<" = "<<coll2.back()<<endl;
else
cout<<"word : "<<coll1.back()<<" > "<<coll2.back()<<endl;
if(coll1.back().size() < coll1[0].size())
cout<<"word : "<<coll1[0]<<" > "<<coll1.back()<<endl;
else if(coll1.back().size() == coll1[0].size())
cout<<coll1.back()<<" = "<<coll1[0]<<endl;
else
cout<<"word : "<<coll1.back()<<" > "<<coll1[0]<<endl;
if(coll2.back().size() < coll2[0].size())
cout<<"word : "<<coll2[0]<<" > "<<coll2.back()<<endl;
else if(coll2.back().size() == coll2[0].size())
cout<<coll2.back()<<" = "<<coll2[0]<<endl;
else
cout<<"word : "<<coll2.back()<<" > "<<coll2[0]<<endl;
return 0;
}
#include <string>
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string str1,str2;
vector<string> coll1,coll2;
cout<<"Input 1-st string : "<<' ';
getline(cin,str1,'\n');
string::size_type pos = 0,prev_pos = 0;
while(( pos = str1.find_first_of(' ',pos))
!= string::npos )
{
coll1.push_back(str1.substr(prev_pos,pos - prev_pos));
prev_pos = ++pos;
}
coll1.push_back(str1.substr(prev_pos,pos - prev_pos));
cout<<"Input 2-nd string : "<<' ';
getline(cin,str2,'\n');
pos = 0,prev_pos = 0;
while(( pos = str2.find_first_of(' ',pos))
!= string::npos )
{
coll2.push_back(str2.substr(prev_pos,pos - prev_pos));
prev_pos = ++pos;
}
coll2.push_back(str2.substr(prev_pos,pos - prev_pos));
if(coll1.back().size() < coll2.back().size())
cout<<"word : "<<coll2.back()<<" > "<<coll1.back()<<endl;
else if(coll1.back().size() == coll2.back().size())
cout<<coll1.back()<<" = "<<coll2.back()<<endl;
else
cout<<"word : "<<coll1.back()<<" > "<<coll2.back()<<endl;
if(coll1.back().size() < coll1[0].size())
cout<<"word : "<<coll1[0]<<" > "<<coll1.back()<<endl;
else if(coll1.back().size() == coll1[0].size())
cout<<coll1.back()<<" = "<<coll1[0]<<endl;
else
cout<<"word : "<<coll1.back()<<" > "<<coll1[0]<<endl;
if(coll2.back().size() < coll2[0].size())
cout<<"word : "<<coll2[0]<<" > "<<coll2.back()<<endl;
else if(coll2.back().size() == coll2[0].size())
cout<<coll2.back()<<" = "<<coll2[0]<<endl;
else
cout<<"word : "<<coll2.back()<<" > "<<coll2[0]<<endl;
return 0;
}