[реклама вместо картинки]
Сделать стартовой Добавить в Избранное
Часы в заголовке окна

Форум студентов МГУ Печати ФИТиМ ИТД

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум студентов МГУ Печати ФИТиМ ИТД » Архив » Информатика (Сессия. I семестр)


Информатика (Сессия. I семестр)

Сообщений 61 страница 80 из 324

61

Кузя, в Вашей программе две ошибки.
Во-первых, как Вам верно указали, нужно сканировать не всю строку,
а до тех пор, пока не встретите символ окончания строки (ноль).
Во-вторых, Вы забыли заключить 9 в одинарные кавычки :-)

Вот исправленный вариант:

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

int summa(char s[100])
{
    int i,sum=0;
    for(i=0;s[i];i++)
        if(s[i]>='0' && s[i]<='9')
            sum+=s[i]-'0';
    return sum;
}

int main(void)
{
    char s[100];
    printf("Enter stroky:\n");
    gets(s);
    printf("%d",summa(s));
    return 0;
}

0

62

Скоробогатов написал(а):

Во-вторых, Вы забыли заключить 9 в одинарные кавычки :-)

:P Точно) Че-т никто не заметил...  :rolleyes:

0

63

Kit написал(а):
Скоробогатов написал(а):

Во-вторых, Вы забыли заключить 9 в одинарные кавычки :-)

Точно) Че-т никто не заметил...

Таааак....лох-это судьба.... :lol:

Отредактировано Кузя (2007-01-08 15:41:07)

0

64

Последний вопрос-со строками беда...
Задача 31.
// 31.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

int opr(char s[100])
{
int i,klv=0,len=strlen(s),p=0,z=0;
for(i=0;i<len;i++)
{
    if(s[i]!=' ' && s[i]!='\0')
    {
    p++;
    if(s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u' || s[i]=='y')
    {
        z++;
    }
    }
    else
    if(s[i]==' ' || s[i]=='\0')
    {
        if(p==z)
        {
        klv++;
        }
        p=0;
        z=0;
    }
}
return klv;
}

int main(void)
{
char s[100];
printf("Enter str:\n");
gets(s);
printf("koli4estvo slov: ");
printf("%d",opr(s));
return 0;
}

Не знаю,может у меня уже в логике нестыковки какие-то,а не в коде...
Она у меня благополучно считает пробелы!!!замечательно считает-тока не пойму почему именно их! :O

0

65

Кузя, у Вас опять две ошибки.
Во-первых, если Вы в теле цикла хотите "ловить" признак окончания строки (символ '\0'),
то условие цикла должно выглядеть как i <= len, потому что символ '\0' находится как раз в s[len].
Во-вторых, слово, состоящее из нуля букв, нельзя считать состоящим из одних гласных :-)

Вот исправленный вариант (исправления выделены красным цветом):

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

int opr(char s[100])
{
    int i,klv=0,len=strlen(s),p=0,z=0;
    for(i=0;i<=len;i++)
    {
        if(s[i]!=' ' && s[i]!='\0')
        {
            p++;
            if(s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u' || s[i]=='y')
            {
                z++;
            }
        }
        else
            if(s[i]==' ' || s[i]=='\0')
            {
                if(p==z && p!=0)
                {
                    klv++;
                }
                p=0;
                z=0;
            }
    }
    return klv;
}

int main(void)
{
    char s[100];
    printf("Enter str:\n");
    gets(s);
    printf("koli4estvo slov: ");
    printf("%d",opr(s));
    return 0;
}

0

66

Скоробогатов написал(а):

i <= len, потому что символ '\0' находится как раз в s[len].

акхм...че то я видимо с массивами путаю :(

Что то мне кажется к экзамену я совсем перестану соображать.. :(

Спасибо! :D

Отредактировано Кузя (2007-01-08 17:40:59)

0

67

Кузя написал(а):

акхм...че то я видимо с массивами путаю :(

Тут всё очень просто.

Не следует путать количество памяти, отведённое для хранения строки, и длину строки.
Например, если строка объявлена как
    char s[1000];
то это вовсе не значит, что длина строки составляет 1000 символов.
Длина строки определяется положением признака окончания строки. Поэтому если признак окончания строки размещён в элементе строки с номером 0, то говорят, что строка - пустая, то есть имеет нулевую длину и не содержит ни одного символа.

Допустим, наша строка s имеет длину N.
Это означает, что элементы строки с номерами от 0 до N-1 заняты собственно буквами, из которых строка состоит. Элемент с номером N содержит признак окончания строки (символ 0 или, в другой записи, '\0'). Ну, а элементы с номерами от N+1 до 999 не используются.

Если об этом помнить, то задачи со строками окажутся не сложнее, чем задачи с массивами.

0

68

Сергей Юрьевич,у меня есть n-ое количество вопросов:
наших лекций хватит для ответов на экзаменационные вопросы?
Сколько вопросов будет в билете?
Сколько времени можно будет готовиться?
Вы будете кого-нибудь валить? Если да, то кого? :))

0

69

Вы будете кого-нибудь валить? Если да, то кого? :))

:rofl:

Дополню: А переговариваться можно будет?

0

70

Жжете!!! :lol:  еще спросите, сколько  билетов подряд можно тянуть?

0

71

F1aSh написал(а):

Вы будете кого-нибудь валить? Если да, то кого? )
Дополню: А переговариваться можно будет?

еще вопросик: Какие подарки вы любите?    ;)

Отредактировано Marinka (2007-01-10 22:17:55)

0

72

:O  :O  :O

0

73

у меня есть n-ое количество вопросов:

Дааа... Информатика в действии  :D

0

74

У меня вопросик, почему компилятор ошыбок не выдает. а когда запускаешь вырубается и пишет что какая-то ошибка и что все данные могут быть стерты????

0

75

http://www.lib.ru/CTOTOR/

Здесь учебники по С/С++, особенно актуально "Андрей Богатырев. Руководство полного идиота по программированию (на языке Си)" :D

0

76

Marinka написал(а):

наших лекций хватит для ответов на экзаменационные вопросы?
Сколько вопросов будет в билете?
Сколько времени можно будет готовиться?
Вы будете кого-нибудь валить? Если да, то кого? :))

Вопрос о том, хватит или не хватит Ваших лекций для ответов на экзаменационные вопросы, можно прояснить одним из двух способов:
1. Взять конспекты с собой на экзамен и попытаться списать с них ответы. Если не получится, значит не хватит.
2. Подготовить ответы на вопросы заранее, используя конспекты лекций. Опять же, если это не получится, значит конспектов недостаточно, и надо воспользоваться дополнительной литературой.
Я рекомендую второй способ :-)

В билете будет два теоретических вопроса и одна задача.
На подготовку к экзамену (включая решение задачи) отводится один час.

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

F1aSh написал(а):

Дополню: А переговариваться можно будет?

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

Marinka написал(а):

еще вопросик: Какие подарки вы любите?    ;)

Отличные знания студентов.

eYe написал(а):

У меня вопросик, почему компилятор ошыбок не выдает. а когда запускаешь вырубается и пишет что какая-то ошибка и что все данные могут быть стерты????

Я думаю, что это Ваша программа "вырубается", а не компилятор.
Возможные причины: ошибки при работе с указателями, выход за границы массива.

0

77

Сергей Юрьевич, а как будет проходить экзамен? Все сразу к 9 утра приходят, или же вы всё-таки разделите нас на три подгруппы и каждой тогда к своему времени?

0

78

Помогите, плиз. :scenic: ... Уже не в первой задачке он требует ввести дополнительное число:

Дана квадратная матрица размера 5х5. Определить пренадлежит ли она к множеству матриц, у которых на все элементы , не пренадлежащие главной диагонали -нули.
#include "stdafx.h"
#include <stdio.h>
void f(int M[5][5])

{ int i,j,k=0;
   
   for (i=0; i<5 ; i++)
   for (j=0; j<5; j++)
   if ((M[i][j]==0) && (i!=j))
   k++;
   if (k==0)
   printf ("NEprinadlegit");
else
   printf ("prinadlegit");
}

int main(void)
{
int A[5][5],i,j;
for (i=0;i<5;i++)
    for(j=0;j<5;j++)
    scanf("%d ",&A[i][j]);
    f(A);

return 0;
}

и еще про факториал, только другим способом тож не получается:

#include "stdafx.h"
#include <stdio.h>

int f(int A[8],int *kol)
{
    int i,j;
    int f=1;
    (*kol)=0;
    for(i=0;i<8;i++)
    {
   if(A[i]>0)
   {
       for(j=1;j<=A[i]&&f<1000000;j++)
       {
       f*=j;
       }
   }
}
    for(i=0;i<8;i++)
{
        if(f<1000000)
            (*kol)++;
    }
return *kol;
}
int main(void)
{
    int mas[8],i,kol;
    printf("Enter massiv:\n");
    for(i=0;i<8;i++)
        scanf("%d",&mas[i]);
f(mas,&kol);
    printf("%d",kol);
    return 0;
}

Отредактировано Marinka (2007-01-11 13:17:47)

0

79

Сергей Юрьевич...
Как предпочтительней решать задачи? через функции или можно все в main напихать?
Зависит ли от стиля решения оценка?
Как вы будете оценивать задачи?

0

80

Сергей Юрьевич, поготите плиз!!Я не пойму почему (22задача) оно мне выводит масив ,но не тот! Мне кажется я что то с циклами напутала,но не могу понять что(((
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
void f( char S[100], int A[10])
{
int i,j,len;
len = strlen(S);
for(j=0;j<10;j++)
{

for(i=0;i<len;i++)
    if(S[i]=='i' || S[i]=='y' || S[i]=='o' || S[i]=='a' || S[i]=='e' || S[i]=='u')
    A[j]= i;
}
A[j]=0;

}

int main(void)
{
char S[100];
int A[10],j;
printf("enter stroky:\n");
    gets(S);
f(S,A);
for(j=0;j<10;j++)
printf("%d",A[j]);
return 0;
}

0


Вы здесь » Форум студентов МГУ Печати ФИТиМ ИТД » Архив » Информатика (Сессия. I семестр)