celé číslo p (1 ≤ p ≤ 20) predstavujúce počet písmen (nukleotidov), ktoré sa vypíšu na
riadok. Potom program otvorí súbor a vypíše celý fragment DNA na obrazovku tak, že na
riadok vypíše p písmen. Napr. pre sekvenciu AACGTGCC a p = 3 by bol výstup nasledovný:
AAC
GTG
CC
V prípade ak sa súbor nepodarí otvoriť, vypíše správu Neotvoreny subor nasledovanú
znakom konca riadku. V prípade zadania hodnoty p z mimo určeného intervalu, vypíše
program správu Nespravny pocet nukleotidov na riadok nasledovanú znakom
konca riadku.
poradíte, ako to opraviť tak, aby tie znaky vypísalo? chybná časť je funkcia V_sekvencia
tu je môj zdroják
Kód: Vybrat vše
#include <stdio.h>
#include <ctype.h>
#define n ('Z' - 'A' + 1)
char volba;
int V_sekvencia(){
int i,p;
char c;
FILE *fr;
if ((fr = fopen("DNAsekvencia.dat", "r")) == NULL){
printf("Neotvoreny subor");
scanf("%d\n", &p);
if ((p <= 1) || (p >= 20))
{
printf("Nespravny pocet nukleotidov na riadok");
}
while (c = getc(fr) != EOF)
{
for (i = 0; i < p; i++)
{
printf("%c", getc(fr));
}
printf("\n");
}
}
return getc(fr);
}
int H_sekvencia(){
int c, i, hist[n];
FILE *fr;
if((fr = fopen("DNAsekvencia.dat", "r")) == NULL)
{
printf("Neotvoreny subor.\n");
return 0;
}
for (i=0; i<n; i++)
hist[i] = 0;
while ((c = toupper(getc(fr))) != EOF)
{
if(c >= 'A' && c <= 'Z')
hist[c - 'A']++;
}
for (i = 0; i < n; i++)
{
if (hist[i] != 0)
printf("%c: %d\n", 'A' + i, hist[i]);
}
if (fclose(fr) == EOF)
{
printf("Subor DNAsekvencia.dat sa nepodarilo zatvorit.\n");
return 1;
}
return 0;
}
int main(){
char pole[1000];
char volba;
int i,p;
for (i = 0; i < 1000; i++)
{
pole[i] = '0';
}
scanf("%c", &volba);
while (volba != 'K')
{
if (volba == 'V' || volba =='v')
{
scanf("%d", &p);
V_sekvencia();
}
if (volba == 'H' || volba == 'h')
{
H_sekvencia();
}
if (volba == 'N' || volba == 'n')
{
V_sekvencia();
}
if (volba == 'P' || volba == 'p')
{
V_sekvencia();
}
if (volba == 'C' || volba == 'c')
{
V_sekvencia();
}
if (volba == 'D' || volba == 'd')
{
V_sekvencia();
}
scanf("%c", &volba);
}
return 0;
}
súbor DNAsekvencia.dat:
Kód: Vybrat vše
aCgAGAtCTCaTgcACGGGGtTCaTGCtgc