Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2014, 00:11   #1
C@rbon
Пользователь
 
Аватар для C@rbon
 
Регистрация: 14.10.2014
Сообщений: 40
Сообщение Вывод столбца (С)

Здравствуйте еще раз.
Есть текстовый файл с такой информацыей:
Maserati_Biturbo 1998 84 349000
Maserati_Coupe 2000 76 499000
Maserat_Ghibli 2004 100 1921000
Maserati_GranCabrio 2012 47 2490000
Maserati_Granturismo 2011 20 2000000
Maserati_Quattroporte_SQ4 2013 3 2978999

Надо что бы программа выводила только зазначеный столбец, например если ввести Col number: 1 программа выводит такой столбец:
Maserati_Biturbo
Maserati_Coupe
Maserat_Ghibli
Maserati_GranCabrio
Maserati_Granturismo
Maserati_Quattroporte_SQ4

Ну вот я попробывал, так через if не получилось

Код:
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>


int main()
{

	char name1[30];
	char name2[30];
	char name3[4];
	char name4[50];
	char col[15];
	FILE *file;

	printf("Col number =");
	scanf(col);

	if ((file = fopen("D:/tabulka.txt", "r")) == NULL)
		printf("Cant open\n");
	else{
		for (;;)
		{
			if (feof(file))
				break;
			fscanf(file, "%s %s %s %s", name1, name2, name3, name4);
			
			if (col == "1")
			{
				printf("%s\n", name1);
			}
			else if (col == "2")
			{
				printf("%s\n", name2);
			}
			else if (col == "3")
			{
				printf("%s\n", name3);
			}
			else if (col == "4")
			{
				printf("%s\n", name4);
			}
			else break;
		}
	}
	fclose(file);
	return 0;

}
Знаю что код не правильный, я только новичек так что помогите пожалуйста.
C@rbon вне форума Ответить с цитированием
Старый 19.10.2014, 10:46   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

о, делаешь успехи! что выводится дай посмотреть.
Код:
// подпилю чуток... вслепую.

int main()
{

	char name1[30], name2[30], name3[4], name4[50];
	char* names[4] = {name1, name2, name3, name4};
	unsigned int col = 0;
	FILE* file;

 do
 {
	  printf("Enter the Column number = ");
	  scanf("%d", &col);
	  if (!col) return 0;
 } while (col > 4);
 
 file = fopen("D:\\tabulka.txt", "r");
 
	if (!file)
	{
		 printf("Cant open\n");
		 return 0;
	}
	
	while (!feof(file))
	{
	  fscanf(file, "%s %s %s %s", name1, name2, name3, name4);
   printf("%s\n", names[col - 1]);
	}

	fclose(file);
	return 1;
}
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 19.10.2014 в 11:24.
min@y™ вне форума Ответить с цитированием
Старый 19.10.2014, 12:05   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

по форматированному вводу есть хороший пример в хэлпе от билдера:
Код:
#include <stdio.h>

int main(void)
{
   char label[20];
   char name[20];
   int entries = 0;
   int loop, age;
   double salary;

   struct Entry_struct
   {
      char  name[20];
      int   age;
      float salary;
   } entry[20];

/* Input a label as a string of characters restricting to 20 characters */
   printf("\n\nPlease enter a label for the chart: ");
   scanf("%20s", label);
   fflush(stdin);  /* flush the input stream in case of bad input */

/* Input number of entries as an integer */
  printf("How many entries will there be? (less than 20) ");
  scanf("%d", &entries);
  fflush(stdin);   /* flush the input stream in case of bad input */

/* input a name restricting input to only letters upper or lower case */
   for (loop=0;loop<entries;++loop)
   {
      printf("Entry %d\n", loop);
      printf("  Name   : ");
      scanf("%[A-Za-z]", entry[loop].name);
      fflush(stdin);  /* flush the input stream in case of bad input */

/* input an age as an integer */
      printf("  Age    : ");
      scanf("%d", &entry[loop].age);
      fflush(stdin);  /* flush the input stream in case of bad input */

/* input a salary as a float */
      printf("  Salary : ");
      scanf("%f", &entry[loop].salary);
      fflush(stdin); /* flush the input stream in case of bad input */
   }

/* Input a name, age and salary as a string, integer, and double */
   printf("\nPlease enter your name, age and salary\n");

   scanf("%20s %d %lf", name, &age, &salary);


/* Print out the data that was input */
   printf("\n\nTable %s\n",label);
   printf("Compiled by %s  age %d  $%15.2lf\n", name, age, salary);
   printf("-----------------------------------------------------\n");
   for (loop=0;loop<entries;++loop)
      printf("%4d | %-20s | %5d | %15.2lf\n",
         loop + 1,
         entry[loop].name,
         entry[loop].age,
         entry[loop].salary);
   printf("-----------------------------------------------------\n");

   return 0;
}
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.10.2014, 15:51   #4
C@rbon
Пользователь
 
Аватар для C@rbon
 
Регистрация: 14.10.2014
Сообщений: 40
По умолчанию

О, большое спасибо. У меня компилятор сразу пропускал if и сразу заканчивал. А можно еще вопрос, можно сделать что бы вывод столбца зависил не толбко от одного номера а от целой строки "select row 4", "select row 2" и так дале?
Я так понял что просто через if ето не сделать.
C@rbon вне форума Ответить с цитированием
Старый 19.10.2014, 16:01   #5
C@rbon
Пользователь
 
Аватар для C@rbon
 
Регистрация: 14.10.2014
Сообщений: 40
По умолчанию

Я подумал, что можно сделать две переменные сначала:
Код:
scanf("%s %d",enter, &col);
и потом проверять если enter == "select row" тогда проверить col и вывести столбец.
C@rbon вне форума Ответить с цитированием
Старый 19.10.2014, 16:02   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
А можно еще вопрос, можно сделать что бы вывод столбца зависил не толбко от одного номера а от целой строки "select row 4", "select row 2" и так дале?
да наворотить можно ваще чо хошь. оно тебе зачем?
и вообще, какое практическое применение будет иметь полученная прога? это лаба? списал-показал-сдал-забыл?
Цитата:
если enter == "select row" тогда
это не паскаль.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.10.2014, 16:09   #7
C@rbon
Пользователь
 
Аватар для C@rbon
 
Регистрация: 14.10.2014
Сообщений: 40
По умолчанию

Ну да, ето лаба, и там потом не только столбцы надо будет выводить но и строки ну и т д.
А как потом сделать проверку вводимой строки?
C@rbon вне форума Ответить с цитированием
Старый 19.10.2014, 16:21   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Ну да, ето лаба
предмет какой?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.10.2014, 16:23   #9
C@rbon
Пользователь
 
Аватар для C@rbon
 
Регистрация: 14.10.2014
Сообщений: 40
По умолчанию

Введение в программирование.
C@rbon вне форума Ответить с цитированием
Старый 19.10.2014, 16:29   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от C@rbon Посмотреть сообщение
Введение в программирование.
сдай и забудь.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод столбца БД в ListBox Nekala БД в Delphi 3 17.10.2014 15:12
Вывод столбца из таблицы в ListBox хомякec БД в Delphi 7 03.05.2011 19:16
Вывод строки и столбца в массиве westlinex Паскаль, Turbo Pascal, PascalABC.NET 0 06.02.2011 15:47
Вывод данных из Мускул в 2 столбца? Андрей79 SQL, базы данных 0 22.02.2009 12:47