Автор Тема: Задача на С свързана с низове  (Прочетена 934 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

edrenchev

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 35
Задача на С свързана с низове
« -: 03 Ноември 2011, 12:01:49 »
Здравейте. От 2, 3 седмици уча С и сега срещнах проблем. Задачата е да се въведе някъв текст и да се определят броя на символите на текста и броя на новите редове. Ето аз какво измислих ама не се получава.

Код: C
  1. /*
  2.  * File:   main.c
  3.  * Author: edrenchev
  4.  *
  5.  * Created on Сряда, 2011, Ноември 2, 8:18
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <conio.h>
  12.  
  13. /*
  14.  *
  15.  */
  16. int main(int argc, char** argv) {
  17.    
  18.     int i, sum=0, num, enter=0;
  19.     char text[120];
  20.     printf("Vavedete tekst i za krai Ctrl+Z\n");
  21.     gets(text);
  22.    
  23.     for( ; ; ) {
  24.         num=strlen(text);
  25.         sum+=num;
  26.         for(i=0; i<120; i++) {
  27.             if(text[i]=='\n') enter+=enter;
  28.             if(text[i]==EOF) break;
  29.         }
  30.         if(text[i]==EOF) break;
  31.         gets(text);
  32.     }
  33.     printf("Broq na simvolite e: %d\n", sum);
  34.     printf("Broq na redovete e: %d\n", enter);
  35.    
  36.     system("PAUSE");
  37.     return (EXIT_SUCCESS);
  38. }
  39.  
  40.  
« Последна редакция: 03 Ноември 2011, 12:40:04 от metost »

Drakonov

  • Гост
Re: Задача на С свързана с низове
« Отговор #1 -: 03 Ноември 2011, 13:13:20 »
Нещо цялата логика на програмата ти ми се вижда сбъркана!
//Случайно да си ФТК 1курс ?

edrenchev

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 35
Re: Задача на С свързана с низове
« Отговор #2 -: 03 Ноември 2011, 13:30:14 »
Ахм :). Днеска ще вземем работа с низове и дано да ми стане ясно

Drakonov

  • Гост
Re: Задача на С свързана с низове
« Отговор #3 -: 03 Ноември 2011, 16:44:36 »
нещо ги прескочихме  ;D
а аз бих броил знаците и редовете така:
Код: C
  1.         char text[120] = "niakakav \n tekst \n\n\n alabala";
  2.         int sym = 0, nline = 0, i = 0;
  3.  
  4.         for (i = 0; text[i] != '\0'; i++) {
  5.                 if ((text[i] >= 33) && (text[i] <= 126)) {
  6.                         sym++;
  7.                 } else {
  8.                         if (text[i] == '\n') {
  9.                                 nline++;
  10.                         }
  11.                 }
  12.         }
  13.  
  14.         printf("\nBroi simvoli: %d", sym);
  15.         printf("\nBroi novi redove: %d", nline);
  16.         printf("\nDaljina na niza: %lu",strlen(text));

но тъй като използваш gets(), редовете може да ги броиш като ++броя на извикванията на gets(), а знаците както аз (всичко зависи от дефинициятя ти за знак/символ)

//бтв ние сме в един поток :)