Модераторы: Alx, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Работа с массивами, целыми, без WinAPI 
V
    Опции темы
sOckets
Дата 20.9.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЖгуПоПонедельникам
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 24.8.2006
Где: ws2.lib

Репутация: нет
Всего: 2



Привет , и так я хочю чтоб в этой теме все кто хочет подкидывали задачки на "С++" , чтоб именно "С++" без WinAPI и тд , просто хочю поднатянуть матчасть...ну там работа с массивами,целыми и тд. У кого есть задачки очень прошу их сюда скидывать, только по подробней обьясняйте smile
И ещё если у когото там в учебных заведениях задачки дают , тоже кидайте сюда.
Жду


--------------------
Я Будущий сотрудник Google Inc. Юзаем Google Code Search для поиска исходников. Юзаем GMail как почту.
PM   Вверх
sergejzr
Дата 20.9.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Для домашних заданий, курсовых, существует "Центр Помощи"

Тема перенесена! 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
sergejzr
Дата 20.9.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Напишите пожалуйста программу, которая считает количество дней между двумя датами (обе включительно). Даты передаются с коммандной строки в формате год.месяц.день пример:

a.exe --date_from 1990.12.10 --date_to 2005.01.01

В случае неправильного ввода выводится обьясняющая информация и возвращается 1, иначе выводится количество дней и возвращается 0.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
sOckets
Дата 20.9.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЖгуПоПонедельникам
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 24.8.2006
Где: ws2.lib

Репутация: нет
Всего: 2



sergejzr, Ок ,спасибо , я действительно мешкался и не знал где создать тему

Добавлено @ 18:08 
Цитата
Напишите пожалуйста программу, которая считает количество дней между двумя датами (обе включительно). Даты передаются с коммандной строки в формате год.месяц.день пример:

a.exe --date_from 1990.12.10 --date_to 2005.01.01

В случае неправильного ввода выводится обьясняющая информация и возвращается 1, иначе выводится количество дней и возвращается 0.


решаем....


--------------------
Я Будущий сотрудник Google Inc. Юзаем Google Code Search для поиска исходников. Юзаем GMail как почту.
PM   Вверх
sOckets
Дата 20.9.2006, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЖгуПоПонедельникам
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 24.8.2006
Где: ws2.lib

Репутация: нет
Всего: 2



ужасно :'( я не знаю решения smile позор , пол часа искал как можно работать с датой в "С++" ...ничего не нашёл smile 

sergejzr, пожалуйста , если не трудно хоть подскажите куда копать и что инклюдить smile


--------------------
Я Будущий сотрудник Google Inc. Юзаем Google Code Search для поиска исходников. Юзаем GMail как почту.
PM   Вверх
Sartorius
Дата 20.9.2006, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



 Инклудить ничего не дада. Возьми сам разбей переданные строки на год, месяц и день... а дальше сам smile 
 Если будет желание , можешь еще вот над чем подумать

Отсортировать последовательность байтов(файл) произвольной длинны за время O(n)

PM MAIL ICQ   Вверх
sOckets
Дата 20.9.2006, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ЖгуПоПонедельникам
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 24.8.2006
Где: ws2.lib

Репутация: нет
Всего: 2



Цитата
Отсортировать последовательность байтов(файл) произвольной длинны за время O(n)

извиняюсь , по подробней можно ?  smile 


--------------------
Я Будущий сотрудник Google Inc. Юзаем Google Code Search для поиска исходников. Юзаем GMail как почту.
PM   Вверх
586
Дата 20.9.2006, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



Цитата(sergejzr @  20.9.2006,  19:06 Найти цитируемый пост)
Напишите пожалуйста программу, которая считает количество дней между двумя датами (обе включительно). Даты передаются с коммандной строки в формате год.месяц.день пример:

a.exe --date_from 1990.12.10 --date_to 2005.01.01

В случае неправильного ввода выводится обьясняющая информация и возвращается 1, иначе выводится количество дней и возвращается 0. 


Код
#include <stdio.h>
#include <windows.h>
#include <conio.h>

BYTE mm[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int __cdecl main(int argc, char** argv)
{
    int a=0, b=0;
    for(int i=1; i<argc; i++)
    {
        if(!strcmp(argv[i], "--date_from"))
        {
            i++; a=i;
            if(i<argc) continue; 
            else goto err;
        }
        if(!strcmp(argv[i], "--date_to"))
        {
            i++; b=i;
            if(i<argc) continue;
            else goto err;
        }
    }
    if(!a || !b)
    {
err:
        printf("Bad command line\n");
        return 1;
    }
    int y, m, d, y1, m1, d1, n;
    if(sscanf(argv[a], "%d.%d.%d", &y, &m, &d)!=3 ||
        sscanf(argv[b], "%d.%d.%d", &y1, &m1, &d1)!=3)
    {
err1:
        printf("Bad time format\n");
        return 1;
    }
    m--; m1--;
    if(m<0 || m>11 || y<0 || d<1 || m1<0 || m1>11 || y1<0 || d1<1) goto err1;
    if(d>mm[m] || d1>mm[m1]) goto err1;
    n=(y1-y)*365;
    n+=(y1-y)/4;
    if(!(y%4) || !(y1%4)) n++;
    i=m;
    if(m!=m1) while(1)
    {
        if(i==11) i=0;
        if(i==m1-1) break;
        n+=mm[i];
        i++;
    }
    if(m==m1)
        n+=d1-d;
    else {
        n+=mm[m]-d;
        n+=d1;
    }
    printf("=== %d\n", n);
    getch();

    return 0;
}

PM   Вверх
Rockie
Дата 20.9.2006, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 2
Всего: 31



и високосный год  smile 


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
586
Дата 20.9.2006, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



Цитата(Rockie @  20.9.2006,  22:32 Найти цитируемый пост)
и високосный год

строка 43, 44.  smile 

Цитата
Напишите пожалуйста программу, которая считает количество дней между двумя датами (обе включительно).

Это я не учёл. Тогда в конце расчетов нужно сделать инкремент n.

Это сообщение отредактировал(а) 586 - 20.9.2006, 21:46
PM   Вверх
586
Дата 20.9.2006, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



Код
#include <stdio.h>
#include <windows.h>
#include <conio.h>

BYTE mm[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int __cdecl main(int argc, char** argv)
{
    int a=0, b=0;
    for(int i=1; i<argc; i++)
    {
        if(!strcmp(argv[i], "--date_from"))
        {
            i++; a=i;
            if(i<argc) continue; 
            else goto err;
        }
        if(!strcmp(argv[i], "--date_to"))
        {
            i++; b=i;
            if(i<argc) continue;
            else goto err;
        }
    }
    if(!a || !b)
    {
err:
        printf("Bad command line\n");
        return 1;
    }
    int y, m, d, y1, m1, d1, n;
    if(sscanf(argv[a], "%d.%d.%d", &y, &m, &d)!=3 ||
        sscanf(argv[b], "%d.%d.%d", &y1, &m1, &d1)!=3)
    {
err1:
        printf("Bad time format\n");
        return 1;
    }
    m--; m1--;
    if(m<0 || m>11 || y<0 || d<1 || m1<0 || m1>11 || y1<0 || d1<1) goto err1;
    if(d>mm[m] || d1>mm[m1]) goto err1;
    n=(y1-y)*365;
    n+=(y1-y)/4;
    if(!(y%4) || !(y1%4)) n++;
    i=m+1;
    if(m!=m1) while(1)
    {
        if(i>=11) i=0;
        if(i==m1) break;
        n+=mm[i];
        i++;
    }
    if(m==m1)
        n+=d1-d;
    else {
        n+=mm[m]-d;
        n+=d1;
    }
    n++;
    printf("=== %d\n", n);
    return 0;
}

PM   Вверх
Sartorius
Дата 20.9.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



Ну пусть с goto smile  
Вот 44-я строка : считаем разницу между 1999 и 2001 - есть один високосный , а не 43 - я не 44 - я строки не сработают. smile 
 
PM MAIL ICQ   Вверх
vinter
Дата 20.9.2006, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: нет
Всего: 56



Цитата

Ну пусть с goto

непорядок ИМХО


--------------------
Мой блог
PM MAIL WWW   Вверх
586
Дата 20.9.2006, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



Цитата(vinter @  20.9.2006,  23:28 Найти цитируемый пост)
Цитата
Ну пусть с goto

непорядок ИМХО 

Просто сократил размер кода.
Цитата(Sartorius @  20.9.2006,  23:08 Найти цитируемый пост)
Вот 44-я строка : считаем разницу между 1999 и 2001 - есть один високосный , а не 43 - я не 44 - я строки не сработают

Я чего-нибудь придумаю. Создавать цикл нехочу.
PM   Вверх
Sartorius
Дата 20.9.2006, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



 586, да на самом деле ИМХО проще считать количество дней до текущего от 0.0.0000 все проблемы отпадут
Ну а потом просто разность между двумя такими "абсолютными" датами smile 
PM MAIL ICQ   Вверх
586
Дата 20.9.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



Цитата
да на самом деле ИМХО проще считать количество дней до текущего от 0.0.0000 все проблемы отпадут
Ну а потом просто разность между двумя такими "абсолютными" датами

а смысл? все равно надо определить количество весокосных годов. может я тебя неправильно понял...
вообщем не знаю. где-то в коде ошибки.

Это сообщение отредактировал(а) 586 - 20.9.2006, 23:10
PM   Вверх
Sartorius
Дата 20.9.2006, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



 Смысл такой : [кол-во дней от рождества христова] = год * 365 + год / 4 + [количество дней в прошедших месяцах] + [число];
 потом считаем разницу и все
PM MAIL ICQ   Вверх
Rockie
Дата 21.9.2006, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 2
Всего: 31



sergejzr,  5136? =)
Вариант для билдера. Юзает TDateTime и считает високосные. Правда предварительно нужно дату к другому формату привести.
Код
#include<vcl>
#include<iostream>
#include<algorithm>
#include<string>

using namespace std;

string FormatTimeToNormal(string str)    // "1994.05.03" -->  "03.05.1994"
{
   reverse(str.begin(),str.end());
   reverse(str.begin(),str.begin()+2);
   reverse(str.begin()+3,str.begin()+5);
   reverse(str.begin()+6,str.end());
   return str;
}


int main(int argc, char* argv[]){

 if(argc!=5) {cout<<"possibly error input"; return 0; }
 string str1 = argv[2];
 string str2 = argv[4];

 // make normal time and convert to TDateTime
 TDateTime first_date = StrToDateTime( FormatTimeToNormal(str1).c_str() );
 TDateTime next_date = StrToDateTime( FormatTimeToNormal(str2).c_str() );

 int difference = next_date - first_date;   // count difference

 if(difference<0) {cout<<"possibly error input"; return 0; }
 cout<<difference<<'\n';

 system("pause");
 return 0;
}


Цитата(sergejzr @  20.9.2006,  18:06 Найти цитируемый пост)
 (обе включительно)

Опа, тоже по ТЗ не отработал =)
sergejzr, а зачем? если будет "2006.09.21" и "2006.09.21", то получится разница в день

Это сообщение отредактировал(а) Rockie - 21.9.2006, 00:11


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
SkaZka
Дата 21.9.2006, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 21.9.2006

Репутация: нет
Всего: нет



Привет!На вас последняя надежда. Програмка большая... нужна программа для биометрической аутентификации , например по отпечатку пальца. Может хотя бы подскажите где такую скачать можно? smile 
Нужно разработать целый сервер, начиная со сканирования, до подтверждения идентификатора.
PM MAIL   Вверх
sergejzr
Дата 21.9.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



SkaZka, создавай отдельную тему (сперва почитай правила)

Цитата(Rockie @  20.9.2006,  22:06 Найти цитируемый пост)
sergejzr, а зачем? если будет "2006.09.21" и "2006.09.21", то получится разница в день

Всё верно. С 00:00 первой даты и до 23:59 второй даты.

Вообще вроде как библиотеками специальными не пользуемся.. Чистый С++. (StrToDateTime как раз учитывает многое при переводе дат.)


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Dov
Дата 19.10.2006, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: нет
Всего: 88



А с какого момента ведём отсчёт:
1. Сотворения Мира
2. Рождества Христова
3. Принятия Григорианского Календаря
4. Великой Октябрьской Социалистической Революции и т.д. ...
...


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Rockie
Дата 19.10.2006, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 2
Всего: 31



Dov,  smile 
начальный момент задается, на предыдущей странице задание.


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Dov
Дата 19.10.2006, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: нет
Всего: 88



Rockie  smile  smile 
Я имею ввиду, с какого момента начальная дата считается валидной  smile 



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Baltazar5000
Дата 6.3.2007, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 6.12.2006

Репутация: нет
Всего: нет



Что будет выведено на экран после исполнения фрагмента программы
1)
int ss[3][3] = { {2, 0, 4}, {4, 0, 0}, {3, 3, 3} };
int s = 0, i, j;
for(i = 0; i < 3; i++)
    for(j = 0; j < 3; j++)
        s += ss[i][j];
printf("%d ", s);

2)
int ss[3][3] = { {2, 3, 1}, {2, 0, 0}, {0, 2, 2} };
int s = 1, i, j;
for(i = 0; i < 3; i++)
    for(j = 0; j < 3; j++)
        if(ss[i][j] > 0)
            s *= ss[i][j];
printf("%d ", s);

3)
int ss[3][3] = { {3, 7, 0}, {8, 5, 0}, {0, 7, 3} };
int s = 0, i, j;
for(i = 0; i < 3; i++)
{    for(j = 0; j < 3; j++)
        if (i == j)
            s += ss[i][j];
}
printf("%d ", s);

4)
int ss[3][3] = { {2, 3, 4}, {2, 3, 2}, {1, 6, 5} };
int s = 1, i, j;
for(i = 0; i < 3; i++)
{    for(j = 0; j < 3; j++)
        if (i == j)
            s *= ss[i][j];
}
printf("%d ", s);

5)
int ss[3][3] = { {2, 3, 7}, {6, 2, 5}, {6, 8, 1} };
int s = 1, i, j;
for(i = 0; i < 3; i++)
{    for(j = 0; j < 3; j++)
        if (i + j == 2)
            s *= ss[i][j];
}
printf("%d ", s);

6)
int ss[3][3] = { {17, 0, 16}, {1, 5, 2}, {6, 13, 17} };
int s = 0, i, j;
for(i = 0; i < 3; i++)
{    for(j = 0; j < 3; j++)
        if (i + j == 2)
            s += ss[i][j];
}
printf("%d ", s);

7)
int ss[3][3] = { {1, 3, 1}, {2, 3, 2}, {4, 3, 1} };
int s = 0, i, j;
for(i = 0; i < 3; i++)
    for(j = 0; j < 3; j++)
        s += ss[i][j];
printf("%d ", s);

8)
int ss[3][3] = { {0, 3, 1}, {3, 3, 0}, {2, 3, 1} };
int s = 1, i, j;
for(i = 0; i < 3; i++)
    for(j = 0; j < 3; j++)
        if(ss[i][j] > 0)
            s *= ss[i][j];
printf("%d ", s);

9)
int ss[3][3] = { {1, 2, 4}, {6, 2, 7}, {1, 0, 6} };
int s = 0, i, j;
for(i = 0; i < 3; i++)
{    for(j = 0; j < 3; j++)
        if (i == j)
            s += ss[i][j];
}
printf("%d ", s);

10)
int ss[3][3] = { {3, 7, 5}, {4, 7, 3}, {3, 1, 6} };
int s = 1, i, j;
for(i = 0; i < 3; i++)
{    for(j = 0; j < 3; j++)
        if (i == j)
            s *= ss[i][j];
}
printf("%d ", s);

11)
int ss[3][3] = { {0, 0, 6}, {3, 2, 5}, {8, 4, 7} };
int s = 1, i, j;
for(i = 0; i < 3; i++)
{    for(j = 0; j < 3; j++)
        if (i + j == 2)
            s *= ss[i][j];
}
printf("%d ", s);

12)
int ss[3][3] = { {13, 4, 8}, {17, 13, 10}, {2, 13, 9} };
int s = 0, i, j;
for(i = 0; i < 3; i++)
{    for(j = 0; j < 3; j++)
        if (i + j == 2)
            s += ss[i][j];
}
printf("%d ", s);

13)
int ss[3][3] = { {4, 6, 7}, {6, 8, 8}, {9, 4, 7} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = 0;
    for(j = 0; j < 3; j++)
        s += ss[i][j];
    printf("%d ", s);
}

14)
int ss[3][3] = { {7, 1, 7}, {7, 2, 7}, {3, 7, 5} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = 1;
    for(j = 0; j < 3; j++)
        s *= ss[i][j];
    printf("%d ", s);
}

15)
int ss[3][3] = { {0, 3, 5}, {1, 1, 5}, {2, 5, 1} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = 1;
    for(j = 0; j < 3; j++)
        s *= ss[j][i];
    printf("%d ", s);
}

16)
int ss[3][3] = { {7, 6, 13}, {3, 3, 10}, {14, 7, 3} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = 0;
    for(j = 0; j < 3; j++)
        s += ss[j][i];
    printf("%d ", s);
}

17)
int ss[3][3] = { {23, 27, 39}, {8, 36, 12}, {22, 3, 22} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = ss[i][0];
    for(j = 0; j < 3; j++)
        if(ss[i][j] < s)
            s = ss[i][j];
    printf("%d ", s);
}

18)
int ss[3][3] = { {33, 40, 39}, {12, 21, 45}, {12, 37, 9} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = ss[0][i];
    for(j = 0; j < 3; j++)
        if(ss[j][i] < s)
            s = ss[j][i];
    printf("%d ", s);
}

19)
int ss[3][3] = { {14, 13, 50}, {18, 39, 43}, {3, 40, 45} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = ss[i][0];
    for(j = 0; j < 3; j++)
        if(ss[i][j] > s)
            s = ss[i][j];
    printf("%d ", s);
}

20)
int ss[3][3] = { {52, 23, 54}, {32, 49, 8}, {7, 17, 44} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = ss[0][i];
    for(j = 0; j < 3; j++)
        if(ss[j][i] > s)
            s = ss[j][i];
    printf("%d ", s);
}

21)
int ss[3][3] = { {6, 6, 3}, {6, 8, 7}, {9, 7, 2} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = 0;
    for(j = 0; j < 3; j++)
        s += ss[i][j];
    printf("%d ", s);
}

22)
int ss[3][3] = { {6, 1, 4}, {1, 3, 6}, {4, 0, 5} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = 1;
    for(j = 0; j < 3; j++)
        s *= ss[i][j];
    printf("%d ", s);
}

23)
int ss[3][3] = { {3, 1, 0}, {5, 5, 5}, {5, 4, 3} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = 1;
    for(j = 0; j < 3; j++)
        s *= ss[j][i];
    printf("%d ", s);
}

24)
int ss[3][3] = { {17, 19, 12}, {12, 13, 10}, {17, 6, 3} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = 0;
    for(j = 0; j < 3; j++)
        s += ss[j][i];
    printf("%d ", s);
}

25)
int ss[3][3] = { {2, 22, 11}, {13, 13, 4}, {16, 28, 17} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = ss[i][0];
    for(j = 0; j < 3; j++)
        if(ss[i][j] < s)
            s = ss[i][j];
    printf("%d ", s);
}

26)
int ss[3][3] = { {18, 14, 13}, {21, 23, 3}, {6, 15, 7} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = ss[0][i];
    for(j = 0; j < 3; j++)
        if(ss[j][i] < s)
            s = ss[j][i];
    printf("%d ", s);
}

27)
int ss[3][3] = { {26, 12, 3}, {18, 8, 9}, {20, 13, 4} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = ss[i][0];
    for(j = 0; j < 3; j++)
        if(ss[i][j] > s)
            s = ss[i][j];
    printf("%d ", s);
}

28)
int ss[3][3] = { {1, 16, 25}, {28, 30, 21}, {8, 13, 4} };
int s, i, j;
for(i = 0; i < 3; i++)
{    s = ss[0][i];
    for(j = 0; j < 3; j++)
        if(ss[j][i] > s)
            s = ss[j][i];
    printf("%d ", s);
}

PM MAIL   Вверх
aff
Дата 7.3.2007, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 7.3.2007

Репутация: нет
Всего: нет



у меня три задачи не решаются. на 2 первые есть алгоритмы но почему-то не работают.
1 строка содержит проивзольный английский текст, сформировать массивы гласных и согласных:

Код

#include<stdio.h>
#include<conio.h>
#include<string.h>
main()
{char *A; //сама строка
char B[]={'a','e','i','o','u','y'}; //массив гласных
char *C;//массив гласных букв
char *F; //а это - согласных букв
int x,y=0,z=0,q=0,i;
printf("Vvedite stroku\n");
gets(A);                                    // вот здесь встает вся программа
 for (x=0;x<strlen(A);x++)
   { for (y=0;y<strlen(B);y++)
      { if (A[x]==B[y])
          { C[z]=A[x];  z++;  }
        else
          { F[q]=A[x];   q++; }
      }
   }
for (z=0;z<100;z++)
  { printf("%c\t",C[z]);  }
for (q=0;q<100;q++)
  { printf("%c\t",F[q]);  }
getch();}



2 даны 2 натуральных числа: n и m. проверить есть ли в записи числа m цифры, совпадающие с цифрами n:
Код

#include<stdio.h>
#include<conio.h>
main()
{
long n,m;
int k,j;
printf("Vvedite n,m\n");
scanf("%d%d",&n,&m);
while(n!=0) 
{k=n%10; n=n/10;
  while (m!=0)
   {j=m%10; m=m/10;
     if (j==k) printf("%d\t",k);
   }
}
getch();}


3 подсчитать кол-во эл-тов матриц x[5.4] и y[3.5]? удовлетворяющих условиям a<=x<=b и a<=y<=b. кол-во элементов вычислить в функции.
PM MAIL   Вверх
Rockie
Дата 8.3.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 2
Всего: 31



Цитата(aff @  7.3.2007,  14:24 Найти цитируемый пост)
gets(A);                                    // вот здесь встает вся программа

aff, ты не выделил память под указатель A. используй malloc для Си или new для C++. Либо 

Код

char A[80]; //сама строка


p.s.: создавай новую тему если вопрос новый



--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
FireSnake
Дата 9.3.2007, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 15.9.2006
Где: Украина, Донецк

Репутация: нет
Всего: 1



А вот на строки простенькая задачка, но с подъе...водным камнем.


Задача Spy

(предоставлена управлением внешней разведки )


Шпион, давно внедрившийся в ранее вражескую, а теперь дружественную страну, использовал для передачи донесений шифровальную машинку, привезенную с собой в начале карьеры, а значит морально устаревшую . Работал сей автомат так: в каждом слове сообщения он менял гласную букву на цепочку символов, состоящую из этой самой буквы в начале, некого кодового слова и вновь этой же буквы. Простой шифр, правда? Если учесть, что машинка работала только с малыми буквами латинского алфавита, секретное донесение "i like pivo" с использованием кодирующей последовательности "qa" на родине героя получали в виде "iqai liqaikeqae piqaivoqao". Все было прекрасно, пока машинка от старости не начала кодировать одно и то же сообщение по несколько раз. Помогите криптографам, получившим сообщение, отправленное неисправной машинкой, его прочитать.

Ввод-вывод: В первой строке вводите с клавиатуры зашифрованную последовательность, во второй - кодирующую последовательность. В строке вывода выводите на экран искомую строку.


 

Пример:

Ввод>

iqaiqaqaaiqai liqaiqaqaaiqaikeqaeqaqaaeqae piqaiqaqaaiqaivoqaoqaqaaoqao 

Ввод> qa

Вывод> i like pivo


Ограничения: кодированная строчка не длиннее 255 символов, кодовое слово не длиннее 255 символов.

П.С. у кого пройдет все тесты, поделитесь в чем этот подводный камень. Решения можете постить здесь.smile. А  я  буду писать результат проверки.


PM MAIL ICQ   Вверх
Strannik
Дата 10.3.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: нет
Всего: 2



FireSnake, а копирайты поставить? Или откуда задача сказать?
Цитата

Решения можете постить здесь.

Лучше было бы дать адрес сайта где можно эту задачу взять и проверить...
PM MAIL   Вверх
FireSnake
Дата 10.3.2007, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 15.9.2006
Где: Украина, Донецк

Репутация: нет
Всего: 1



Цитата(Strannik @  10.3.2007,  12:12 Найти цитируемый пост)
FireSnake, а копирайты поставить? Или откуда задача сказать?

Цитата

Решения можете постить здесь.



Лучше было бы дать адрес сайта где можно эту задачу взять и проверить... 


Про копирайты я действительно забыл. но я и не утверждаю что это моя задача. А касательно дать линк на сайт, то мне самому инетересно посмотреть чужые решения(свое у меня есть).
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




[ Время генерации скрипта: 0.0885 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.