dreamer
Member
Хорошая мысль, а еще лучше откомпилить другим компилеромя обычно пишу
sscanf("1","%f",&tmp);
не заметно для конечного пользователя получается, без ввода лишних знаков
Хорошая мысль, а еще лучше откомпилить другим компилеромя обычно пишу
sscanf("1","%f",&tmp);
не заметно для конечного пользователя получается, без ввода лишних знаков
#include <stdio.h>
#include <string.h>
#include <conio.h>
char cnt[256];
void main()
{
char *rus="ЁёЙЦУКЕНГШЩЗХЪЫВАПРОЛДЖЭЯЧСМИТЬБЮйцукенгшщзхъфывапролджэячсмитьбю";
int ch;
printf("Вводите текст, конец текста - Enter\n");
while((ch=getchar())!=10)cnt[ch]++;
for(ch=0;ch<256;ch++)
if(strchr(rus,ch)&&cnt[ch])printf("%c - %d раз\n",ch,(int)cnt[ch]);
}
ну считываем строку, пока читается и делаем массив счетчиков для каждой буквы - cnt[256] - индекс=код символаСтрока, содержащая произвольный русский текст, состоит не более чем из 200 символов. Написать, какие буквы и сколько раз встречаются в этом тексте.
кому не сложно, объясните алгоритм))Код:#include <stdio.h> #include <string.h> #include <conio.h> char cnt[256]; void main() { char *rus="ЁёЙЦУКЕНГШЩЗХЪЫВАПРОЛДЖЭЯЧСМИТЬБЮйцукенгшщзхъфывапролджэячсмитьбю"; int ch; printf("Вводите текст, конец текста - Enter\n"); while((ch=getchar())!=10)cnt[ch]++; for(ch=0;ch<256;ch++) if(strchr(rus,ch)&&cnt[ch])printf("%c - %d раз\n",ch,(int)cnt[ch]); }
я так понимаю что вводится строка, сравнивается с алфавитом (строка rus), а как оно подсчитывает?!
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int countword(const char s0[], const char s[]){
int k=0;
int i=0;
while (s[i]){
int x;
for (int j=0;s0[j];j++){
x=0;
if(j>0) i++;
if (s0[j]==s[i]) x=1;
else break;
}
i++;
if (x==1) k++;
}
return k;
}
void main() {
FILE *f,*f1;
char s[50000];
char s0[50];
int t=0;
clrscr();
f=fopen("test.txt","r");
f1=fopen("test1.txt","r");
fgets(s0,50,f1);
while (!feof(f)){
fgets(s,5000,f);
t+=countword(s0,s);
printf("%s",s);
s[0]='\0';
}
printf("slovo '%s' vstre4aetsya %d raz(a)",s0,t);
fclose(f);
fclose(f1);
getch();
}
что то страшное пишешВ файле test1.txt записаны слова в строчку(в 1 строке 1 слово, но не больше 5 штук), а в файле test.txt записан текст произвольный текст. Нужно найти сколько раз встречается слова с файла тест1 в тексте с файла тест. Есть функция, которая считает кол-во вхождений строки s0 в строку s. Написал программу, только работает для 1 слова в файле тест1... Кароче, подскажите как доделать программу, чтобы считала для всех слов с файла тест1, а не только одного...
Код:#include <stdio.h> #include <stdlib.h> #include <conio.h> int countword(const char s0[], const char s[]){ int k=0; int i=0; while (s[i]){ int x; for (int j=0;s0[j];j++){ x=0; if(j>0) i++; if (s0[j]==s[i]) x=1; else break; } i++; if (x==1) k++; } return k; } void main() { FILE *f,*f1; char s[50000]; char s0[50]; int t=0; clrscr(); f=fopen("test.txt","r"); f1=fopen("test1.txt","r"); fgets(s0,50,f1); while (!feof(f)){ fgets(s,5000,f); t+=countword(s0,s); printf("%s",s); s[0]='\0'; } printf("slovo '%s' vstre4aetsya %d raz(a)",s0,t); fclose(f); fclose(f1); getch(); }
#include <stdio.h>
#include <string.h>
#define N 5
#define L 100
int find(char word[], char library[N][L])
{
for(int i=0;i<N;i++)
if(strstr((const char*)&library[i][0],(const char*)&word[0])!=NULL) return i;
return -1;
}
int main()
{
FILE *test1=fopen("test1.txt","r"),*test2=fopen("test2.txt","r");
char word[L];
char library[N][L];
int cnt[N]={0};
int n=0;
int c=0;
while(fscanf(test1,"%s\n",&word[0])!=-1)
{
strcpy(library[n],(const char*)&word[0]);
n++;
}
fclose(test1);
while(fscanf(test2,"%s",&word[0])!=-1)
{
c=find(&word[0],library);
if(c!=-1) cnt[c]++;
}
fclose(test2);
for(int i=0;i<n;i++)
{
printf("%s -> %d\n",library[i],cnt[i]);
}
return 0;
}
Microsoft Visual Studio(C++), там и компилятор и среда, есть и под х32 и под х64Имеется Windows 7 x64, нужен компилятор для С++. Борланд не работает на х64, need help!
Спасиб, я уже поставил )Microsoft Visual Studio(C++), там и компилятор и среда, есть и под х32 и под х64
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#define N 3
void main ()
{
// описання структури
struct tovar
{
char imya[5];
int kolvo;
int cena1;
float cena2;
int srok;
int obwcena1;
int obwcena2;
}x[N];
int i;
float cenna2;
int maxs,mins,maxc,minc;
float maxc2,minc2;
clrscr();
maxs=0;
mins=0;
maxc=0;
minc=0;
maxc2=0;
minc2=0;
for (i=0;i<N; i++)
{
printf(" imya tovara:\n ");
scanf("%s",&x[i].imya);
printf("\n cena do ycenki:\n ");
scanf("%i",&x[i].cena1);
printf("\n srok hranen:\n ");
scanf("%i",&x[i].srok);
}
fflush(stdin);
for(i=0;i<N;i++){
if(x[i].srok>2)
cenna2=x[i].cena1/2;
x[i].cena2=cenna2;
printf("------------------\n");
printf("imya tovara - %s\n cena do ycenki - %i\n cena posle ycenki - %7.2f \n, srok hraneniya %i\n",x[i].imya,x[i].cena1,cenna2,x[i].srok);
}
for(i=0;i<N;i++)
if(maxs<x[i].srok){maxs=x[i].srok; }
if(mins>x[i].srok){mins=x[i].srok; }
printf("maximalnui srok = %i \n",maxs);
printf("minimalnui srok = %i \n",mins);
if(maxc<x[i].cena1){maxc=x[i].cena1; }
if(minc>x[i].cena1){minc=x[i].cena1; }
printf("maximalna cena do ycenki = %i \n",maxc);
printf("minimalna cena do ycenki = %i \n",minc);
if(maxc2<cenna2){maxc2=cenna2; }
if(minc2>cenna2){minc2=cenna2; }
printf("maximalna cena pislia ycenki = %f \n",maxc2);
printf("minimalna cena pislia ycenki = %f \n",minc2);
getch();
}
а теперь вопрос , задачу почти сделал, только в конце непойму почему у меня ненаходит минимальный срок, минимальную ценпосле , и максимальную и минимальную цену до уценки.Торговый склад производит уценку хранящейся продукции. Если продукция хранится на складе дольше п месяцев, то она уценивается в 2 раза, а если срок хранения превысил т(т< п) месяцев, но не достиг п, то — в 1,5 раза. Ведомость уценки товаров должна содержать следующую информацию: наименование товара, количество товара, цена товара до уценки, срок хранения товара, цена товара после уценки, общая стоимость товара до уценки, общая стоимость товаров после уценки. Выяснить максимальный и минимальный сроки хранения товаров на складе; максимальную и минимальную цену товаров до уценки и после уценки.